git-object-browser 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. data/.gitignore +17 -0
  2. data/.rspec +2 -0
  3. data/Gemfile +13 -0
  4. data/Guardfile +11 -0
  5. data/LICENSE +22 -0
  6. data/README.md +18 -0
  7. data/Rakefile +2 -0
  8. data/bin/git-object-browser +5 -0
  9. data/git-object-browser.gemspec +18 -0
  10. data/htdocs/css/angular-ui.min.css +1 -0
  11. data/htdocs/css/bootstrap-responsive.css +1058 -0
  12. data/htdocs/css/bootstrap-responsive.min.css +9 -0
  13. data/htdocs/css/bootstrap.css +5389 -0
  14. data/htdocs/css/bootstrap.min.css +699 -0
  15. data/htdocs/css/font-awesome-ie7.css +645 -0
  16. data/htdocs/css/font-awesome.css +303 -0
  17. data/htdocs/css/main.css +22 -0
  18. data/htdocs/font/fontawesome-webfont.eot +0 -0
  19. data/htdocs/font/fontawesome-webfont.svg +255 -0
  20. data/htdocs/font/fontawesome-webfont.ttf +0 -0
  21. data/htdocs/font/fontawesome-webfont.woff +0 -0
  22. data/htdocs/img/glyphicons-halflings-white.png +0 -0
  23. data/htdocs/img/glyphicons-halflings.png +0 -0
  24. data/htdocs/index.html +114 -0
  25. data/htdocs/js/main.js +286 -0
  26. data/htdocs/js/vendor/angular-bootstrap-prettify.min.js +41 -0
  27. data/htdocs/js/vendor/angular-bootstrap.min.js +9 -0
  28. data/htdocs/js/vendor/angular-cookies.min.js +7 -0
  29. data/htdocs/js/vendor/angular-loader.min.js +7 -0
  30. data/htdocs/js/vendor/angular-resource.min.js +10 -0
  31. data/htdocs/js/vendor/angular-sanitize.min.js +13 -0
  32. data/htdocs/js/vendor/angular-ui-ieshiv.min.js +7 -0
  33. data/htdocs/js/vendor/angular-ui.min.js +7 -0
  34. data/htdocs/js/vendor/angular.js +14401 -0
  35. data/htdocs/js/vendor/angular.min.js +158 -0
  36. data/htdocs/js/vendor/bootstrap.js +2027 -0
  37. data/htdocs/js/vendor/bootstrap.min.js +6 -0
  38. data/htdocs/js/vendor/html5shiv.js +5 -0
  39. data/htdocs/js/vendor/jquery-1.8.2.min.js +2 -0
  40. data/htdocs/templates/directory.html +25 -0
  41. data/htdocs/templates/file.html +6 -0
  42. data/htdocs/templates/git.html +1 -0
  43. data/htdocs/templates/index.html +44 -0
  44. data/htdocs/templates/index_entry.html +54 -0
  45. data/htdocs/templates/info_refs.html +27 -0
  46. data/htdocs/templates/loading.html +1 -0
  47. data/htdocs/templates/notfound.html +7 -0
  48. data/htdocs/templates/object.html +54 -0
  49. data/htdocs/templates/objects.html +16 -0
  50. data/htdocs/templates/pack_file.html +15 -0
  51. data/htdocs/templates/pack_index.html +38 -0
  52. data/htdocs/templates/packed_object.html +111 -0
  53. data/htdocs/templates/packed_refs.html +27 -0
  54. data/htdocs/templates/ref.html +12 -0
  55. data/lib/git-object-browser.rb +37 -0
  56. data/lib/git-object-browser/dumper.rb +62 -0
  57. data/lib/git-object-browser/index_dumper.rb +77 -0
  58. data/lib/git-object-browser/main.rb +63 -0
  59. data/lib/git-object-browser/models/bindata.rb +68 -0
  60. data/lib/git-object-browser/models/directory.rb +61 -0
  61. data/lib/git-object-browser/models/git_object.rb +127 -0
  62. data/lib/git-object-browser/models/index.rb +77 -0
  63. data/lib/git-object-browser/models/index_entry.rb +95 -0
  64. data/lib/git-object-browser/models/index_reuc_extension.rb +31 -0
  65. data/lib/git-object-browser/models/index_tree_extension.rb +52 -0
  66. data/lib/git-object-browser/models/info_refs.rb +32 -0
  67. data/lib/git-object-browser/models/pack_file.rb +40 -0
  68. data/lib/git-object-browser/models/pack_index.rb +146 -0
  69. data/lib/git-object-browser/models/packed_object.rb +239 -0
  70. data/lib/git-object-browser/models/packed_refs.rb +39 -0
  71. data/lib/git-object-browser/models/plain_file.rb +24 -0
  72. data/lib/git-object-browser/models/ref.rb +32 -0
  73. data/lib/git-object-browser/object_dumper.rb +31 -0
  74. data/lib/git-object-browser/server/git_servlet.rb +209 -0
  75. data/lib/git-object-browser/server/main.rb +31 -0
  76. data/lib/git-object-browser/version.rb +3 -0
  77. data/spec/fixtures/generate_worktree.sh +103 -0
  78. data/spec/fixtures/git/indexes/001 +0 -0
  79. data/spec/fixtures/git/indexes/002-empty-tree-extension +0 -0
  80. data/spec/fixtures/git/plain_file +1 -0
  81. data/spec/fixtures/json/blob.json +9 -0
  82. data/spec/fixtures/json/merge-a.json +48 -0
  83. data/spec/fixtures/json/test3-tag.json +36 -0
  84. data/spec/fixtures/json/tree.json +20 -0
  85. data/spec/fixtures/worktree/_git/COMMIT_EDITMSG +1 -0
  86. data/spec/fixtures/worktree/_git/HEAD +1 -0
  87. data/spec/fixtures/worktree/_git/ORIG_HEAD +1 -0
  88. data/spec/fixtures/worktree/_git/config +11 -0
  89. data/spec/fixtures/worktree/_git/description +1 -0
  90. data/spec/fixtures/worktree/_git/hooks/applypatch-msg.sample +15 -0
  91. data/spec/fixtures/worktree/_git/hooks/commit-msg.sample +24 -0
  92. data/spec/fixtures/worktree/_git/hooks/post-update.sample +8 -0
  93. data/spec/fixtures/worktree/_git/hooks/pre-applypatch.sample +14 -0
  94. data/spec/fixtures/worktree/_git/hooks/pre-commit.sample +50 -0
  95. data/spec/fixtures/worktree/_git/hooks/pre-rebase.sample +169 -0
  96. data/spec/fixtures/worktree/_git/hooks/prepare-commit-msg.sample +36 -0
  97. data/spec/fixtures/worktree/_git/hooks/update.sample +128 -0
  98. data/spec/fixtures/worktree/_git/ignore +3 -0
  99. data/spec/fixtures/worktree/_git/index +0 -0
  100. data/spec/fixtures/worktree/_git/info/exclude +6 -0
  101. data/spec/fixtures/worktree/_git/info/refs +1 -0
  102. data/spec/fixtures/worktree/_git/logs/HEAD +10 -0
  103. data/spec/fixtures/worktree/_git/logs/refs/heads/branch-a +3 -0
  104. data/spec/fixtures/worktree/_git/logs/refs/heads/branch-b +2 -0
  105. data/spec/fixtures/worktree/_git/logs/refs/heads/master +4 -0
  106. data/spec/fixtures/worktree/_git/objects/00/cb8bfeb5b8ce906d39698e4e33b38341f5448f +1 -0
  107. data/spec/fixtures/worktree/_git/objects/07/31f9d4b6fa0475872be6a8ca263096f1d201cf +2 -0
  108. data/spec/fixtures/worktree/_git/objects/1d/3dc60b5a117054e43741d51e599ff31bb15f9f +0 -0
  109. data/spec/fixtures/worktree/_git/objects/26/4e42b1fef5bcb55acec162fdd5a068d79ae551 +0 -0
  110. data/spec/fixtures/worktree/_git/objects/28/3c06ddf1b31c14bb221d41173299e133b7753d +0 -0
  111. data/spec/fixtures/worktree/_git/objects/37/d1632d3f1159dad9cfb58e6c34312ab4355c49 +0 -0
  112. data/spec/fixtures/worktree/_git/objects/3a/2bf444f105c19b13ba5e75e884e10715e95a91 +0 -0
  113. data/spec/fixtures/worktree/_git/objects/40/a061aaf0cd0555449671a11993e4fed11f91a4 +2 -0
  114. data/spec/fixtures/worktree/_git/objects/53/2a1874c26cd19bd4d66e03218ab73e63de4357 +3 -0
  115. data/spec/fixtures/worktree/_git/objects/5b/719b165fde1964fb5a08adaf3b6e4f57ca1ff5 +0 -0
  116. data/spec/fixtures/worktree/_git/objects/61/cae34206bb889bae43ffdd22c17217485178bf +0 -0
  117. data/spec/fixtures/worktree/_git/objects/6c/444ac15f1e3c2a6869bd36ca7e58c39512106f +2 -0
  118. data/spec/fixtures/worktree/_git/objects/93/b714995d24c52180195876058a49c7d7fea0ad +0 -0
  119. data/spec/fixtures/worktree/_git/objects/96/25401ac3e19ef10868c140a76b719ac3f08fcf +0 -0
  120. data/spec/fixtures/worktree/_git/objects/b9/29ed2ab14f7489d5238a06d10d2f2c229a4ab4 +0 -0
  121. data/spec/fixtures/worktree/_git/objects/be/e0d26d33c284ee065e38bd7e81ae4bdc870f89 +4 -0
  122. data/spec/fixtures/worktree/_git/objects/c3/6491256978d26c08cd7aa97eee0f5631f96659 +0 -0
  123. data/spec/fixtures/worktree/_git/objects/d2/34c5e057fe32c676ea67e8cb38f4625ddaeb54 +0 -0
  124. data/spec/fixtures/worktree/_git/objects/df/6b0d2bcc76e6ec0fca20c227104a4f28bac41b +0 -0
  125. data/spec/fixtures/worktree/_git/objects/e5/b6d4317cefa946d77fc91539f1f1e48b60836f +0 -0
  126. data/spec/fixtures/worktree/_git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
  127. data/spec/fixtures/worktree/_git/objects/info/packs +2 -0
  128. data/spec/fixtures/worktree/_git/objects/pack/pack-f1c1717e9264c12310c7bd3e7dcdd28924000ff6.idx +0 -0
  129. data/spec/fixtures/worktree/_git/objects/pack/pack-f1c1717e9264c12310c7bd3e7dcdd28924000ff6.pack +0 -0
  130. data/spec/fixtures/worktree/_git/packed-refs +2 -0
  131. data/spec/fixtures/worktree/_git/refs/heads/branch-a +1 -0
  132. data/spec/fixtures/worktree/_git/refs/heads/branch-b +1 -0
  133. data/spec/fixtures/worktree/_git/refs/heads/master +1 -0
  134. data/spec/fixtures/worktree/_git/refs/tags/simple-tag +1 -0
  135. data/spec/fixtures/worktree/_git/refs/tags/test3-tag +1 -0
  136. data/spec/fixtures/worktree/sample-a.txt +1 -0
  137. data/spec/fixtures/worktree/sample.txt +1 -0
  138. data/spec/fixtures/worktree/subdir/sample-sub.txt +0 -0
  139. data/spec/git-object-browser/main_spec.rb +31 -0
  140. data/spec/git-object-browser/models/bindata_spec.rb +144 -0
  141. data/spec/git-object-browser/models/git_object_spec.rb +49 -0
  142. data/spec/git-object-browser/models/index_spec.rb +42 -0
  143. data/spec/git-object-browser/models/index_tree_extension_spec.rb +58 -0
  144. data/spec/git-object-browser/models/plain_file_spec.rb +11 -0
  145. data/spec/spec_helper.rb +19 -0
  146. metadata +260 -0
@@ -0,0 +1,158 @@
1
+ /*
2
+ AngularJS v1.0.2
3
+ (c) 2010-2012 Google, Inc. http://angularjs.org
4
+ License: MIT
5
+ */
6
+ (function(T,ba,p){'use strict';function m(b,a,c){var d;if(b)if(M(b))for(d in b)d!="prototype"&&d!="length"&&d!="name"&&b.hasOwnProperty(d)&&a.call(c,b[d],d);else if(b.forEach&&b.forEach!==m)b.forEach(a,c);else if(I(b)&&wa(b.length))for(d=0;d<b.length;d++)a.call(c,b[d],d);else for(d in b)b.hasOwnProperty(d)&&a.call(c,b[d],d);return b}function mb(b){var a=[],c;for(c in b)b.hasOwnProperty(c)&&a.push(c);return a.sort()}function fc(b,a,c){for(var d=mb(b),e=0;e<d.length;e++)a.call(c,b[d[e]],d[e]);return d}
7
+ function nb(b){return function(a,c){b(c,a)}}function xa(){for(var b=Z.length,a;b;){b--;a=Z[b].charCodeAt(0);if(a==57)return Z[b]="A",Z.join("");if(a==90)Z[b]="0";else return Z[b]=String.fromCharCode(a+1),Z.join("")}Z.unshift("0");return Z.join("")}function x(b){m(arguments,function(a){a!==b&&m(a,function(a,d){b[d]=a})});return b}function G(b){return parseInt(b,10)}function ya(b,a){return x(new (x(function(){},{prototype:b})),a)}function D(){}function ma(b){return b}function J(b){return function(){return b}}
8
+ function t(b){return typeof b=="undefined"}function u(b){return typeof b!="undefined"}function I(b){return b!=null&&typeof b=="object"}function F(b){return typeof b=="string"}function wa(b){return typeof b=="number"}function na(b){return Ta.apply(b)=="[object Date]"}function K(b){return Ta.apply(b)=="[object Array]"}function M(b){return typeof b=="function"}function oa(b){return b&&b.document&&b.location&&b.alert&&b.setInterval}function Q(b){return F(b)?b.replace(/^\s*/,"").replace(/\s*$/,""):b}function gc(b){return b&&
9
+ (b.nodeName||b.bind&&b.find)}function Ua(b,a,c){var d=[];m(b,function(b,g,i){d.push(a.call(c,b,g,i))});return d}function hc(b,a){var c=0,d;if(K(b)||F(b))return b.length;else if(I(b))for(d in b)(!a||b.hasOwnProperty(d))&&c++;return c}function Va(b,a){if(b.indexOf)return b.indexOf(a);for(var c=0;c<b.length;c++)if(a===b[c])return c;return-1}function za(b,a){var c=Va(b,a);c>=0&&b.splice(c,1);return a}function U(b,a){if(oa(b)||b&&b.$evalAsync&&b.$watch)throw A("Can't copy Window or Scope");if(a){if(b===
10
+ a)throw A("Can't copy equivalent objects or arrays");if(K(b)){for(;a.length;)a.pop();for(var c=0;c<b.length;c++)a.push(U(b[c]))}else for(c in m(a,function(b,c){delete a[c]}),b)a[c]=U(b[c])}else(a=b)&&(K(b)?a=U(b,[]):na(b)?a=new Date(b.getTime()):I(b)&&(a=U(b,{})));return a}function ic(b,a){var a=a||{},c;for(c in b)b.hasOwnProperty(c)&&c.substr(0,2)!=="$$"&&(a[c]=b[c]);return a}function ga(b,a){if(b===a)return!0;if(b===null||a===null)return!1;if(b!==b&&a!==a)return!0;var c=typeof b,d;if(c==typeof a&&
11
+ c=="object")if(K(b)){if((c=b.length)==a.length){for(d=0;d<c;d++)if(!ga(b[d],a[d]))return!1;return!0}}else if(na(b))return na(a)&&b.getTime()==a.getTime();else{if(b&&b.$evalAsync&&b.$watch||a&&a.$evalAsync&&a.$watch||oa(b)||oa(a))return!1;c={};for(d in b){if(d.charAt(0)!=="$"&&!M(b[d])&&!ga(b[d],a[d]))return!1;c[d]=!0}for(d in a)if(!c[d]&&d.charAt(0)!=="$"&&!M(a[d]))return!1;return!0}return!1}function Wa(b,a){var c=arguments.length>2?ha.call(arguments,2):[];return M(a)&&!(a instanceof RegExp)?c.length?
12
+ function(){return arguments.length?a.apply(b,c.concat(ha.call(arguments,0))):a.apply(b,c)}:function(){return arguments.length?a.apply(b,arguments):a.call(b)}:a}function jc(b,a){var c=a;/^\$+/.test(b)?c=p:oa(a)?c="$WINDOW":a&&ba===a?c="$DOCUMENT":a&&a.$evalAsync&&a.$watch&&(c="$SCOPE");return c}function ca(b,a){return JSON.stringify(b,jc,a?" ":null)}function ob(b){return F(b)?JSON.parse(b):b}function Xa(b){b&&b.length!==0?(b=E(""+b),b=!(b=="f"||b=="0"||b=="false"||b=="no"||b=="n"||b=="[]")):b=!1;
13
+ return b}function pa(b){b=y(b).clone();try{b.html("")}catch(a){}return y("<div>").append(b).html().match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+E(b)})}function Ya(b){var a={},c,d;m((b||"").split("&"),function(b){b&&(c=b.split("="),d=decodeURIComponent(c[0]),a[d]=u(c[1])?decodeURIComponent(c[1]):!0)});return a}function pb(b){var a=[];m(b,function(b,d){a.push(Za(d,!0)+(b===!0?"":"="+Za(b,!0)))});return a.length?a.join("&"):""}function $a(b){return Za(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,
14
+ "=").replace(/%2B/gi,"+")}function Za(b,a){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(a?null:/%20/g,"+")}function kc(b,a){function c(a){a&&d.push(a)}var d=[b],e,g,i=["ng:app","ng-app","x-ng-app","data-ng-app"],f=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;m(i,function(a){i[a]=!0;c(ba.getElementById(a));a=a.replace(":","\\:");b.querySelectorAll&&(m(b.querySelectorAll("."+a),c),m(b.querySelectorAll("."+a+"\\:"),c),m(b.querySelectorAll("["+
15
+ a+"]"),c))});m(d,function(a){if(!e){var b=f.exec(" "+a.className+" ");b?(e=a,g=(b[2]||"").replace(/\s+/g,",")):m(a.attributes,function(b){if(!e&&i[b.name])e=a,g=b.value})}});e&&a(e,g?[g]:[])}function qb(b,a){b=y(b);a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);a.unshift("ng");var c=rb(a);c.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,i){a.$apply(function(){b.data("$injector",i);c(b)(a)})}]);return c}function ab(b,a){a=a||"_";return b.replace(lc,
16
+ function(b,d){return(d?a:"")+b.toLowerCase()})}function qa(b,a,c){if(!b)throw new A("Argument '"+(a||"?")+"' is "+(c||"required"));return b}function ra(b,a,c){c&&K(b)&&(b=b[b.length-1]);qa(M(b),a,"not a function, got "+(b&&typeof b=="object"?b.constructor.name||"Object":typeof b));return b}function mc(b){function a(a,b,e){return a[b]||(a[b]=e())}return a(a(b,"angular",Object),"module",function(){var b={};return function(d,e,g){e&&b.hasOwnProperty(d)&&(b[d]=null);return a(b,d,function(){function a(c,
17
+ d,e){return function(){b[e||"push"]([c,d,arguments]);return j}}if(!e)throw A("No module: "+d);var b=[],c=[],k=a("$injector","invoke"),j={_invokeQueue:b,_runBlocks:c,requires:e,name:d,provider:a("$provide","provider"),factory:a("$provide","factory"),service:a("$provide","service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:k,run:function(a){c.push(a);
18
+ return this}};g&&k(g);return j})}})}function sb(b){return b.replace(nc,function(a,b,d,e){return e?d.toUpperCase():d}).replace(oc,"Moz$1")}function bb(b,a){function c(){var e;for(var b=[this],c=a,i,f,h,k,j,l,n;b.length;){i=b.shift();f=0;for(h=i.length;f<h;f++){k=y(i[f]);c?(n=(j=k.data("events"))&&j.$destroy)&&m(n,function(a){a.handler()}):c=!c;j=0;for(e=(l=k.children()).length,k=e;j<k;j++)b.push(ia(l[j]))}}return d.apply(this,arguments)}var d=ia.fn[b],d=d.$original||d;c.$original=d;ia.fn[b]=c}function P(b){if(b instanceof
19
+ P)return b;if(!(this instanceof P)){if(F(b)&&b.charAt(0)!="<")throw A("selectors not implemented");return new P(b)}if(F(b)){var a=ba.createElement("div");a.innerHTML="<div>&#160;</div>"+b;a.removeChild(a.firstChild);cb(this,a.childNodes);this.remove()}else cb(this,b)}function db(b){return b.cloneNode(!0)}function sa(b){tb(b);for(var a=0,b=b.childNodes||[];a<b.length;a++)sa(b[a])}function ub(b,a,c){var d=da(b,"events");da(b,"handle")&&(t(a)?m(d,function(a,c){eb(b,c,a);delete d[c]}):t(c)?(eb(b,a,d[a]),
20
+ delete d[a]):za(d[a],c))}function tb(b){var a=b[Aa],c=Ba[a];c&&(c.handle&&(c.events.$destroy&&c.handle({},"$destroy"),ub(b)),delete Ba[a],b[Aa]=p)}function da(b,a,c){var d=b[Aa],d=Ba[d||-1];if(u(c))d||(b[Aa]=d=++pc,d=Ba[d]={}),d[a]=c;else return d&&d[a]}function vb(b,a,c){var d=da(b,"data"),e=u(c),g=!e&&u(a),i=g&&!I(a);!d&&!i&&da(b,"data",d={});if(e)d[a]=c;else if(g)if(i)return d&&d[a];else x(d,a);else return d}function Ca(b,a){return(" "+b.className+" ").replace(/[\n\t]/g," ").indexOf(" "+a+" ")>
21
+ -1}function wb(b,a){a&&m(a.split(" "),function(a){b.className=Q((" "+b.className+" ").replace(/[\n\t]/g," ").replace(" "+Q(a)+" "," "))})}function xb(b,a){a&&m(a.split(" "),function(a){if(!Ca(b,a))b.className=Q(b.className+" "+Q(a))})}function cb(b,a){if(a)for(var a=!a.nodeName&&u(a.length)&&!oa(a)?a:[a],c=0;c<a.length;c++)b.push(a[c])}function yb(b,a){return Da(b,"$"+(a||"ngController")+"Controller")}function Da(b,a,c){b=y(b);for(b[0].nodeType==9&&(b=b.find("html"));b.length;){if(c=b.data(a))return c;
22
+ b=b.parent()}}function zb(b,a){var c=Ea[a.toLowerCase()];return c&&Ab[b.nodeName]&&c}function qc(b,a){var c=function(c,e){if(!c.preventDefault)c.preventDefault=function(){c.returnValue=!1};if(!c.stopPropagation)c.stopPropagation=function(){c.cancelBubble=!0};if(!c.target)c.target=c.srcElement||ba;if(t(c.defaultPrevented)){var g=c.preventDefault;c.preventDefault=function(){c.defaultPrevented=!0;g.call(c)};c.defaultPrevented=!1}c.isDefaultPrevented=function(){return c.defaultPrevented};m(a[e||c.type],
23
+ function(a){a.call(b,c)});$<=8?(c.preventDefault=null,c.stopPropagation=null,c.isDefaultPrevented=null):(delete c.preventDefault,delete c.stopPropagation,delete c.isDefaultPrevented)};c.elem=b;return c}function ja(b){var a=typeof b,c;if(a=="object"&&b!==null)if(typeof(c=b.$$hashKey)=="function")c=b.$$hashKey();else{if(c===p)c=b.$$hashKey=xa()}else c=b;return a+":"+c}function Fa(b){m(b,this.put,this)}function fb(){}function Bb(b){var a,c;if(typeof b=="function"){if(!(a=b.$inject))a=[],c=b.toString().replace(rc,
24
+ ""),c=c.match(sc),m(c[1].split(tc),function(b){b.replace(uc,function(b,c,d){a.push(d)})}),b.$inject=a}else K(b)?(c=b.length-1,ra(b[c],"fn"),a=b.slice(0,c)):ra(b,"fn",!0);return a}function rb(b){function a(a){return function(b,c){if(I(b))m(b,nb(a));else return a(b,c)}}function c(a,b){M(b)&&(b=l.instantiate(b));if(!b.$get)throw A("Provider "+a+" must define $get factory method.");return j[a+f]=b}function d(a,b){return c(a,{$get:b})}function e(a){var b=[];m(a,function(a){if(!k.get(a))if(k.put(a,!0),
25
+ F(a)){var c=ta(a);b=b.concat(e(c.requires)).concat(c._runBlocks);try{for(var d=c._invokeQueue,c=0,f=d.length;c<f;c++){var g=d[c],h=g[0]=="$injector"?l:l.get(g[0]);h[g[1]].apply(h,g[2])}}catch(i){throw i.message&&(i.message+=" from "+a),i;}}else if(M(a))try{b.push(l.invoke(a))}catch(o){throw o.message&&(o.message+=" from "+a),o;}else if(K(a))try{b.push(l.invoke(a))}catch(n){throw n.message&&(n.message+=" from "+String(a[a.length-1])),n;}else ra(a,"module")});return b}function g(a,b){function c(d){if(typeof d!==
26
+ "string")throw A("Service name expected");if(a.hasOwnProperty(d)){if(a[d]===i)throw A("Circular dependency: "+h.join(" <- "));return a[d]}else try{return h.unshift(d),a[d]=i,a[d]=b(d)}finally{h.shift()}}function d(a,b,e){var f=[],g=Bb(a),k,i,o;i=0;for(k=g.length;i<k;i++)o=g[i],f.push(e&&e.hasOwnProperty(o)?e[o]:c(o,h));a.$inject||(a=a[k]);switch(b?-1:f.length){case 0:return a();case 1:return a(f[0]);case 2:return a(f[0],f[1]);case 3:return a(f[0],f[1],f[2]);case 4:return a(f[0],f[1],f[2],f[3]);case 5:return a(f[0],
27
+ f[1],f[2],f[3],f[4]);case 6:return a(f[0],f[1],f[2],f[3],f[4],f[5]);case 7:return a(f[0],f[1],f[2],f[3],f[4],f[5],f[6]);case 8:return a(f[0],f[1],f[2],f[3],f[4],f[5],f[6],f[7]);case 9:return a(f[0],f[1],f[2],f[3],f[4],f[5],f[6],f[7],f[8]);case 10:return a(f[0],f[1],f[2],f[3],f[4],f[5],f[6],f[7],f[8],f[9]);default:return a.apply(b,f)}}return{invoke:d,instantiate:function(a,b){var c=function(){},e;c.prototype=(K(a)?a[a.length-1]:a).prototype;c=new c;e=d(a,c,b);return I(e)?e:c},get:c,annotate:Bb}}var i=
28
+ {},f="Provider",h=[],k=new Fa,j={$provide:{provider:a(c),factory:a(d),service:a(function(a,b){return d(a,["$injector",function(a){return a.instantiate(b)}])}),value:a(function(a,b){return d(a,J(b))}),constant:a(function(a,b){j[a]=b;n[a]=b}),decorator:function(a,b){var c=l.get(a+f),d=c.$get;c.$get=function(){var a=r.invoke(d,c);return r.invoke(b,null,{$delegate:a})}}}},l=g(j,function(){throw A("Unknown provider: "+h.join(" <- "));}),n={},r=n.$injector=g(n,function(a){a=l.get(a+f);return r.invoke(a.$get,
29
+ a)});m(e(b),function(a){r.invoke(a||D)});return r}function vc(){var b=!0;this.disableAutoScrolling=function(){b=!1};this.$get=["$window","$location","$rootScope",function(a,c,d){function e(a){var b=null;m(a,function(a){!b&&E(a.nodeName)==="a"&&(b=a)});return b}function g(){var b=c.hash(),d;b?(d=i.getElementById(b))?d.scrollIntoView():(d=e(i.getElementsByName(b)))?d.scrollIntoView():b==="top"&&a.scrollTo(0,0):a.scrollTo(0,0)}var i=a.document;b&&d.$watch(function(){return c.hash()},function(){d.$evalAsync(g)});
30
+ return g}]}function wc(b,a,c,d){function e(a){try{a.apply(null,ha.call(arguments,1))}finally{if(o--,o===0)for(;w.length;)try{w.pop()()}catch(b){c.error(b)}}}function g(a,b){(function ea(){m(q,function(a){a()});v=b(ea,a)})()}function i(){Y!=f.url()&&(Y=f.url(),m(z,function(a){a(f.url())}))}var f=this,h=a[0],k=b.location,j=b.history,l=b.setTimeout,n=b.clearTimeout,r={};f.isMock=!1;var o=0,w=[];f.$$completeOutstandingRequest=e;f.$$incOutstandingRequestCount=function(){o++};f.notifyWhenNoOutstandingRequests=
31
+ function(a){m(q,function(a){a()});o===0?a():w.push(a)};var q=[],v;f.addPollFn=function(a){t(v)&&g(100,l);q.push(a);return a};var Y=k.href,B=a.find("base");f.url=function(a,b){if(a){if(Y!=a)return Y=a,d.history?b?j.replaceState(null,"",a):(j.pushState(null,"",a),B.attr("href",B.attr("href"))):b?k.replace(a):k.href=a,f}else return k.href.replace(/%27/g,"'")};var z=[],L=!1;f.onUrlChange=function(a){L||(d.history&&y(b).bind("popstate",i),d.hashchange?y(b).bind("hashchange",i):f.addPollFn(i),L=!0);z.push(a);
32
+ return a};f.baseHref=function(){var a=B.attr("href");return a?a.replace(/^https?\:\/\/[^\/]*/,""):a};var V={},s="",N=f.baseHref();f.cookies=function(a,b){var d,e,f,g;if(a)if(b===p)h.cookie=escape(a)+"=;path="+N+";expires=Thu, 01 Jan 1970 00:00:00 GMT";else{if(F(b))d=(h.cookie=escape(a)+"="+escape(b)+";path="+N).length+1,d>4096&&c.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+d+" > 4096 bytes)!"),V.length>20&&c.warn("Cookie '"+a+"' possibly not set or overflowed because too many cookies were already set ("+
33
+ V.length+" > 20 )")}else{if(h.cookie!==s){s=h.cookie;d=s.split("; ");V={};for(f=0;f<d.length;f++)e=d[f],g=e.indexOf("="),g>0&&(V[unescape(e.substring(0,g))]=unescape(e.substring(g+1)))}return V}};f.defer=function(a,b){var c;o++;c=l(function(){delete r[c];e(a)},b||0);r[c]=!0;return c};f.defer.cancel=function(a){return r[a]?(delete r[a],n(a),e(D),!0):!1}}function xc(){this.$get=["$window","$log","$sniffer","$document",function(b,a,c,d){return new wc(b,d,a,c)}]}function yc(){this.$get=function(){function b(b,
34
+ d){function e(a){if(a!=l){if(n){if(n==a)n=a.n}else n=a;g(a.n,a.p);g(a,l);l=a;l.n=null}}function g(a,b){if(a!=b){if(a)a.p=b;if(b)b.n=a}}if(b in a)throw A("cacheId "+b+" taken");var i=0,f=x({},d,{id:b}),h={},k=d&&d.capacity||Number.MAX_VALUE,j={},l=null,n=null;return a[b]={put:function(a,b){var c=j[a]||(j[a]={key:a});e(c);t(b)||(a in h||i++,h[a]=b,i>k&&this.remove(n.key))},get:function(a){var b=j[a];if(b)return e(b),h[a]},remove:function(a){var b=j[a];if(b==l)l=b.p;if(b==n)n=b.n;g(b.n,b.p);delete j[a];
35
+ delete h[a];i--},removeAll:function(){h={};i=0;j={};l=n=null},destroy:function(){j=f=h=null;delete a[b]},info:function(){return x({},f,{size:i})}}}var a={};b.info=function(){var b={};m(a,function(a,e){b[e]=a.info()});return b};b.get=function(b){return a[b]};return b}}function zc(){this.$get=["$cacheFactory",function(b){return b("templates")}]}function Cb(b){var a={},c="Directive",d=/^\s*directive\:\s*([\d\w\-_]+)\s+(.*)$/,e=/(([\d\w\-_]+)(?:\:([^;]+))?;?)/,g="Template must have exactly one root element. was: ";
36
+ this.directive=function f(d,e){F(d)?(qa(e,"directive"),a.hasOwnProperty(d)||(a[d]=[],b.factory(d+c,["$injector","$exceptionHandler",function(b,c){var e=[];m(a[d],function(a){try{var f=b.invoke(a);if(M(f))f={compile:J(f)};else if(!f.compile&&f.link)f.compile=J(f.link);f.priority=f.priority||0;f.name=f.name||d;f.require=f.require||f.controller&&f.name;f.restrict=f.restrict||"A";e.push(f)}catch(g){c(g)}});return e}])),a[d].push(e)):m(d,nb(f));return this};this.$get=["$injector","$interpolate","$exceptionHandler",
37
+ "$http","$templateCache","$parse","$controller","$rootScope",function(b,h,k,j,l,n,r,o){function w(a,b,c){a instanceof y||(a=y(a));m(a,function(b,c){b.nodeType==3&&(a[c]=y(b).wrap("<span></span>").parent()[0])});var d=v(a,b,a,c);return function(b,c){qa(b,"scope");var e=c?ua.clone.call(a):a;e.data("$scope",b);q(e,"ng-scope");c&&c(e,b);d&&d(b,e,e);return e}}function q(a,b){try{a.addClass(b)}catch(c){}}function v(a,b,c,d){function e(a,c,d,g){for(var k,h,n,j,o,l=0,r=0,q=f.length;l<q;r++)n=c[r],k=f[l++],
38
+ h=f[l++],k?(k.scope?(j=a.$new(I(k.scope)),y(n).data("$scope",j)):j=a,(o=k.transclude)||!g&&b?k(h,j,n,d,function(b){return function(c){var d=a.$new();return b(d,c).bind("$destroy",Wa(d,d.$destroy))}}(o||b)):k(h,j,n,p,g)):h&&h(a,n.childNodes,p,g)}for(var f=[],g,k,h,n=0;n<a.length;n++)k=new ea,g=Y(a[n],[],k,d),k=(g=g.length?B(g,a[n],k,b,c):null)&&g.terminal?null:v(a[n].childNodes,g?g.transclude:b),f.push(g),f.push(k),h=h||g||k;return h?e:null}function Y(a,b,c,f){var g=c.$attr,k;switch(a.nodeType){case 1:z(b,
39
+ fa(Db(a).toLowerCase()),"E",f);var h,n,j;k=a.attributes;for(var o=0,l=k&&k.length;o<l;o++)if(h=k[o],h.specified)n=h.name,j=fa(n.toLowerCase()),g[j]=n,c[j]=h=Q($&&n=="href"?decodeURIComponent(a.getAttribute(n,2)):h.value),zb(a,j)&&(c[j]=!0),W(a,b,h,j),z(b,j,"A",f);a=a.className;if(F(a))for(;k=e.exec(a);)j=fa(k[2]),z(b,j,"C",f)&&(c[j]=Q(k[3])),a=a.substr(k.index+k[0].length);break;case 3:H(b,a.nodeValue);break;case 8:try{if(k=d.exec(a.nodeValue))j=fa(k[1]),z(b,j,"M",f)&&(c[j]=Q(k[2]))}catch(r){}}b.sort(s);
40
+ return b}function B(a,b,c,d,e){function f(a,b){if(a)a.require=C.require,l.push(a);if(b)b.require=C.require,aa.push(b)}function h(a,b){var c,d="data",e=!1;if(F(a)){for(;(c=a.charAt(0))=="^"||c=="?";)a=a.substr(1),c=="^"&&(d="inheritedData"),e=e||c=="?";c=b[d]("$"+a+"Controller");if(!c&&!e)throw A("No controller: "+a);}else K(a)&&(c=[],m(a,function(a){c.push(h(a,b))}));return c}function j(a,d,e,f,g){var o,q,w,L,Ha;o=b===e?c:ic(c,new ea(y(e),c.$attr));q=o.$$element;if(v&&I(v.scope)){var Y=/^\s*([@=&])\s*(\w*)\s*$/,
41
+ s=d.$parent||d;m(v.scope,function(a,b){var c=a.match(Y)||[],e=c[2]||b,f,g,k;switch(c[1]){case "@":o.$observe(e,function(a){d[b]=a});o.$$observers[e].$$scope=s;break;case "=":g=n(o[e]);k=g.assign||function(){f=d[b]=g(s);throw A(Eb+o[e]+" (directive: "+v.name+")");};f=d[b]=g(s);d.$watch(function(){var a=g(s);a!==d[b]&&(a!==f?f=d[b]=a:k(s,f=d[b]));return a});break;case "&":g=n(o[e]);d[b]=function(a){return g(s,a)};break;default:throw A("Invalid isolate scope definition for directive "+v.name+": "+a);
42
+ }})}u&&m(u,function(a){var b={$scope:d,$element:q,$attrs:o,$transclude:g};Ha=a.controller;Ha=="@"&&(Ha=o[a.name]);q.data("$"+a.name+"Controller",r(Ha,b))});f=0;for(w=l.length;f<w;f++)try{L=l[f],L(d,q,o,L.require&&h(L.require,q))}catch(Ia){k(Ia,pa(q))}a&&a(d,e.childNodes,p,g);f=0;for(w=aa.length;f<w;f++)try{L=aa[f],L(d,q,o,L.require&&h(L.require,q))}catch(B){k(B,pa(q))}}for(var o=-Number.MAX_VALUE,l=[],aa=[],v=null,B=null,z=null,s=c.$$element=y(b),C,H,W,D,t=d,u,x,X,E=0,G=a.length;E<G;E++){C=a[E];W=
43
+ p;if(o>C.priority)break;if(X=C.scope)N("isolated scope",B,C,s),I(X)&&(q(s,"ng-isolate-scope"),B=C),q(s,"ng-scope"),v=v||C;H=C.name;if(X=C.controller)u=u||{},N("'"+H+"' controller",u[H],C,s),u[H]=C;if(X=C.transclude)N("transclusion",D,C,s),D=C,o=C.priority,X=="element"?(W=y(b),s=c.$$element=y("<\!-- "+H+": "+c[H]+" --\>"),b=s[0],Ga(e,y(W[0]),b),t=w(W,d,o)):(W=y(db(b)).contents(),s.html(""),t=w(W,d));if(X=C.template)if(N("template",z,C,s),z=C,X=Ia(X),C.replace){W=y("<div>"+Q(X)+"</div>").contents();
44
+ b=W[0];if(W.length!=1||b.nodeType!==1)throw new A(g+X);Ga(e,s,b);H={$attr:{}};a=a.concat(Y(b,a.splice(E+1,a.length-(E+1)),H));L(c,H);G=a.length}else s.html(X);if(C.templateUrl)N("template",z,C,s),z=C,j=V(a.splice(E,a.length-E),j,s,c,e,C.replace,t),G=a.length;else if(C.compile)try{x=C.compile(s,c,t),M(x)?f(null,x):x&&f(x.pre,x.post)}catch(J){k(J,pa(s))}if(C.terminal)j.terminal=!0,o=Math.max(o,C.priority)}j.scope=v&&v.scope;j.transclude=D&&t;return j}function z(d,e,g,h){var j=!1;if(a.hasOwnProperty(e))for(var n,
45
+ e=b.get(e+c),o=0,l=e.length;o<l;o++)try{if(n=e[o],(h===p||h>n.priority)&&n.restrict.indexOf(g)!=-1)d.push(n),j=!0}catch(r){k(r)}return j}function L(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;m(a,function(d,e){e.charAt(0)!="$"&&(b[e]&&(d+=(e==="style"?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});m(b,function(b,f){f=="class"?(q(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):f=="style"?e.attr("style",e.attr("style")+";"+b):f.charAt(0)!="$"&&!a.hasOwnProperty(f)&&(a[f]=b,d[f]=c[f])})}function V(a,b,c,d,e,
46
+ f,k){var h=[],n,o,r=c[0],q=a.shift(),w=x({},q,{controller:null,templateUrl:null,transclude:null});c.html("");j.get(q.templateUrl,{cache:l}).success(function(j){var l,q,j=Ia(j);if(f){q=y("<div>"+Q(j)+"</div>").contents();l=q[0];if(q.length!=1||l.nodeType!==1)throw new A(g+j);j={$attr:{}};Ga(e,c,l);Y(l,a,j);L(d,j)}else l=r,c.html(j);a.unshift(w);n=B(a,c,d,k);for(o=v(c.contents(),k);h.length;){var aa=h.pop(),j=h.pop();q=h.pop();var s=h.pop(),m=l;q!==r&&(m=db(l),Ga(j,y(q),m));n(function(){b(o,s,m,e,aa)},
47
+ s,m,e,aa)}h=null}).error(function(a,b,c,d){throw A("Failed to load template: "+d.url);});return function(a,c,d,e,f){h?(h.push(c),h.push(d),h.push(e),h.push(f)):n(function(){b(o,c,d,e,f)},c,d,e,f)}}function s(a,b){return b.priority-a.priority}function N(a,b,c,d){if(b)throw A("Multiple directives ["+b.name+", "+c.name+"] asking for "+a+" on: "+pa(d));}function H(a,b){var c=h(b,!0);c&&a.push({priority:0,compile:J(function(a,b){var d=b.parent(),e=d.data("$binding")||[];e.push(c);q(d.data("$binding",e),
48
+ "ng-binding");a.$watch(c,function(a){b[0].nodeValue=a})})})}function W(a,b,c,d){var e=h(c,!0);e&&b.push({priority:100,compile:J(function(a,b,c){b=c.$$observers||(c.$$observers={});d==="class"&&(e=h(c[d],!0));c[d]=p;(b[d]||(b[d]=[])).$$inter=!0;(c.$$observers&&c.$$observers[d].$$scope||a).$watch(e,function(a){c.$set(d,a)})})})}function Ga(a,b,c){var d=b[0],e=d.parentNode,f,g;if(a){f=0;for(g=a.length;f<g;f++)if(a[f]==d){a[f]=c;break}}e&&e.replaceChild(c,d);c[y.expando]=d[y.expando];b[0]=c}var ea=function(a,
49
+ b){this.$$element=a;this.$attr=b||{}};ea.prototype={$normalize:fa,$set:function(a,b,c,d){var e=zb(this.$$element[0],a),f=this.$$observers;e&&(this.$$element.prop(a,b),d=e);this[a]=b;d?this.$attr[a]=d:(d=this.$attr[a])||(this.$attr[a]=d=ab(a,"-"));c!==!1&&(b===null||b===p?this.$$element.removeAttr(d):this.$$element.attr(d,b));f&&m(f[a],function(a){try{a(b)}catch(c){k(c)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers={}),e=d[a]||(d[a]=[]);e.push(b);o.$evalAsync(function(){e.$$inter||
50
+ b(c[a])});return b}};var D=h.startSymbol(),aa=h.endSymbol(),Ia=D=="{{"||aa=="}}"?ma:function(a){return a.replace(/\{\{/g,D).replace(/}}/g,aa)};return w}]}function fa(b){return sb(b.replace(Ac,""))}function Bc(){var b={};this.register=function(a,c){I(a)?x(b,a):b[a]=c};this.$get=["$injector","$window",function(a,c){return function(d,e){if(F(d)){var g=d,d=b.hasOwnProperty(g)?b[g]:gb(e.$scope,g,!0)||gb(c,g,!0);ra(d,g,!0)}return a.instantiate(d,e)}}]}function Cc(){this.$get=["$window",function(b){return y(b.document)}]}
51
+ function Dc(){this.$get=["$log",function(b){return function(a,c){b.error.apply(b,arguments)}}]}function Ec(){var b="{{",a="}}";this.startSymbol=function(a){return a?(b=a,this):b};this.endSymbol=function(b){return b?(a=b,this):a};this.$get=["$parse",function(c){function d(d,f){for(var h,k,j=0,l=[],n=d.length,r=!1,o=[];j<n;)(h=d.indexOf(b,j))!=-1&&(k=d.indexOf(a,h+e))!=-1?(j!=h&&l.push(d.substring(j,h)),l.push(j=c(r=d.substring(h+e,k))),j.exp=r,j=k+g,r=!0):(j!=n&&l.push(d.substring(j)),j=n);if(!(n=
52
+ l.length))l.push(""),n=1;if(!f||r)return o.length=n,j=function(a){for(var b=0,c=n,d;b<c;b++){if(typeof(d=l[b])=="function")d=d(a),d==null||d==p?d="":typeof d!="string"&&(d=ca(d));o[b]=d}return o.join("")},j.exp=d,j.parts=l,j}var e=b.length,g=a.length;d.startSymbol=function(){return b};d.endSymbol=function(){return a};return d}]}function Fb(b){for(var b=b.split("/"),a=b.length;a--;)b[a]=$a(b[a]);return b.join("/")}function va(b,a){var c=Gb.exec(b),c={protocol:c[1],host:c[3],port:G(c[5])||Hb[c[1]]||
53
+ null,path:c[6]||"/",search:c[8],hash:c[10]};if(a)a.$$protocol=c.protocol,a.$$host=c.host,a.$$port=c.port;return c}function ka(b,a,c){return b+"://"+a+(c==Hb[b]?"":":"+c)}function Fc(b,a,c){var d=va(b);return decodeURIComponent(d.path)!=a||t(d.hash)||d.hash.indexOf(c)!==0?b:ka(d.protocol,d.host,d.port)+a.substr(0,a.lastIndexOf("/"))+d.hash.substr(c.length)}function Gc(b,a,c){var d=va(b);if(decodeURIComponent(d.path)==a)return b;else{var e=d.search&&"?"+d.search||"",g=d.hash&&"#"+d.hash||"",i=a.substr(0,
54
+ a.lastIndexOf("/")),f=d.path.substr(i.length);if(d.path.indexOf(i)!==0)throw A('Invalid url "'+b+'", missing path prefix "'+i+'" !');return ka(d.protocol,d.host,d.port)+a+"#"+c+f+e+g}}function hb(b,a,c){a=a||"";this.$$parse=function(b){var c=va(b,this);if(c.path.indexOf(a)!==0)throw A('Invalid url "'+b+'", missing path prefix "'+a+'" !');this.$$path=decodeURIComponent(c.path.substr(a.length));this.$$search=Ya(c.search);this.$$hash=c.hash&&decodeURIComponent(c.hash)||"";this.$$compose()};this.$$compose=
55
+ function(){var b=pb(this.$$search),c=this.$$hash?"#"+$a(this.$$hash):"";this.$$url=Fb(this.$$path)+(b?"?"+b:"")+c;this.$$absUrl=ka(this.$$protocol,this.$$host,this.$$port)+a+this.$$url};this.$$rewriteAppUrl=function(a){if(a.indexOf(c)==0)return a};this.$$parse(b)}function Ja(b,a,c){var d;this.$$parse=function(b){var c=va(b,this);if(c.hash&&c.hash.indexOf(a)!==0)throw A('Invalid url "'+b+'", missing hash prefix "'+a+'" !');d=c.path+(c.search?"?"+c.search:"");c=Hc.exec((c.hash||"").substr(a.length));
56
+ this.$$path=c[1]?(c[1].charAt(0)=="/"?"":"/")+decodeURIComponent(c[1]):"";this.$$search=Ya(c[3]);this.$$hash=c[5]&&decodeURIComponent(c[5])||"";this.$$compose()};this.$$compose=function(){var b=pb(this.$$search),c=this.$$hash?"#"+$a(this.$$hash):"";this.$$url=Fb(this.$$path)+(b?"?"+b:"")+c;this.$$absUrl=ka(this.$$protocol,this.$$host,this.$$port)+d+(this.$$url?"#"+a+this.$$url:"")};this.$$rewriteAppUrl=function(a){if(a.indexOf(c)==0)return a};this.$$parse(b)}function Ib(b,a,c,d){Ja.apply(this,arguments);
57
+ this.$$rewriteAppUrl=function(b){if(b.indexOf(c)==0)return c+d+"#"+a+b.substr(c.length)}}function Ka(b){return function(){return this[b]}}function Jb(b,a){return function(c){if(t(c))return this[b];this[b]=a(c);this.$$compose();return this}}function Ic(){var b="",a=!1;this.hashPrefix=function(a){return u(a)?(b=a,this):b};this.html5Mode=function(b){return u(b)?(a=b,this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(c,d,e,g){function i(a){c.$broadcast("$locationChangeSuccess",
58
+ f.absUrl(),a)}var f,h,k,j=d.url(),l=va(j);a?(h=d.baseHref()||"/",k=h.substr(0,h.lastIndexOf("/")),l=ka(l.protocol,l.host,l.port)+k+"/",f=e.history?new hb(Fc(j,h,b),k,l):new Ib(Gc(j,h,b),b,l,h.substr(k.length+1))):(l=ka(l.protocol,l.host,l.port)+(l.path||"")+(l.search?"?"+l.search:"")+"#"+b+"/",f=new Ja(j,b,l));g.bind("click",function(a){if(!a.ctrlKey&&!(a.metaKey||a.which==2)){for(var b=y(a.target);E(b[0].nodeName)!=="a";)if(b[0]===g[0]||!(b=b.parent())[0])return;var d=b.prop("href"),e=f.$$rewriteAppUrl(d);
59
+ d&&!b.attr("target")&&e&&(f.$$parse(e),c.$apply(),a.preventDefault(),T.angular["ff-684208-preventDefault"]=!0)}});f.absUrl()!=j&&d.url(f.absUrl(),!0);d.onUrlChange(function(a){f.absUrl()!=a&&(c.$evalAsync(function(){var b=f.absUrl();f.$$parse(a);i(b)}),c.$$phase||c.$digest())});var n=0;c.$watch(function(){var a=d.url();if(!n||a!=f.absUrl())n++,c.$evalAsync(function(){c.$broadcast("$locationChangeStart",f.absUrl(),a).defaultPrevented?f.$$parse(a):(d.url(f.absUrl(),f.$$replace),f.$$replace=!1,i(a))});
60
+ return n});return f}]}function Jc(){this.$get=["$window",function(b){function a(a){a instanceof A&&(a.stack?a=a.message&&a.stack.indexOf(a.message)===-1?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function c(c){var e=b.console||{},g=e[c]||e.log||D;return g.apply?function(){var b=[];m(arguments,function(c){b.push(a(c))});return g.apply(e,b)}:function(a,b){g(a,b)}}return{log:c("log"),warn:c("warn"),info:c("info"),error:c("error")}}]}function Kc(b,
61
+ a){function c(a){return a.indexOf(q)!=-1}function d(){return o+1<b.length?b.charAt(o+1):!1}function e(a){return"0"<=a&&a<="9"}function g(a){return a==" "||a=="\r"||a=="\t"||a=="\n"||a=="\u000b"||a=="\u00a0"}function i(a){return"a"<=a&&a<="z"||"A"<=a&&a<="Z"||"_"==a||a=="$"}function f(a){return a=="-"||a=="+"||e(a)}function h(a,c,d){d=d||o;throw A("Lexer Error: "+a+" at column"+(u(c)?"s "+c+"-"+o+" ["+b.substring(c,d)+"]":" "+d)+" in expression ["+b+"].");}function k(){for(var a="",c=o;o<b.length;){var g=
62
+ E(b.charAt(o));if(g=="."||e(g))a+=g;else{var k=d();if(g=="e"&&f(k))a+=g;else if(f(g)&&k&&e(k)&&a.charAt(a.length-1)=="e")a+=g;else if(f(g)&&(!k||!e(k))&&a.charAt(a.length-1)=="e")h("Invalid exponent");else break}o++}a*=1;n.push({index:c,text:a,json:!0,fn:function(){return a}})}function j(){for(var c="",d=o,f,k,h;o<b.length;){var j=b.charAt(o);if(j=="."||i(j)||e(j))j=="."&&(f=o),c+=j;else break;o++}if(f)for(k=o;k<b.length;){j=b.charAt(k);if(j=="("){h=c.substr(f-d+1);c=c.substr(0,f-d);o=k;break}if(g(j))k++;
63
+ else break}d={index:d,text:c};if(La.hasOwnProperty(c))d.fn=d.json=La[c];else{var l=Kb(c,a);d.fn=x(function(a,b){return l(a,b)},{assign:function(a,b){return Lb(a,c,b)}})}n.push(d);h&&(n.push({index:f,text:".",json:!1}),n.push({index:f+1,text:h,json:!1}))}function l(a){var c=o;o++;for(var d="",e=a,f=!1;o<b.length;){var g=b.charAt(o);e+=g;if(f)g=="u"?(g=b.substring(o+1,o+5),g.match(/[\da-f]{4}/i)||h("Invalid unicode escape [\\u"+g+"]"),o+=4,d+=String.fromCharCode(parseInt(g,16))):(f=Lc[g],d+=f?f:g),
64
+ f=!1;else if(g=="\\")f=!0;else if(g==a){o++;n.push({index:c,text:e,string:d,json:!0,fn:function(){return d}});return}else d+=g;o++}h("Unterminated quote",c)}for(var n=[],r,o=0,w=[],q,v=":";o<b.length;){q=b.charAt(o);if(c("\"'"))l(q);else if(e(q)||c(".")&&e(d()))k();else if(i(q)){if(j(),"{,".indexOf(v)!=-1&&w[0]=="{"&&(r=n[n.length-1]))r.json=r.text.indexOf(".")==-1}else if(c("(){}[].,;:"))n.push({index:o,text:q,json:":[,".indexOf(v)!=-1&&c("{[")||c("}]:,")}),c("{[")&&w.unshift(q),c("}]")&&w.shift(),
65
+ o++;else if(g(q)){o++;continue}else{var m=q+d(),B=La[q],z=La[m];z?(n.push({index:o,text:m,fn:z}),o+=2):B?(n.push({index:o,text:q,fn:B,json:"[,:".indexOf(v)!=-1&&c("+-")}),o+=1):h("Unexpected next character ",o,o+1)}v=q}return n}function Mc(b,a,c,d){function e(a,c){throw A("Syntax Error: Token '"+c.text+"' "+a+" at column "+(c.index+1)+" of the expression ["+b+"] starting at ["+b.substring(c.index)+"].");}function g(){if(N.length===0)throw A("Unexpected end of expression: "+b);return N[0]}function i(a,
66
+ b,c,d){if(N.length>0){var f=N[0],e=f.text;if(e==a||e==b||e==c||e==d||!a&&!b&&!c&&!d)return f}return!1}function f(b,c,d,f){return(b=i(b,c,d,f))?(a&&!b.json&&e("is not valid json",b),N.shift(),b):!1}function h(a){f(a)||e("is unexpected, expecting ["+a+"]",i())}function k(a,b){return function(c,d){return a(c,d,b)}}function j(a,b,c){return function(d,f){return b(d,f,a,c)}}function l(){for(var a=[];;)if(N.length>0&&!i("}",")",";","]")&&a.push(t()),!f(";"))return a.length==1?a[0]:function(b,c){for(var d,
67
+ f=0;f<a.length;f++){var e=a[f];e&&(d=e(b,c))}return d}}function n(){for(var a=f(),b=c(a.text),d=[];;)if(a=f(":"))d.push(H());else{var e=function(a,c,f){for(var f=[f],e=0;e<d.length;e++)f.push(d[e](a,c));return b.apply(a,f)};return function(){return e}}}function r(){for(var a=o(),b;;)if(b=f("||"))a=j(a,b.fn,o());else return a}function o(){var a=w(),b;if(b=f("&&"))a=j(a,b.fn,o());return a}function w(){var a=q(),b;if(b=f("==","!="))a=j(a,b.fn,w());return a}function q(){var a;a=v();for(var b;b=f("+",
68
+ "-");)a=j(a,b.fn,v());if(b=f("<",">","<=",">="))a=j(a,b.fn,q());return a}function v(){for(var a=m(),b;b=f("*","/","%");)a=j(a,b.fn,m());return a}function m(){var a;return f("+")?B():(a=f("-"))?j(V,a.fn,m()):(a=f("!"))?k(a.fn,m()):B()}function B(){var a;if(f("("))a=t(),h(")");else if(f("["))a=z();else if(f("{"))a=L();else{var b=f();(a=b.fn)||e("not a primary expression",b)}for(var c;b=f("(","[",".");)b.text==="("?(a=y(a,c),c=null):b.text==="["?(c=a,a=ea(a)):b.text==="."?(c=a,a=u(a)):e("IMPOSSIBLE");
69
+ return a}function z(){var a=[];if(g().text!="]"){do a.push(H());while(f(","))}h("]");return function(b,c){for(var d=[],f=0;f<a.length;f++)d.push(a[f](b,c));return d}}function L(){var a=[];if(g().text!="}"){do{var b=f(),b=b.string||b.text;h(":");var c=H();a.push({key:b,value:c})}while(f(","))}h("}");return function(b,c){for(var d={},f=0;f<a.length;f++){var e=a[f],g=e.value(b,c);d[e.key]=g}return d}}var V=J(0),s,N=Kc(b,d),H=function(){var a=r(),c,d;return(d=f("="))?(a.assign||e("implies assignment but ["+
70
+ b.substring(0,d.index)+"] can not be assigned to",d),c=r(),function(b,d){return a.assign(b,c(b,d),d)}):a},y=function(a,b){var c=[];if(g().text!=")"){do c.push(H());while(f(","))}h(")");return function(d,f){for(var e=[],g=b?b(d,f):d,k=0;k<c.length;k++)e.push(c[k](d,f));k=a(d,f)||D;return k.apply?k.apply(g,e):k(e[0],e[1],e[2],e[3],e[4])}},u=function(a){var b=f().text,c=Kb(b,d);return x(function(b,d){return c(a(b,d),d)},{assign:function(c,d,f){return Lb(a(c,f),b,d)}})},ea=function(a){var b=H();h("]");
71
+ return x(function(c,d){var f=a(c,d),e=b(c,d),g;if(!f)return p;if((f=f[e])&&f.then){g=f;if(!("$$v"in f))g.$$v=p,g.then(function(a){g.$$v=a});f=f.$$v}return f},{assign:function(c,d,f){return a(c,f)[b(c,f)]=d}})},t=function(){for(var a=H(),b;;)if(b=f("|"))a=j(a,b.fn,n());else return a};a?(H=r,y=u=ea=t=function(){e("is not valid json",{text:b,index:0})},s=B()):s=l();N.length!==0&&e("is an unexpected token",N[0]);return s}function Lb(b,a,c){for(var a=a.split("."),d=0;a.length>1;d++){var e=a.shift(),g=
72
+ b[e];g||(g={},b[e]=g);b=g}return b[a.shift()]=c}function gb(b,a,c){if(!a)return b;for(var a=a.split("."),d,e=b,g=a.length,i=0;i<g;i++)d=a[i],b&&(b=(e=b)[d]);return!c&&M(b)?Wa(e,b):b}function Mb(b,a,c,d,e){return function(g,i){var f=i&&i.hasOwnProperty(b)?i:g,h;if(f===null||f===p)return f;if((f=f[b])&&f.then){if(!("$$v"in f))h=f,h.$$v=p,h.then(function(a){h.$$v=a});f=f.$$v}if(!a||f===null||f===p)return f;if((f=f[a])&&f.then){if(!("$$v"in f))h=f,h.$$v=p,h.then(function(a){h.$$v=a});f=f.$$v}if(!c||f===
73
+ null||f===p)return f;if((f=f[c])&&f.then){if(!("$$v"in f))h=f,h.$$v=p,h.then(function(a){h.$$v=a});f=f.$$v}if(!d||f===null||f===p)return f;if((f=f[d])&&f.then){if(!("$$v"in f))h=f,h.$$v=p,h.then(function(a){h.$$v=a});f=f.$$v}if(!e||f===null||f===p)return f;if((f=f[e])&&f.then){if(!("$$v"in f))h=f,h.$$v=p,h.then(function(a){h.$$v=a});f=f.$$v}return f}}function Kb(b,a){if(ib.hasOwnProperty(b))return ib[b];var c=b.split("."),d=c.length,e;if(a)e=d<6?Mb(c[0],c[1],c[2],c[3],c[4]):function(a,b){var e=0,
74
+ g;do g=Mb(c[e++],c[e++],c[e++],c[e++],c[e++])(a,b),b=p,a=g;while(e<d);return g};else{var g="var l, fn, p;\n";m(c,function(a,b){g+="if(s === null || s === undefined) return s;\nl=s;\ns="+(b?"s":'((k&&k.hasOwnProperty("'+a+'"))?k:s)')+'["'+a+'"];\nif (s && s.then) {\n if (!("$$v" in s)) {\n p=s;\n p.$$v = undefined;\n p.then(function(v) {p.$$v=v;});\n}\n s=s.$$v\n}\n'});g+="return s;";e=Function("s","k",g);e.toString=function(){return g}}return ib[b]=e}function Nc(){var b={};this.$get=["$filter","$sniffer",
75
+ function(a,c){return function(d){switch(typeof d){case "string":return b.hasOwnProperty(d)?b[d]:b[d]=Mc(d,!1,a,c.csp);case "function":return d;default:return D}}}]}function Oc(){this.$get=["$rootScope","$exceptionHandler",function(b,a){return Pc(function(a){b.$evalAsync(a)},a)}]}function Pc(b,a){function c(a){return a}function d(a){return i(a)}var e=function(){var f=[],h,k;return k={resolve:function(a){if(f){var c=f;f=p;h=g(a);c.length&&b(function(){for(var a,b=0,d=c.length;b<d;b++)a=c[b],h.then(a[0],
76
+ a[1])})}},reject:function(a){k.resolve(i(a))},promise:{then:function(b,g){var k=e(),i=function(d){try{k.resolve((b||c)(d))}catch(f){a(f),k.reject(f)}},o=function(b){try{k.resolve((g||d)(b))}catch(c){a(c),k.reject(c)}};f?f.push([i,o]):h.then(i,o);return k.promise}}}},g=function(a){return a&&a.then?a:{then:function(c){var d=e();b(function(){d.resolve(c(a))});return d.promise}}},i=function(a){return{then:function(c,g){var j=e();b(function(){j.resolve((g||d)(a))});return j.promise}}};return{defer:e,reject:i,
77
+ when:function(f,h,k){var j=e(),l,n=function(b){try{return(h||c)(b)}catch(d){return a(d),i(d)}},r=function(b){try{return(k||d)(b)}catch(c){return a(c),i(c)}};b(function(){g(f).then(function(a){l||(l=!0,j.resolve(g(a).then(n,r)))},function(a){l||(l=!0,j.resolve(r(a)))})});return j.promise},all:function(a){var b=e(),c=a.length,d=[];c?m(a,function(a,e){g(a).then(function(a){e in d||(d[e]=a,--c||b.resolve(d))},function(a){e in d||b.reject(a)})}):b.resolve(d);return b.promise}}}function Qc(){var b={};this.when=
78
+ function(a,c){b[a]=x({reloadOnSearch:!0},c);if(a){var d=a[a.length-1]=="/"?a.substr(0,a.length-1):a+"/";b[d]={redirectTo:a}}return this};this.otherwise=function(a){this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache",function(a,c,d,e,g,i,f){function h(){var b=k(),h=r.current;if(b&&h&&b.$route===h.$route&&ga(b.pathParams,h.pathParams)&&!b.reloadOnSearch&&!n)h.params=b.params,U(h.params,d),a.$broadcast("$routeUpdate",h);else if(b||
79
+ h)n=!1,a.$broadcast("$routeChangeStart",b,h),(r.current=b)&&b.redirectTo&&(F(b.redirectTo)?c.path(j(b.redirectTo,b.params)).search(b.params).replace():c.url(b.redirectTo(b.pathParams,c.path(),c.search())).replace()),e.when(b).then(function(){if(b){var a=[],c=[],d;m(b.resolve||{},function(b,d){a.push(d);c.push(M(b)?g.invoke(b):g.get(b))});if(!u(d=b.template))if(u(d=b.templateUrl))d=i.get(d,{cache:f}).then(function(a){return a.data});u(d)&&(a.push("$template"),c.push(d));return e.all(c).then(function(b){var c=
80
+ {};m(b,function(b,d){c[a[d]]=b});return c})}}).then(function(c){if(b==r.current){if(b)b.locals=c,U(b.params,d);a.$broadcast("$routeChangeSuccess",b,h)}},function(c){b==r.current&&a.$broadcast("$routeChangeError",b,h,c)})}function k(){var a,d;m(b,function(b,e){if(!d&&(a=l(c.path(),e)))d=ya(b,{params:x({},c.search(),a),pathParams:a}),d.$route=b});return d||b[null]&&ya(b[null],{params:{},pathParams:{}})}function j(a,b){var c=[];m((a||"").split(":"),function(a,d){if(d==0)c.push(a);else{var e=a.match(/(\w+)(.*)/),
81
+ f=e[1];c.push(b[f]);c.push(e[2]||"");delete b[f]}});return c.join("")}var l=function(a,b){var c="^"+b.replace(/([\.\\\(\)\^\$])/g,"\\$1")+"$",d=[],e={};m(b.split(/\W/),function(a){if(a){var b=RegExp(":"+a+"([\\W])");c.match(b)&&(c=c.replace(b,"([^\\/]*)$1"),d.push(a))}});var f=a.match(RegExp(c));f&&m(d,function(a,b){e[a]=f[b+1]});return f?e:null},n=!1,r={routes:b,reload:function(){n=!0;a.$evalAsync(h)}};a.$on("$locationChangeSuccess",h);return r}]}function Rc(){this.$get=J({})}function Sc(){var b=
82
+ 10;this.digestTtl=function(a){arguments.length&&(b=a);return b};this.$get=["$injector","$exceptionHandler","$parse",function(a,c,d){function e(){this.$id=xa();this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null;this["this"]=this.$root=this;this.$$asyncQueue=[];this.$$listeners={}}function g(a){if(h.$$phase)throw A(h.$$phase+" already in progress");h.$$phase=a}function i(a,b){var c=d(a);ra(c,b);return c}function f(){}e.prototype={$new:function(a){if(M(a))throw A("API-CHANGE: Use $controller to instantiate controllers.");
83
+ a?(a=new e,a.$root=this.$root):(a=function(){},a.prototype=this,a=new a,a.$id=xa());a["this"]=a;a.$$listeners={};a.$parent=this;a.$$asyncQueue=[];a.$$watchers=a.$$nextSibling=a.$$childHead=a.$$childTail=null;a.$$prevSibling=this.$$childTail;this.$$childHead?this.$$childTail=this.$$childTail.$$nextSibling=a:this.$$childHead=this.$$childTail=a;return a},$watch:function(a,b,c){var d=i(a,"watch"),e=this.$$watchers,g={fn:b,last:f,get:d,exp:a,eq:!!c};if(!M(b)){var h=i(b||D,"listener");g.fn=function(a,b,
84
+ c){h(c)}}if(!e)e=this.$$watchers=[];e.unshift(g);return function(){za(e,g)}},$digest:function(){var a,d,e,i,r,o,m,q=b,v,p=[],B,z;g("$digest");do{m=!1;v=this;do{for(r=v.$$asyncQueue;r.length;)try{v.$eval(r.shift())}catch(L){c(L)}if(i=v.$$watchers)for(o=i.length;o--;)try{if(a=i[o],(d=a.get(v))!==(e=a.last)&&!(a.eq?ga(d,e):typeof d=="number"&&typeof e=="number"&&isNaN(d)&&isNaN(e)))m=!0,a.last=a.eq?U(d):d,a.fn(d,e===f?d:e,v),q<5&&(B=4-q,p[B]||(p[B]=[]),z=M(a.exp)?"fn: "+(a.exp.name||a.exp.toString()):
85
+ a.exp,z+="; newVal: "+ca(d)+"; oldVal: "+ca(e),p[B].push(z))}catch(V){c(V)}if(!(i=v.$$childHead||v!==this&&v.$$nextSibling))for(;v!==this&&!(i=v.$$nextSibling);)v=v.$parent}while(v=i);if(m&&!q--)throw h.$$phase=null,A(b+" $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: "+ca(p));}while(m||r.length);h.$$phase=null},$destroy:function(){if(h!=this){var a=this.$parent;this.$broadcast("$destroy");if(a.$$childHead==this)a.$$childHead=this.$$nextSibling;if(a.$$childTail==
86
+ this)a.$$childTail=this.$$prevSibling;if(this.$$prevSibling)this.$$prevSibling.$$nextSibling=this.$$nextSibling;if(this.$$nextSibling)this.$$nextSibling.$$prevSibling=this.$$prevSibling}},$eval:function(a,b){return d(a)(this,b)},$evalAsync:function(a){this.$$asyncQueue.push(a)},$apply:function(a){try{return g("$apply"),this.$eval(a)}catch(b){c(b)}finally{h.$$phase=null;try{h.$digest()}catch(d){throw c(d),d;}}},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);return function(){za(c,
87
+ b)}},$emit:function(a,b){var d=[],e,f=this,g=!1,h={name:a,targetScope:f,stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},i=[h].concat(ha.call(arguments,1)),m,p;do{e=f.$$listeners[a]||d;h.currentScope=f;m=0;for(p=e.length;m<p;m++)try{if(e[m].apply(null,i),g)return h}catch(B){c(B)}f=f.$parent}while(f);return h},$broadcast:function(a,b){var d=this,e=this,f={name:a,targetScope:this,preventDefault:function(){f.defaultPrevented=!0},defaultPrevented:!1},
88
+ g=[f].concat(ha.call(arguments,1));do if(d=e,f.currentScope=d,m(d.$$listeners[a],function(a){try{a.apply(null,g)}catch(b){c(b)}}),!(e=d.$$childHead||d!==this&&d.$$nextSibling))for(;d!==this&&!(e=d.$$nextSibling);)d=d.$parent;while(d=e);return f}};var h=new e;return h}]}function Tc(){this.$get=["$window",function(b){var a={},c=G((/android (\d+)/.exec(E(b.navigator.userAgent))||[])[1]);return{history:!(!b.history||!b.history.pushState||c<4),hashchange:"onhashchange"in b&&(!b.document.documentMode||
89
+ b.document.documentMode>7),hasEvent:function(c){if(c=="input"&&$==9)return!1;if(t(a[c])){var e=b.document.createElement("div");a[c]="on"+c in e}return a[c]},csp:!1}}]}function Uc(){this.$get=J(T)}function Nb(b){var a={},c,d,e;if(!b)return a;m(b.split("\n"),function(b){e=b.indexOf(":");c=E(Q(b.substr(0,e)));d=Q(b.substr(e+1));c&&(a[c]?a[c]+=", "+d:a[c]=d)});return a}function Ob(b){var a=I(b)?b:p;return function(c){a||(a=Nb(b));return c?a[E(c)]||null:a}}function Pb(b,a,c){if(M(c))return c(b,a);m(c,
90
+ function(c){b=c(b,a)});return b}function Vc(){var b=/^\s*(\[|\{[^\{])/,a=/[\}\]]\s*$/,c=/^\)\]\}',?\n/,d=this.defaults={transformResponse:[function(d){F(d)&&(d=d.replace(c,""),b.test(d)&&a.test(d)&&(d=ob(d,!0)));return d}],transformRequest:[function(a){return I(a)&&Ta.apply(a)!=="[object File]"?ca(a):a}],headers:{common:{Accept:"application/json, text/plain, */*","X-Requested-With":"XMLHttpRequest"},post:{"Content-Type":"application/json;charset=utf-8"},put:{"Content-Type":"application/json;charset=utf-8"}}},
91
+ e=this.responseInterceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(a,b,c,h,k,j){function l(a){function c(a){var b=x({},a,{data:Pb(a.data,a.headers,f)});return 200<=a.status&&a.status<300?b:k.reject(b)}a.method=la(a.method);var e=a.transformRequest||d.transformRequest,f=a.transformResponse||d.transformResponse,g=d.headers,g=x({"X-XSRF-TOKEN":b.cookies()["XSRF-TOKEN"]},g.common,g[E(a.method)],a.headers),e=Pb(a.data,Ob(g),e),h;t(a.data)&&delete g["Content-Type"];
92
+ h=n(a,e,g);h=h.then(c,c);m(w,function(a){h=a(h)});h.success=function(b){h.then(function(c){b(c.data,c.status,c.headers,a)});return h};h.error=function(b){h.then(null,function(c){b(c.data,c.status,c.headers,a)});return h};return h}function n(b,c,d){function e(a,b,c){m&&(200<=a&&a<300?m.put(w,[a,b,Nb(c)]):m.remove(w));f(b,a,c);h.$apply()}function f(a,c,d){c=Math.max(c,0);(200<=c&&c<300?j.resolve:j.reject)({data:a,status:c,headers:Ob(d),config:b})}function i(){var a=Va(l.pendingRequests,b);a!==-1&&l.pendingRequests.splice(a,
93
+ 1)}var j=k.defer(),n=j.promise,m,p,w=r(b.url,b.params);l.pendingRequests.push(b);n.then(i,i);b.cache&&b.method=="GET"&&(m=I(b.cache)?b.cache:o);if(m)if(p=m.get(w))if(p.then)return p.then(i,i),p;else K(p)?f(p[1],p[0],U(p[2])):f(p,200,{});else m.put(w,n);p||a(b.method,w,c,e,d,b.timeout,b.withCredentials);return n}function r(a,b){if(!b)return a;var c=[];fc(b,function(a,b){a==null||a==p||(I(a)&&(a=ca(a)),c.push(encodeURIComponent(b)+"="+encodeURIComponent(a)))});return a+(a.indexOf("?")==-1?"?":"&")+
94
+ c.join("&")}var o=c("$http"),w=[];m(e,function(a){w.push(F(a)?j.get(a):j.invoke(a))});l.pendingRequests=[];(function(a){m(arguments,function(a){l[a]=function(b,c){return l(x(c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){m(arguments,function(a){l[a]=function(b,c,d){return l(x(d||{},{method:a,url:b,data:c}))}})})("post","put");l.defaults=d;return l}]}function Wc(){this.$get=["$browser","$window","$document",function(b,a,c){return Xc(b,Yc,b.defer,a.angular.callbacks,c[0],
95
+ a.location.protocol.replace(":",""))}]}function Xc(b,a,c,d,e,g){function i(a,b){var c=e.createElement("script"),d=function(){e.body.removeChild(c);b&&b()};c.type="text/javascript";c.src=a;$?c.onreadystatechange=function(){/loaded|complete/.test(c.readyState)&&d()}:c.onload=c.onerror=d;e.body.appendChild(c)}return function(e,h,k,j,l,n,r){function o(a,c,d,e){c=(h.match(Gb)||["",g])[1]=="file"?d?200:404:c;a(c==1223?204:c,d,e);b.$$completeOutstandingRequest(D)}b.$$incOutstandingRequestCount();h=h||b.url();
96
+ if(E(e)=="jsonp"){var p="_"+(d.counter++).toString(36);d[p]=function(a){d[p].data=a};i(h.replace("JSON_CALLBACK","angular.callbacks."+p),function(){d[p].data?o(j,200,d[p].data):o(j,-2);delete d[p]})}else{var q=new a;q.open(e,h,!0);m(l,function(a,b){a&&q.setRequestHeader(b,a)});var v;q.onreadystatechange=function(){q.readyState==4&&o(j,v||q.status,q.responseText,q.getAllResponseHeaders())};if(r)q.withCredentials=!0;q.send(k||"");n>0&&c(function(){v=-1;q.abort()},n)}}}function Zc(){this.$get=function(){return{id:"en-us",
97
+ NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),SHORTMONTH:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),DAY:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),
98
+ SHORTDAY:"Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(","),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(b){return b===1?"one":"other"}}}}function $c(){this.$get=["$rootScope","$browser","$q","$exceptionHandler",function(b,a,c,d){function e(e,f,h){var k=c.defer(),j=k.promise,l=u(h)&&!h,f=a.defer(function(){try{k.resolve(e())}catch(a){k.reject(a),
99
+ d(a)}l||b.$apply()},f),h=function(){delete g[j.$$timeoutId]};j.$$timeoutId=f;g[f]=k;j.then(h,h);return j}var g={};e.cancel=function(b){return b&&b.$$timeoutId in g?(g[b.$$timeoutId].reject("canceled"),a.defer.cancel(b.$$timeoutId)):!1};return e}]}function Qb(b){function a(a,e){return b.factory(a+c,e)}var c="Filter";this.register=a;this.$get=["$injector",function(a){return function(b){return a.get(b+c)}}];a("currency",Rb);a("date",Sb);a("filter",ad);a("json",bd);a("limitTo",cd);a("lowercase",dd);a("number",
100
+ Tb);a("orderBy",Ub);a("uppercase",ed)}function ad(){return function(b,a){if(!(b instanceof Array))return b;var c=[];c.check=function(a){for(var b=0;b<c.length;b++)if(!c[b](a))return!1;return!0};var d=function(a,b){if(b.charAt(0)==="!")return!d(a,b.substr(1));switch(typeof a){case "boolean":case "number":case "string":return(""+a).toLowerCase().indexOf(b)>-1;case "object":for(var c in a)if(c.charAt(0)!=="$"&&d(a[c],b))return!0;return!1;case "array":for(c=0;c<a.length;c++)if(d(a[c],b))return!0;return!1;
101
+ default:return!1}};switch(typeof a){case "boolean":case "number":case "string":a={$:a};case "object":for(var e in a)e=="$"?function(){var b=(""+a[e]).toLowerCase();b&&c.push(function(a){return d(a,b)})}():function(){var b=e,f=(""+a[e]).toLowerCase();f&&c.push(function(a){return d(gb(a,b),f)})}();break;case "function":c.push(a);break;default:return b}for(var g=[],i=0;i<b.length;i++){var f=b[i];c.check(f)&&g.push(f)}return g}}function Rb(b){var a=b.NUMBER_FORMATS;return function(b,d){if(t(d))d=a.CURRENCY_SYM;
102
+ return Vb(b,a.PATTERNS[1],a.GROUP_SEP,a.DECIMAL_SEP,2).replace(/\u00A4/g,d)}}function Tb(b){var a=b.NUMBER_FORMATS;return function(b,d){return Vb(b,a.PATTERNS[0],a.GROUP_SEP,a.DECIMAL_SEP,d)}}function Vb(b,a,c,d,e){if(isNaN(b)||!isFinite(b))return"";var g=b<0,b=Math.abs(b),i=b+"",f="",h=[];if(i.indexOf("e")!==-1)f=i;else{i=(i.split(Wb)[1]||"").length;t(e)&&(e=Math.min(Math.max(a.minFrac,i),a.maxFrac));var i=Math.pow(10,e),b=Math.round(b*i)/i,b=(""+b).split(Wb),i=b[0],b=b[1]||"",k=0,j=a.lgSize,l=a.gSize;
103
+ if(i.length>=j+l)for(var k=i.length-j,n=0;n<k;n++)(k-n)%l===0&&n!==0&&(f+=c),f+=i.charAt(n);for(n=k;n<i.length;n++)(i.length-n)%j===0&&n!==0&&(f+=c),f+=i.charAt(n);for(;b.length<e;)b+="0";e&&(f+=d+b.substr(0,e))}h.push(g?a.negPre:a.posPre);h.push(f);h.push(g?a.negSuf:a.posSuf);return h.join("")}function jb(b,a,c){var d="";b<0&&(d="-",b=-b);for(b=""+b;b.length<a;)b="0"+b;c&&(b=b.substr(b.length-a));return d+b}function O(b,a,c,d){return function(e){e=e["get"+b]();if(c>0||e>-c)e+=c;e===0&&c==-12&&(e=
104
+ 12);return jb(e,a,d)}}function Ma(b,a){return function(c,d){var e=c["get"+b](),g=la(a?"SHORT"+b:b);return d[g][e]}}function Sb(b){function a(a){var b;if(b=a.match(c)){var a=new Date(0),g=0,i=0;b[9]&&(g=G(b[9]+b[10]),i=G(b[9]+b[11]));a.setUTCFullYear(G(b[1]),G(b[2])-1,G(b[3]));a.setUTCHours(G(b[4]||0)-g,G(b[5]||0)-i,G(b[6]||0),G(b[7]||0))}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d{3}))?)?)?(Z|([+-])(\d\d):?(\d\d)))?$/;return function(c,e){var g="",i=[],f,h,e=e||
105
+ "mediumDate",e=b.DATETIME_FORMATS[e]||e;F(c)&&(c=fd.test(c)?G(c):a(c));wa(c)&&(c=new Date(c));if(!na(c))return c;for(;e;)(h=gd.exec(e))?(i=i.concat(ha.call(h,1)),e=i.pop()):(i.push(e),e=null);m(i,function(a){f=hd[a];g+=f?f(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function bd(){return function(b){return ca(b,!0)}}function cd(){return function(b,a){if(!(b instanceof Array))return b;var a=G(a),c=[],d,e;if(!b||!(b instanceof Array))return c;a>b.length?a=b.length:a<
106
+ -b.length&&(a=-b.length);a>0?(d=0,e=a):(d=b.length+a,e=b.length);for(;d<e;d++)c.push(b[d]);return c}}function Ub(b){return function(a,c,d){function e(a,b){return Xa(b)?function(b,c){return a(c,b)}:a}if(!(a instanceof Array))return a;if(!c)return a;for(var c=K(c)?c:[c],c=Ua(c,function(a){var c=!1,d=a||ma;if(F(a)){if(a.charAt(0)=="+"||a.charAt(0)=="-")c=a.charAt(0)=="-",a=a.substring(1);d=b(a)}return e(function(a,b){var c;c=d(a);var e=d(b),f=typeof c,g=typeof e;f==g?(f=="string"&&(c=c.toLowerCase()),
107
+ f=="string"&&(e=e.toLowerCase()),c=c===e?0:c<e?-1:1):c=f<g?-1:1;return c},c)}),g=[],i=0;i<a.length;i++)g.push(a[i]);return g.sort(e(function(a,b){for(var d=0;d<c.length;d++){var e=c[d](a,b);if(e!==0)return e}return 0},d))}}function R(b){M(b)&&(b={link:b});b.restrict=b.restrict||"AC";return J(b)}function Xb(b,a){function c(a,c){c=c?"-"+ab(c,"-"):"";b.removeClass((a?Na:Oa)+c).addClass((a?Oa:Na)+c)}var d=this,e=b.parent().controller("form")||Pa,g=0,i=d.$error={};d.$name=a.name;d.$dirty=!1;d.$pristine=
108
+ !0;d.$valid=!0;d.$invalid=!1;e.$addControl(d);b.addClass(Qa);c(!0);d.$addControl=function(a){a.$name&&!d.hasOwnProperty(a.$name)&&(d[a.$name]=a)};d.$removeControl=function(a){a.$name&&d[a.$name]===a&&delete d[a.$name];m(i,function(b,c){d.$setValidity(c,!0,a)})};d.$setValidity=function(a,b,k){var j=i[a];if(b){if(j&&(za(j,k),!j.length)){g--;if(!g)c(b),d.$valid=!0,d.$invalid=!1;i[a]=!1;c(!0,a);e.$setValidity(a,!0,d)}}else{g||c(b);if(j){if(Va(j,k)!=-1)return}else i[a]=j=[],g++,c(!1,a),e.$setValidity(a,
109
+ !1,d);j.push(k);d.$valid=!1;d.$invalid=!0}};d.$setDirty=function(){b.removeClass(Qa).addClass(Yb);d.$dirty=!0;d.$pristine=!1}}function S(b){return t(b)||b===""||b===null||b!==b}function Ra(b,a,c,d,e,g){var i=function(){var c=Q(a.val());d.$viewValue!==c&&b.$apply(function(){d.$setViewValue(c)})};if(e.hasEvent("input"))a.bind("input",i);else{var f;a.bind("keydown",function(a){a=a.keyCode;a===91||15<a&&a<19||37<=a&&a<=40||f||(f=g.defer(function(){i();f=null}))});a.bind("change",i)}d.$render=function(){a.val(S(d.$viewValue)?
110
+ "":d.$viewValue)};var h=c.ngPattern,k=function(a,b){return S(b)||a.test(b)?(d.$setValidity("pattern",!0),b):(d.$setValidity("pattern",!1),p)};h&&(h.match(/^\/(.*)\/$/)?(h=RegExp(h.substr(1,h.length-2)),e=function(a){return k(h,a)}):e=function(a){var c=b.$eval(h);if(!c||!c.test)throw new A("Expected "+h+" to be a RegExp but was "+c);return k(c,a)},d.$formatters.push(e),d.$parsers.push(e));if(c.ngMinlength){var j=G(c.ngMinlength),e=function(a){return!S(a)&&a.length<j?(d.$setValidity("minlength",!1),
111
+ p):(d.$setValidity("minlength",!0),a)};d.$parsers.push(e);d.$formatters.push(e)}if(c.ngMaxlength){var l=G(c.ngMaxlength),c=function(a){return!S(a)&&a.length>l?(d.$setValidity("maxlength",!1),p):(d.$setValidity("maxlength",!0),a)};d.$parsers.push(c);d.$formatters.push(c)}}function kb(b,a){b="ngClass"+b;return R(function(c,d,e){c.$watch(e[b],function(b,e){if(a===!0||c.$index%2===a)e&&b!==e&&(I(e)&&!K(e)&&(e=Ua(e,function(a,b){if(a)return b})),d.removeClass(K(e)?e.join(" "):e)),I(b)&&!K(b)&&(b=Ua(b,
112
+ function(a,b){if(a)return b})),b&&d.addClass(K(b)?b.join(" "):b)},!0)})}var E=function(b){return F(b)?b.toLowerCase():b},la=function(b){return F(b)?b.toUpperCase():b},A=T.Error,$=G((/msie (\d+)/.exec(E(navigator.userAgent))||[])[1]),y,ia,ha=[].slice,Sa=[].push,Ta=Object.prototype.toString,Zb=T.angular||(T.angular={}),ta,Db,Z=["0","0","0"];D.$inject=[];ma.$inject=[];Db=$<9?function(b){b=b.nodeName?b:b[0];return b.scopeName&&b.scopeName!="HTML"?la(b.scopeName+":"+b.nodeName):b.nodeName}:function(b){return b.nodeName?
113
+ b.nodeName:b[0].nodeName};var lc=/[A-Z]/g,id={full:"1.0.2",major:1,minor:0,dot:2,codeName:"debilitating-awesomeness"},Ba=P.cache={},Aa=P.expando="ng-"+(new Date).getTime(),pc=1,$b=T.document.addEventListener?function(b,a,c){b.addEventListener(a,c,!1)}:function(b,a,c){b.attachEvent("on"+a,c)},eb=T.document.removeEventListener?function(b,a,c){b.removeEventListener(a,c,!1)}:function(b,a,c){b.detachEvent("on"+a,c)},nc=/([\:\-\_]+(.))/g,oc=/^moz([A-Z])/,ua=P.prototype={ready:function(b){function a(){c||
114
+ (c=!0,b())}var c=!1;this.bind("DOMContentLoaded",a);P(T).bind("load",a)},toString:function(){var b=[];m(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return b>=0?y(this[b]):y(this[this.length+b])},length:0,push:Sa,sort:[].sort,splice:[].splice},Ea={};m("multiple,selected,checked,disabled,readOnly,required".split(","),function(b){Ea[E(b)]=b});var Ab={};m("input,select,option,textarea,button,form".split(","),function(b){Ab[la(b)]=!0});m({data:vb,inheritedData:Da,scope:function(b){return Da(b,
115
+ "$scope")},controller:yb,injector:function(b){return Da(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Ca,css:function(b,a,c){a=sb(a);if(u(c))b.style[a]=c;else{var d;$<=8&&(d=b.currentStyle&&b.currentStyle[a],d===""&&(d="auto"));d=d||b.style[a];$<=8&&(d=d===""?p:d);return d}},attr:function(b,a,c){var d=E(a);if(Ea[d])if(u(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||D).specified?d:p;else if(u(c))b.setAttribute(a,
116
+ c);else if(b.getAttribute)return b=b.getAttribute(a,2),b===null?p:b},prop:function(b,a,c){if(u(c))b[a]=c;else return b[a]},text:x($<9?function(b,a){if(b.nodeType==1){if(t(a))return b.innerText;b.innerText=a}else{if(t(a))return b.nodeValue;b.nodeValue=a}}:function(b,a){if(t(a))return b.textContent;b.textContent=a},{$dv:""}),val:function(b,a){if(t(a))return b.value;b.value=a},html:function(b,a){if(t(a))return b.innerHTML;for(var c=0,d=b.childNodes;c<d.length;c++)sa(d[c]);b.innerHTML=a}},function(b,
117
+ a){P.prototype[a]=function(a,d){var e,g;if((b.length==2&&b!==Ca&&b!==yb?a:d)===p)if(I(a)){for(e=0;e<this.length;e++)if(b===vb)b(this[e],a);else for(g in a)b(this[e],g,a[g]);return this}else{if(this.length)return b(this[0],a,d)}else{for(e=0;e<this.length;e++)b(this[e],a,d);return this}return b.$dv}});m({removeData:tb,dealoc:sa,bind:function a(c,d,e){var g=da(c,"events"),i=da(c,"handle");g||da(c,"events",g={});i||da(c,"handle",i=qc(c,g));m(d.split(" "),function(d){var h=g[d];if(!h){if(d=="mouseenter"||
118
+ d=="mouseleave"){var k=0;g.mouseenter=[];g.mouseleave=[];a(c,"mouseover",function(a){k++;k==1&&i(a,"mouseenter")});a(c,"mouseout",function(a){k--;k==0&&i(a,"mouseleave")})}else $b(c,d,i),g[d]=[];h=g[d]}h.push(e)})},unbind:ub,replaceWith:function(a,c){var d,e=a.parentNode;sa(a);m(new P(c),function(c){d?e.insertBefore(c,d.nextSibling):e.replaceChild(c,a);d=c})},children:function(a){var c=[];m(a.childNodes,function(a){a.nodeName!="#text"&&c.push(a)});return c},contents:function(a){return a.childNodes},
119
+ append:function(a,c){m(new P(c),function(c){a.nodeType===1&&a.appendChild(c)})},prepend:function(a,c){if(a.nodeType===1){var d=a.firstChild;m(new P(c),function(c){d?a.insertBefore(c,d):(a.appendChild(c),d=c)})}},wrap:function(a,c){var c=y(c)[0],d=a.parentNode;d&&d.replaceChild(c,a);c.appendChild(a)},remove:function(a){sa(a);var c=a.parentNode;c&&c.removeChild(a)},after:function(a,c){var d=a,e=a.parentNode;m(new P(c),function(a){e.insertBefore(a,d.nextSibling);d=a})},addClass:xb,removeClass:wb,toggleClass:function(a,
120
+ c,d){t(d)&&(d=!Ca(a,c));(d?xb:wb)(a,c)},parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},next:function(a){return a.nextSibling},find:function(a,c){return a.getElementsByTagName(c)},clone:db},function(a,c){P.prototype[c]=function(c,e){for(var g,i=0;i<this.length;i++)g==p?(g=a(this[i],c,e),g!==p&&(g=y(g))):cb(g,a(this[i],c,e));return g==p?this:g}});Fa.prototype={put:function(a,c){this[ja(a)]=c},get:function(a){return this[ja(a)]},remove:function(a){var c=this[a=ja(a)];delete this[a];
121
+ return c}};fb.prototype={push:function(a,c){var d=this[a=ja(a)];d?d.push(c):this[a]=[c]},shift:function(a){var c=this[a=ja(a)];if(c)return c.length==1?(delete this[a],c[0]):c.shift()}};var sc=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,tc=/,/,uc=/^\s*(_?)(.+?)\1\s*$/,rc=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Eb="Non-assignable model expression: ";Cb.$inject=["$provide"];var Ac=/^(x[\:\-_]|data[\:\-_])/i,Gb=/^([^:]+):\/\/(\w+:{0,1}\w*@)?([\w\.-]*)(:([0-9]+))?(\/[^\?#]*)?(\?([^#]*))?(#(.*))?$/,ac=/^([^\?#]*)?(\?([^#]*))?(#(.*))?$/,
122
+ Hc=ac,Hb={http:80,https:443,ftp:21};hb.prototype={$$replace:!1,absUrl:Ka("$$absUrl"),url:function(a,c){if(t(a))return this.$$url;var d=ac.exec(a);d[1]&&this.path(decodeURIComponent(d[1]));if(d[2]||d[1])this.search(d[3]||"");this.hash(d[5]||"",c);return this},protocol:Ka("$$protocol"),host:Ka("$$host"),port:Ka("$$port"),path:Jb("$$path",function(a){return a.charAt(0)=="/"?a:"/"+a}),search:function(a,c){if(t(a))return this.$$search;u(c)?c===null?delete this.$$search[a]:this.$$search[a]=c:this.$$search=
123
+ F(a)?Ya(a):a;this.$$compose();return this},hash:Jb("$$hash",ma),replace:function(){this.$$replace=!0;return this}};Ja.prototype=ya(hb.prototype);Ib.prototype=ya(Ja.prototype);var La={"null":function(){return null},"true":function(){return!0},"false":function(){return!1},undefined:D,"+":function(a,c,d,e){d=d(a,c);e=e(a,c);return(u(d)?d:0)+(u(e)?e:0)},"-":function(a,c,d,e){d=d(a,c);e=e(a,c);return(u(d)?d:0)-(u(e)?e:0)},"*":function(a,c,d,e){return d(a,c)*e(a,c)},"/":function(a,c,d,e){return d(a,c)/
124
+ e(a,c)},"%":function(a,c,d,e){return d(a,c)%e(a,c)},"^":function(a,c,d,e){return d(a,c)^e(a,c)},"=":D,"==":function(a,c,d,e){return d(a,c)==e(a,c)},"!=":function(a,c,d,e){return d(a,c)!=e(a,c)},"<":function(a,c,d,e){return d(a,c)<e(a,c)},">":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"&":function(a,c,d,e){return d(a,c)&
125
+ e(a,c)},"|":function(a,c,d,e){return e(a,c)(a,c,d(a,c))},"!":function(a,c,d){return!d(a,c)}},Lc={n:"\n",f:"\u000c",r:"\r",t:"\t",v:"\u000b","'":"'",'"':'"'},ib={},Yc=T.XMLHttpRequest||function(){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(a){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(c){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(d){}throw new A("This browser does not support XMLHttpRequest.");};Qb.$inject=["$provide"];Rb.$inject=["$locale"];Tb.$inject=["$locale"];
126
+ var Wb=".",hd={yyyy:O("FullYear",4),yy:O("FullYear",2,0,!0),y:O("FullYear",1),MMMM:Ma("Month"),MMM:Ma("Month",!0),MM:O("Month",2,1),M:O("Month",1,1),dd:O("Date",2),d:O("Date",1),HH:O("Hours",2),H:O("Hours",1),hh:O("Hours",2,-12),h:O("Hours",1,-12),mm:O("Minutes",2),m:O("Minutes",1),ss:O("Seconds",2),s:O("Seconds",1),EEEE:Ma("Day"),EEE:Ma("Day",!0),a:function(a,c){return a.getHours()<12?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=a.getTimezoneOffset();return jb(a/60,2)+jb(Math.abs(a%60),2)}},gd=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,
127
+ fd=/^\d+$/;Sb.$inject=["$locale"];var dd=J(E),ed=J(la);Ub.$inject=["$parse"];var jd=J({restrict:"E",compile:function(a,c){c.href||c.$set("href","");return function(a,c){c.bind("click",function(a){c.attr("href")||a.preventDefault()})}}}),lb={};m(Ea,function(a,c){var d=fa("ng-"+c);lb[d]=function(){return{priority:100,compile:function(){return function(a,g,i){a.$watch(i[d],function(a){i.$set(c,!!a)})}}}}});m(["src","href"],function(a){var c=fa("ng-"+a);lb[c]=function(){return{priority:99,link:function(d,
128
+ e,g){g.$observe(c,function(c){g.$set(a,c);$&&e.prop(a,c)})}}}});var Pa={$addControl:D,$removeControl:D,$setValidity:D,$setDirty:D};Xb.$inject=["$element","$attrs","$scope"];var Sa=function(a){return["$timeout",function(c){var d={name:"form",restrict:"E",controller:Xb,compile:function(){return{pre:function(a,d,i,f){if(!i.action){var h=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1};$b(d[0],"submit",h);d.bind("$destroy",function(){c(function(){eb(d[0],"submit",h)},0,!1)})}var k=d.parent().controller("form"),
129
+ j=i.name||i.ngForm;j&&(a[j]=f);k&&d.bind("$destroy",function(){k.$removeControl(f);j&&(a[j]=p);x(f,Pa)})}}}};return a?x(U(d),{restrict:"EAC"}):d}]},kd=Sa(),ld=Sa(!0),md=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,nd=/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/,od=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,bc={text:Ra,number:function(a,c,d,e,g,i){Ra(a,c,d,e,g,i);e.$parsers.push(function(a){var c=S(a);return c||od.test(a)?(e.$setValidity("number",!0),a===""?
130
+ null:c?a:parseFloat(a)):(e.$setValidity("number",!1),p)});e.$formatters.push(function(a){return S(a)?"":""+a});if(d.min){var f=parseFloat(d.min),a=function(a){return!S(a)&&a<f?(e.$setValidity("min",!1),p):(e.$setValidity("min",!0),a)};e.$parsers.push(a);e.$formatters.push(a)}if(d.max){var h=parseFloat(d.max),d=function(a){return!S(a)&&a>h?(e.$setValidity("max",!1),p):(e.$setValidity("max",!0),a)};e.$parsers.push(d);e.$formatters.push(d)}e.$formatters.push(function(a){return S(a)||wa(a)?(e.$setValidity("number",
131
+ !0),a):(e.$setValidity("number",!1),p)})},url:function(a,c,d,e,g,i){Ra(a,c,d,e,g,i);a=function(a){return S(a)||md.test(a)?(e.$setValidity("url",!0),a):(e.$setValidity("url",!1),p)};e.$formatters.push(a);e.$parsers.push(a)},email:function(a,c,d,e,g,i){Ra(a,c,d,e,g,i);a=function(a){return S(a)||nd.test(a)?(e.$setValidity("email",!0),a):(e.$setValidity("email",!1),p)};e.$formatters.push(a);e.$parsers.push(a)},radio:function(a,c,d,e){t(d.name)&&c.attr("name",xa());c.bind("click",function(){c[0].checked&&
132
+ a.$apply(function(){e.$setViewValue(d.value)})});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e){var g=d.ngTrueValue,i=d.ngFalseValue;F(g)||(g=!0);F(i)||(i=!1);c.bind("click",function(){a.$apply(function(){e.$setViewValue(c[0].checked)})});e.$render=function(){c[0].checked=e.$viewValue};e.$formatters.push(function(a){return a===g});e.$parsers.push(function(a){return a?g:i})},hidden:D,button:D,submit:D,reset:D},cc=["$browser","$sniffer",
133
+ function(a,c){return{restrict:"E",require:"?ngModel",link:function(d,e,g,i){i&&(bc[E(g.type)]||bc.text)(d,e,g,i,c,a)}}}],Oa="ng-valid",Na="ng-invalid",Qa="ng-pristine",Yb="ng-dirty",pd=["$scope","$exceptionHandler","$attrs","$element","$parse",function(a,c,d,e,g){function i(a,c){c=c?"-"+ab(c,"-"):"";e.removeClass((a?Na:Oa)+c).addClass((a?Oa:Na)+c)}this.$modelValue=this.$viewValue=Number.NaN;this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$pristine=!0;this.$dirty=!1;this.$valid=
134
+ !0;this.$invalid=!1;this.$name=d.name;var g=g(d.ngModel),f=g.assign;if(!f)throw A(Eb+d.ngModel+" ("+pa(e)+")");this.$render=D;var h=e.inheritedData("$formController")||Pa,k=0,j=this.$error={};e.addClass(Qa);i(!0);this.$setValidity=function(a,c){if(j[a]!==!c){if(c){if(j[a]&&k--,!k)i(!0),this.$valid=!0,this.$invalid=!1}else i(!1),this.$invalid=!0,this.$valid=!1,k++;j[a]=!c;i(c,a);h.$setValidity(a,c,this)}};this.$setViewValue=function(d){this.$viewValue=d;if(this.$pristine)this.$dirty=!0,this.$pristine=
135
+ !1,e.removeClass(Qa).addClass(Yb),h.$setDirty();m(this.$parsers,function(a){d=a(d)});if(this.$modelValue!==d)this.$modelValue=d,f(a,d),m(this.$viewChangeListeners,function(a){try{a()}catch(d){c(d)}})};var l=this;a.$watch(g,function(a){if(l.$modelValue!==a){var c=l.$formatters,d=c.length;for(l.$modelValue=a;d--;)a=c[d](a);if(l.$viewValue!==a)l.$viewValue=a,l.$render()}})}],qd=function(){return{require:["ngModel","^?form"],controller:pd,link:function(a,c,d,e){var g=e[0],i=e[1]||Pa;i.$addControl(g);
136
+ c.bind("$destroy",function(){i.$removeControl(g)})}}},rd=J({require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),dc=function(){return{require:"?ngModel",link:function(a,c,d,e){if(e){d.required=!0;var g=function(a){if(d.required&&(S(a)||a===!1))e.$setValidity("required",!1);else return e.$setValidity("required",!0),a};e.$formatters.push(g);e.$parsers.unshift(g);d.$observe("required",function(){g(e.$viewValue)})}}}},sd=function(){return{require:"ngModel",
137
+ link:function(a,c,d,e){var g=(a=/\/(.*)\//.exec(d.ngList))&&RegExp(a[1])||d.ngList||",";e.$parsers.push(function(a){var c=[];a&&m(a.split(g),function(a){a&&c.push(Q(a))});return c});e.$formatters.push(function(a){return K(a)?a.join(", "):p})}}},td=/^(true|false|\d+)$/,ud=function(){return{priority:100,compile:function(a,c){return td.test(c.ngValue)?function(a,c,g){g.$set("value",a.$eval(g.ngValue))}:function(a,c,g){a.$watch(g.ngValue,function(a){g.$set("value",a,!1)})}}}},vd=R(function(a,c,d){c.addClass("ng-binding").data("$binding",
138
+ d.ngBind);a.$watch(d.ngBind,function(a){c.text(a==p?"":a)})}),wd=["$interpolate",function(a){return function(c,d,e){c=a(d.attr(e.$attr.ngBindTemplate));d.addClass("ng-binding").data("$binding",c);e.$observe("ngBindTemplate",function(a){d.text(a)})}}],xd=[function(){return function(a,c,d){c.addClass("ng-binding").data("$binding",d.ngBindHtmlUnsafe);a.$watch(d.ngBindHtmlUnsafe,function(a){c.html(a||"")})}}],yd=kb("",!0),zd=kb("Odd",0),Ad=kb("Even",1),Bd=R({compile:function(a,c){c.$set("ngCloak",p);
139
+ a.removeClass("ng-cloak")}}),Cd=[function(){return{scope:!0,controller:"@"}}],Dd=["$sniffer",function(a){return{priority:1E3,compile:function(){a.csp=!0}}}],ec={};m("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave".split(" "),function(a){var c=fa("ng-"+a);ec[c]=["$parse",function(d){return function(e,g,i){var f=d(i[c]);g.bind(E(a),function(a){e.$apply(function(){f(e,{$event:a})})})}}]});var Ed=R(function(a,c,d){c.bind("submit",function(){a.$apply(d.ngSubmit)})}),
140
+ Fd=["$http","$templateCache","$anchorScroll","$compile",function(a,c,d,e){return{restrict:"ECA",terminal:!0,compile:function(g,i){var f=i.ngInclude||i.src,h=i.onload||"",k=i.autoscroll;return function(g,i){var n=0,m,o=function(){m&&(m.$destroy(),m=null);i.html("")};g.$watch(f,function(f){var q=++n;f?a.get(f,{cache:c}).success(function(a){q===n&&(m&&m.$destroy(),m=g.$new(),i.html(a),e(i.contents())(m),u(k)&&(!k||g.$eval(k))&&d(),m.$emit("$includeContentLoaded"),g.$eval(h))}).error(function(){q===n&&
141
+ o()}):o()})}}}}],Gd=R({compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),Hd=R({terminal:!0,priority:1E3}),Id=["$locale","$interpolate",function(a,c){var d=/{}/g;return{restrict:"EA",link:function(e,g,i){var f=i.count,h=g.attr(i.$attr.when),k=i.offset||0,j=e.$eval(h),l={},n=c.startSymbol(),r=c.endSymbol();m(j,function(a,e){l[e]=c(a.replace(d,n+f+"-"+k+r))});e.$watch(function(){var c=parseFloat(e.$eval(f));return isNaN(c)?"":(j[c]||(c=a.pluralCat(c-k)),l[c](e,g,!0))},function(a){g.text(a)})}}}],
142
+ Jd=R({transclude:"element",priority:1E3,terminal:!0,compile:function(a,c,d){return function(a,c,i){var f=i.ngRepeat,i=f.match(/^\s*(.+)\s+in\s+(.*)\s*$/),h,k,j;if(!i)throw A("Expected ngRepeat in form of '_item_ in _collection_' but got '"+f+"'.");f=i[1];h=i[2];i=f.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/);if(!i)throw A("'item' in 'item in collection' should be identifier or (key, value) but got '"+f+"'.");k=i[3]||i[1];j=i[2];var l=new fb;a.$watch(function(a){var e,f,i=a.$eval(h),m=hc(i,
143
+ !0),p,y=new fb,B,z,t,u,s=c;if(K(i))t=i||[];else{t=[];for(B in i)i.hasOwnProperty(B)&&B.charAt(0)!="$"&&t.push(B);t.sort()}e=0;for(f=t.length;e<f;e++){B=i===t?e:t[e];z=i[B];if(u=l.shift(z)){p=u.scope;y.push(z,u);if(e!==u.index)u.index=e,s.after(u.element);s=u.element}else p=a.$new();p[k]=z;j&&(p[j]=B);p.$index=e;p.$first=e===0;p.$last=e===m-1;p.$middle=!(p.$first||p.$last);u||d(p,function(a){s.after(a);u={scope:p,element:s=a,index:e};y.push(z,u)})}for(B in l)if(l.hasOwnProperty(B))for(t=l[B];t.length;)z=
144
+ t.pop(),z.element.remove(),z.scope.$destroy();l=y})}}}),Kd=R(function(a,c,d){a.$watch(d.ngShow,function(a){c.css("display",Xa(a)?"":"none")})}),Ld=R(function(a,c,d){a.$watch(d.ngHide,function(a){c.css("display",Xa(a)?"none":"")})}),Md=R(function(a,c,d){a.$watch(d.ngStyle,function(a,d){d&&a!==d&&m(d,function(a,d){c.css(d,"")});a&&c.css(a)},!0)}),Nd=J({restrict:"EA",compile:function(a,c){var d=c.ngSwitch||c.on,e={};a.data("ng-switch",e);return function(a,i){var f,h,k;a.$watch(d,function(d){h&&(k.$destroy(),
145
+ h.remove(),h=k=null);if(f=e["!"+d]||e["?"])a.$eval(c.change),k=a.$new(),f(k,function(a){h=a;i.append(a)})})}}}),Od=R({transclude:"element",priority:500,compile:function(a,c,d){a=a.inheritedData("ng-switch");qa(a);a["!"+c.ngSwitchWhen]=d}}),Pd=R({transclude:"element",priority:500,compile:function(a,c,d){a=a.inheritedData("ng-switch");qa(a);a["?"]=d}}),Qd=R({controller:["$transclude","$element",function(a,c){a(function(a){c.append(a)})}]}),Rd=["$http","$templateCache","$route","$anchorScroll","$compile",
146
+ "$controller",function(a,c,d,e,g,i){return{restrict:"ECA",terminal:!0,link:function(a,c,k){function j(){var j=d.current&&d.current.locals,k=j&&j.$template;if(k){c.html(k);l&&(l.$destroy(),l=null);var k=g(c.contents()),m=d.current;l=m.scope=a.$new();if(m.controller)j.$scope=l,j=i(m.controller,j),c.contents().data("$ngControllerController",j);k(l);l.$emit("$viewContentLoaded");l.$eval(n);e()}else c.html(""),l&&(l.$destroy(),l=null)}var l,n=k.onload||"";a.$on("$routeChangeSuccess",j);j()}}}],Sd=["$templateCache",
147
+ function(a){return{restrict:"E",terminal:!0,compile:function(c,d){d.type=="text/ng-template"&&a.put(d.id,c[0].text)}}}],Td=J({terminal:!0}),Ud=["$compile","$parse",function(a,c){var d=/^\s*(.*?)(?:\s+as\s+(.*?))?(?:\s+group\s+by\s+(.*))?\s+for\s+(?:([\$\w][\$\w\d]*)|(?:\(\s*([\$\w][\$\w\d]*)\s*,\s*([\$\w][\$\w\d]*)\s*\)))\s+in\s+(.*)$/,e={$setViewValue:D};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function(a,c,d){var h=this,k={},j=e,l;h.databound=d.ngModel;
148
+ h.init=function(a,c,d){j=a;l=d};h.addOption=function(c){k[c]=!0;j.$viewValue==c&&(a.val(c),l.parent()&&l.remove())};h.removeOption=function(a){this.hasOption(a)&&(delete k[a],j.$viewValue==a&&this.renderUnknownOption(a))};h.renderUnknownOption=function(c){c="? "+ja(c)+" ?";l.val(c);a.prepend(l);a.val(c);l.prop("selected",!0)};h.hasOption=function(a){return k.hasOwnProperty(a)};c.$on("$destroy",function(){h.renderUnknownOption=D})}],link:function(e,i,f,h){function k(a,c,d,e){d.$render=function(){var a=
149
+ d.$viewValue;e.hasOption(a)?(z.parent()&&z.remove(),c.val(a),a===""&&v.prop("selected",!0)):t(a)&&v?c.val(""):e.renderUnknownOption(a)};c.bind("change",function(){a.$apply(function(){z.parent()&&z.remove();d.$setViewValue(c.val())})})}function j(a,c,d){var e;d.$render=function(){var a=new Fa(d.$viewValue);m(c.children(),function(c){c.selected=u(a.get(c.value))})};a.$watch(function(){ga(e,d.$viewValue)||(e=U(d.$viewValue),d.$render())});c.bind("change",function(){a.$apply(function(){var a=[];m(c.children(),
150
+ function(c){c.selected&&a.push(c.value)});d.$setViewValue(a)})})}function l(e,f,g){function h(){var a={"":[]},c=[""],d,i,t,u,s;t=g.$modelValue;u=r(e)||[];var y=l?mb(u):u,z,w,x;w={};s=!1;var C,A;if(o)s=new Fa(t);else if(t===null||q)a[""].push({selected:t===null,id:"",label:""}),s=!0;for(x=0;z=y.length,x<z;x++){w[k]=u[l?w[l]=y[x]:x];d=m(e,w)||"";if(!(i=a[d]))i=a[d]=[],c.push(d);o?d=s.remove(n(e,w))!=p:(d=t===n(e,w),s=s||d);i.push({id:l?y[x]:x,label:j(e,w)||"",selected:d})}!o&&!s&&a[""].unshift({id:"?",
151
+ label:"",selected:!0});w=0;for(y=c.length;w<y;w++){d=c[w];i=a[d];if(v.length<=w)t={element:B.clone().attr("label",d),label:i.label},u=[t],v.push(u),f.append(t.element);else if(u=v[w],t=u[0],t.label!=d)t.element.attr("label",t.label=d);C=null;x=0;for(z=i.length;x<z;x++)if(d=i[x],s=u[x+1]){C=s.element;if(s.label!==d.label)C.text(s.label=d.label);if(s.id!==d.id)C.val(s.id=d.id);if(s.element.selected!==d.selected)C.prop("selected",s.selected=d.selected)}else d.id===""&&q?A=q:(A=D.clone()).val(d.id).attr("selected",
152
+ d.selected).text(d.label),u.push({element:A,label:d.label,id:d.id,selected:d.selected}),C?C.after(A):t.element.append(A),C=A;for(x++;u.length>x;)u.pop().element.remove()}for(;v.length>w;)v.pop()[0].element.remove()}var i;if(!(i=w.match(d)))throw A("Expected ngOptions in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '"+w+"'.");var j=c(i[2]||i[1]),k=i[4]||i[6],l=i[5],m=c(i[3]||""),n=c(i[2]?i[1]:k),r=c(i[7]),v=[[{element:f,label:""}]];q&&(a(q)(e),q.removeClass("ng-scope"),
153
+ q.remove());f.html("");f.bind("change",function(){e.$apply(function(){var a,c=r(e)||[],d={},h,i,j,m,q,s;if(o){i=[];m=0;for(s=v.length;m<s;m++){a=v[m];j=1;for(q=a.length;j<q;j++)if((h=a[j].element)[0].selected)h=h.val(),l&&(d[l]=h),d[k]=c[h],i.push(n(e,d))}}else h=f.val(),h=="?"?i=p:h==""?i=null:(d[k]=c[h],l&&(d[l]=h),i=n(e,d));g.$setViewValue(i)})});g.$render=h;e.$watch(h)}if(h[1]){for(var n=h[0],r=h[1],o=f.multiple,w=f.ngOptions,q=!1,v,D=y(ba.createElement("option")),B=y(ba.createElement("optgroup")),
154
+ z=D.clone(),h=0,x=i.children(),E=x.length;h<E;h++)if(x[h].value==""){v=q=x.eq(h);break}n.init(r,q,z);if(o&&(f.required||f.ngRequired)){var s=function(a){r.$setValidity("required",!f.required||a&&a.length);return a};r.$parsers.push(s);r.$formatters.unshift(s);f.$observe("required",function(){s(r.$viewValue)})}w?l(e,i,r):o?j(e,i,r):k(e,i,r,n)}}}}],Vd=["$interpolate",function(a){var c={addOption:D,removeOption:D};return{restrict:"E",priority:100,compile:function(d,e){if(t(e.value)){var g=a(d.text(),
155
+ !0);g||e.$set("value",d.text())}return function(a,d,e){var k=d.parent(),j=k.data("$selectController")||k.parent().data("$selectController");j&&j.databound?d.prop("selected",!1):j=c;g?a.$watch(g,function(a,c){e.$set("value",a);a!==c&&j.removeOption(c);j.addOption(a)}):j.addOption(e.value);d.bind("$destroy",function(){j.removeOption(e.value)})}}}}],Wd=J({restrict:"E",terminal:!0});(ia=T.jQuery)?(y=ia,x(ia.fn,{scope:ua.scope,controller:ua.controller,injector:ua.injector,inheritedData:ua.inheritedData}),
156
+ bb("remove",!0),bb("empty"),bb("html")):y=P;Zb.element=y;(function(a){x(a,{bootstrap:qb,copy:U,extend:x,equals:ga,element:y,forEach:m,injector:rb,noop:D,bind:Wa,toJson:ca,fromJson:ob,identity:ma,isUndefined:t,isDefined:u,isString:F,isFunction:M,isObject:I,isNumber:wa,isElement:gc,isArray:K,version:id,isDate:na,lowercase:E,uppercase:la,callbacks:{counter:0}});ta=mc(T);try{ta("ngLocale")}catch(c){ta("ngLocale",[]).provider("$locale",Zc)}ta("ng",["ngLocale"],["$provide",function(a){a.provider("$compile",
157
+ Cb).directive({a:jd,input:cc,textarea:cc,form:kd,script:Sd,select:Ud,style:Wd,option:Vd,ngBind:vd,ngBindHtmlUnsafe:xd,ngBindTemplate:wd,ngClass:yd,ngClassEven:Ad,ngClassOdd:zd,ngCsp:Dd,ngCloak:Bd,ngController:Cd,ngForm:ld,ngHide:Ld,ngInclude:Fd,ngInit:Gd,ngNonBindable:Hd,ngPluralize:Id,ngRepeat:Jd,ngShow:Kd,ngSubmit:Ed,ngStyle:Md,ngSwitch:Nd,ngSwitchWhen:Od,ngSwitchDefault:Pd,ngOptions:Td,ngView:Rd,ngTransclude:Qd,ngModel:qd,ngList:sd,ngChange:rd,required:dc,ngRequired:dc,ngValue:ud}).directive(lb).directive(ec);
158
+ a.provider({$anchorScroll:vc,$browser:xc,$cacheFactory:yc,$controller:Bc,$document:Cc,$exceptionHandler:Dc,$filter:Qb,$interpolate:Ec,$http:Vc,$httpBackend:Wc,$location:Ic,$log:Jc,$parse:Nc,$route:Qc,$routeParams:Rc,$rootScope:Sc,$q:Oc,$sniffer:Tc,$templateCache:zc,$timeout:$c,$window:Uc})}])})(Zb);y(ba).ready(function(){kc(ba,qb)})})(window,document);angular.element(document).find("head").append('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak{display:none;}ng\\:form{display:block;}</style>');
@@ -0,0 +1,2027 @@
1
+ /* ===================================================
2
+ * bootstrap-transition.js v2.1.1
3
+ * http://twitter.github.com/bootstrap/javascript.html#transitions
4
+ * ===================================================
5
+ * Copyright 2012 Twitter, Inc.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ * ========================================================== */
19
+
20
+
21
+ !function ($) {
22
+
23
+ $(function () {
24
+
25
+ "use strict"; // jshint ;_;
26
+
27
+
28
+ /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
29
+ * ======================================================= */
30
+
31
+ $.support.transition = (function () {
32
+
33
+ var transitionEnd = (function () {
34
+
35
+ var el = document.createElement('bootstrap')
36
+ , transEndEventNames = {
37
+ 'WebkitTransition' : 'webkitTransitionEnd'
38
+ , 'MozTransition' : 'transitionend'
39
+ , 'OTransition' : 'oTransitionEnd otransitionend'
40
+ , 'transition' : 'transitionend'
41
+ }
42
+ , name
43
+
44
+ for (name in transEndEventNames){
45
+ if (el.style[name] !== undefined) {
46
+ return transEndEventNames[name]
47
+ }
48
+ }
49
+
50
+ }())
51
+
52
+ return transitionEnd && {
53
+ end: transitionEnd
54
+ }
55
+
56
+ })()
57
+
58
+ })
59
+
60
+ }(window.jQuery);/* ==========================================================
61
+ * bootstrap-alert.js v2.1.1
62
+ * http://twitter.github.com/bootstrap/javascript.html#alerts
63
+ * ==========================================================
64
+ * Copyright 2012 Twitter, Inc.
65
+ *
66
+ * Licensed under the Apache License, Version 2.0 (the "License");
67
+ * you may not use this file except in compliance with the License.
68
+ * You may obtain a copy of the License at
69
+ *
70
+ * http://www.apache.org/licenses/LICENSE-2.0
71
+ *
72
+ * Unless required by applicable law or agreed to in writing, software
73
+ * distributed under the License is distributed on an "AS IS" BASIS,
74
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
75
+ * See the License for the specific language governing permissions and
76
+ * limitations under the License.
77
+ * ========================================================== */
78
+
79
+
80
+ !function ($) {
81
+
82
+ "use strict"; // jshint ;_;
83
+
84
+
85
+ /* ALERT CLASS DEFINITION
86
+ * ====================== */
87
+
88
+ var dismiss = '[data-dismiss="alert"]'
89
+ , Alert = function (el) {
90
+ $(el).on('click', dismiss, this.close)
91
+ }
92
+
93
+ Alert.prototype.close = function (e) {
94
+ var $this = $(this)
95
+ , selector = $this.attr('data-target')
96
+ , $parent
97
+
98
+ if (!selector) {
99
+ selector = $this.attr('href')
100
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
101
+ }
102
+
103
+ $parent = $(selector)
104
+
105
+ e && e.preventDefault()
106
+
107
+ $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
108
+
109
+ $parent.trigger(e = $.Event('close'))
110
+
111
+ if (e.isDefaultPrevented()) return
112
+
113
+ $parent.removeClass('in')
114
+
115
+ function removeElement() {
116
+ $parent
117
+ .trigger('closed')
118
+ .remove()
119
+ }
120
+
121
+ $.support.transition && $parent.hasClass('fade') ?
122
+ $parent.on($.support.transition.end, removeElement) :
123
+ removeElement()
124
+ }
125
+
126
+
127
+ /* ALERT PLUGIN DEFINITION
128
+ * ======================= */
129
+
130
+ $.fn.alert = function (option) {
131
+ return this.each(function () {
132
+ var $this = $(this)
133
+ , data = $this.data('alert')
134
+ if (!data) $this.data('alert', (data = new Alert(this)))
135
+ if (typeof option == 'string') data[option].call($this)
136
+ })
137
+ }
138
+
139
+ $.fn.alert.Constructor = Alert
140
+
141
+
142
+ /* ALERT DATA-API
143
+ * ============== */
144
+
145
+ $(function () {
146
+ $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
147
+ })
148
+
149
+ }(window.jQuery);/* ============================================================
150
+ * bootstrap-button.js v2.1.1
151
+ * http://twitter.github.com/bootstrap/javascript.html#buttons
152
+ * ============================================================
153
+ * Copyright 2012 Twitter, Inc.
154
+ *
155
+ * Licensed under the Apache License, Version 2.0 (the "License");
156
+ * you may not use this file except in compliance with the License.
157
+ * You may obtain a copy of the License at
158
+ *
159
+ * http://www.apache.org/licenses/LICENSE-2.0
160
+ *
161
+ * Unless required by applicable law or agreed to in writing, software
162
+ * distributed under the License is distributed on an "AS IS" BASIS,
163
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
164
+ * See the License for the specific language governing permissions and
165
+ * limitations under the License.
166
+ * ============================================================ */
167
+
168
+
169
+ !function ($) {
170
+
171
+ "use strict"; // jshint ;_;
172
+
173
+
174
+ /* BUTTON PUBLIC CLASS DEFINITION
175
+ * ============================== */
176
+
177
+ var Button = function (element, options) {
178
+ this.$element = $(element)
179
+ this.options = $.extend({}, $.fn.button.defaults, options)
180
+ }
181
+
182
+ Button.prototype.setState = function (state) {
183
+ var d = 'disabled'
184
+ , $el = this.$element
185
+ , data = $el.data()
186
+ , val = $el.is('input') ? 'val' : 'html'
187
+
188
+ state = state + 'Text'
189
+ data.resetText || $el.data('resetText', $el[val]())
190
+
191
+ $el[val](data[state] || this.options[state])
192
+
193
+ // push to event loop to allow forms to submit
194
+ setTimeout(function () {
195
+ state == 'loadingText' ?
196
+ $el.addClass(d).attr(d, d) :
197
+ $el.removeClass(d).removeAttr(d)
198
+ }, 0)
199
+ }
200
+
201
+ Button.prototype.toggle = function () {
202
+ var $parent = this.$element.closest('[data-toggle="buttons-radio"]')
203
+
204
+ $parent && $parent
205
+ .find('.active')
206
+ .removeClass('active')
207
+
208
+ this.$element.toggleClass('active')
209
+ }
210
+
211
+
212
+ /* BUTTON PLUGIN DEFINITION
213
+ * ======================== */
214
+
215
+ $.fn.button = function (option) {
216
+ return this.each(function () {
217
+ var $this = $(this)
218
+ , data = $this.data('button')
219
+ , options = typeof option == 'object' && option
220
+ if (!data) $this.data('button', (data = new Button(this, options)))
221
+ if (option == 'toggle') data.toggle()
222
+ else if (option) data.setState(option)
223
+ })
224
+ }
225
+
226
+ $.fn.button.defaults = {
227
+ loadingText: 'loading...'
228
+ }
229
+
230
+ $.fn.button.Constructor = Button
231
+
232
+
233
+ /* BUTTON DATA-API
234
+ * =============== */
235
+
236
+ $(function () {
237
+ $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
238
+ var $btn = $(e.target)
239
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
240
+ $btn.button('toggle')
241
+ })
242
+ })
243
+
244
+ }(window.jQuery);/* ==========================================================
245
+ * bootstrap-carousel.js v2.1.1
246
+ * http://twitter.github.com/bootstrap/javascript.html#carousel
247
+ * ==========================================================
248
+ * Copyright 2012 Twitter, Inc.
249
+ *
250
+ * Licensed under the Apache License, Version 2.0 (the "License");
251
+ * you may not use this file except in compliance with the License.
252
+ * You may obtain a copy of the License at
253
+ *
254
+ * http://www.apache.org/licenses/LICENSE-2.0
255
+ *
256
+ * Unless required by applicable law or agreed to in writing, software
257
+ * distributed under the License is distributed on an "AS IS" BASIS,
258
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
259
+ * See the License for the specific language governing permissions and
260
+ * limitations under the License.
261
+ * ========================================================== */
262
+
263
+
264
+ !function ($) {
265
+
266
+ "use strict"; // jshint ;_;
267
+
268
+
269
+ /* CAROUSEL CLASS DEFINITION
270
+ * ========================= */
271
+
272
+ var Carousel = function (element, options) {
273
+ this.$element = $(element)
274
+ this.options = options
275
+ this.options.slide && this.slide(this.options.slide)
276
+ this.options.pause == 'hover' && this.$element
277
+ .on('mouseenter', $.proxy(this.pause, this))
278
+ .on('mouseleave', $.proxy(this.cycle, this))
279
+ }
280
+
281
+ Carousel.prototype = {
282
+
283
+ cycle: function (e) {
284
+ if (!e) this.paused = false
285
+ this.options.interval
286
+ && !this.paused
287
+ && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
288
+ return this
289
+ }
290
+
291
+ , to: function (pos) {
292
+ var $active = this.$element.find('.item.active')
293
+ , children = $active.parent().children()
294
+ , activePos = children.index($active)
295
+ , that = this
296
+
297
+ if (pos > (children.length - 1) || pos < 0) return
298
+
299
+ if (this.sliding) {
300
+ return this.$element.one('slid', function () {
301
+ that.to(pos)
302
+ })
303
+ }
304
+
305
+ if (activePos == pos) {
306
+ return this.pause().cycle()
307
+ }
308
+
309
+ return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
310
+ }
311
+
312
+ , pause: function (e) {
313
+ if (!e) this.paused = true
314
+ if (this.$element.find('.next, .prev').length && $.support.transition.end) {
315
+ this.$element.trigger($.support.transition.end)
316
+ this.cycle()
317
+ }
318
+ clearInterval(this.interval)
319
+ this.interval = null
320
+ return this
321
+ }
322
+
323
+ , next: function () {
324
+ if (this.sliding) return
325
+ return this.slide('next')
326
+ }
327
+
328
+ , prev: function () {
329
+ if (this.sliding) return
330
+ return this.slide('prev')
331
+ }
332
+
333
+ , slide: function (type, next) {
334
+ var $active = this.$element.find('.item.active')
335
+ , $next = next || $active[type]()
336
+ , isCycling = this.interval
337
+ , direction = type == 'next' ? 'left' : 'right'
338
+ , fallback = type == 'next' ? 'first' : 'last'
339
+ , that = this
340
+ , e = $.Event('slide', {
341
+ relatedTarget: $next[0]
342
+ })
343
+
344
+ this.sliding = true
345
+
346
+ isCycling && this.pause()
347
+
348
+ $next = $next.length ? $next : this.$element.find('.item')[fallback]()
349
+
350
+ if ($next.hasClass('active')) return
351
+
352
+ if ($.support.transition && this.$element.hasClass('slide')) {
353
+ this.$element.trigger(e)
354
+ if (e.isDefaultPrevented()) return
355
+ $next.addClass(type)
356
+ $next[0].offsetWidth // force reflow
357
+ $active.addClass(direction)
358
+ $next.addClass(direction)
359
+ this.$element.one($.support.transition.end, function () {
360
+ $next.removeClass([type, direction].join(' ')).addClass('active')
361
+ $active.removeClass(['active', direction].join(' '))
362
+ that.sliding = false
363
+ setTimeout(function () { that.$element.trigger('slid') }, 0)
364
+ })
365
+ } else {
366
+ this.$element.trigger(e)
367
+ if (e.isDefaultPrevented()) return
368
+ $active.removeClass('active')
369
+ $next.addClass('active')
370
+ this.sliding = false
371
+ this.$element.trigger('slid')
372
+ }
373
+
374
+ isCycling && this.cycle()
375
+
376
+ return this
377
+ }
378
+
379
+ }
380
+
381
+
382
+ /* CAROUSEL PLUGIN DEFINITION
383
+ * ========================== */
384
+
385
+ $.fn.carousel = function (option) {
386
+ return this.each(function () {
387
+ var $this = $(this)
388
+ , data = $this.data('carousel')
389
+ , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
390
+ , action = typeof option == 'string' ? option : options.slide
391
+ if (!data) $this.data('carousel', (data = new Carousel(this, options)))
392
+ if (typeof option == 'number') data.to(option)
393
+ else if (action) data[action]()
394
+ else if (options.interval) data.cycle()
395
+ })
396
+ }
397
+
398
+ $.fn.carousel.defaults = {
399
+ interval: 5000
400
+ , pause: 'hover'
401
+ }
402
+
403
+ $.fn.carousel.Constructor = Carousel
404
+
405
+
406
+ /* CAROUSEL DATA-API
407
+ * ================= */
408
+
409
+ $(function () {
410
+ $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
411
+ var $this = $(this), href
412
+ , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
413
+ , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
414
+ $target.carousel(options)
415
+ e.preventDefault()
416
+ })
417
+ })
418
+
419
+ }(window.jQuery);/* =============================================================
420
+ * bootstrap-collapse.js v2.1.1
421
+ * http://twitter.github.com/bootstrap/javascript.html#collapse
422
+ * =============================================================
423
+ * Copyright 2012 Twitter, Inc.
424
+ *
425
+ * Licensed under the Apache License, Version 2.0 (the "License");
426
+ * you may not use this file except in compliance with the License.
427
+ * You may obtain a copy of the License at
428
+ *
429
+ * http://www.apache.org/licenses/LICENSE-2.0
430
+ *
431
+ * Unless required by applicable law or agreed to in writing, software
432
+ * distributed under the License is distributed on an "AS IS" BASIS,
433
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
434
+ * See the License for the specific language governing permissions and
435
+ * limitations under the License.
436
+ * ============================================================ */
437
+
438
+
439
+ !function ($) {
440
+
441
+ "use strict"; // jshint ;_;
442
+
443
+
444
+ /* COLLAPSE PUBLIC CLASS DEFINITION
445
+ * ================================ */
446
+
447
+ var Collapse = function (element, options) {
448
+ this.$element = $(element)
449
+ this.options = $.extend({}, $.fn.collapse.defaults, options)
450
+
451
+ if (this.options.parent) {
452
+ this.$parent = $(this.options.parent)
453
+ }
454
+
455
+ this.options.toggle && this.toggle()
456
+ }
457
+
458
+ Collapse.prototype = {
459
+
460
+ constructor: Collapse
461
+
462
+ , dimension: function () {
463
+ var hasWidth = this.$element.hasClass('width')
464
+ return hasWidth ? 'width' : 'height'
465
+ }
466
+
467
+ , show: function () {
468
+ var dimension
469
+ , scroll
470
+ , actives
471
+ , hasData
472
+
473
+ if (this.transitioning) return
474
+
475
+ dimension = this.dimension()
476
+ scroll = $.camelCase(['scroll', dimension].join('-'))
477
+ actives = this.$parent && this.$parent.find('> .accordion-group > .in')
478
+
479
+ if (actives && actives.length) {
480
+ hasData = actives.data('collapse')
481
+ if (hasData && hasData.transitioning) return
482
+ actives.collapse('hide')
483
+ hasData || actives.data('collapse', null)
484
+ }
485
+
486
+ this.$element[dimension](0)
487
+ this.transition('addClass', $.Event('show'), 'shown')
488
+ $.support.transition && this.$element[dimension](this.$element[0][scroll])
489
+ }
490
+
491
+ , hide: function () {
492
+ var dimension
493
+ if (this.transitioning) return
494
+ dimension = this.dimension()
495
+ this.reset(this.$element[dimension]())
496
+ this.transition('removeClass', $.Event('hide'), 'hidden')
497
+ this.$element[dimension](0)
498
+ }
499
+
500
+ , reset: function (size) {
501
+ var dimension = this.dimension()
502
+
503
+ this.$element
504
+ .removeClass('collapse')
505
+ [dimension](size || 'auto')
506
+ [0].offsetWidth
507
+
508
+ this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
509
+
510
+ return this
511
+ }
512
+
513
+ , transition: function (method, startEvent, completeEvent) {
514
+ var that = this
515
+ , complete = function () {
516
+ if (startEvent.type == 'show') that.reset()
517
+ that.transitioning = 0
518
+ that.$element.trigger(completeEvent)
519
+ }
520
+
521
+ this.$element.trigger(startEvent)
522
+
523
+ if (startEvent.isDefaultPrevented()) return
524
+
525
+ this.transitioning = 1
526
+
527
+ this.$element[method]('in')
528
+
529
+ $.support.transition && this.$element.hasClass('collapse') ?
530
+ this.$element.one($.support.transition.end, complete) :
531
+ complete()
532
+ }
533
+
534
+ , toggle: function () {
535
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
536
+ }
537
+
538
+ }
539
+
540
+
541
+ /* COLLAPSIBLE PLUGIN DEFINITION
542
+ * ============================== */
543
+
544
+ $.fn.collapse = function (option) {
545
+ return this.each(function () {
546
+ var $this = $(this)
547
+ , data = $this.data('collapse')
548
+ , options = typeof option == 'object' && option
549
+ if (!data) $this.data('collapse', (data = new Collapse(this, options)))
550
+ if (typeof option == 'string') data[option]()
551
+ })
552
+ }
553
+
554
+ $.fn.collapse.defaults = {
555
+ toggle: true
556
+ }
557
+
558
+ $.fn.collapse.Constructor = Collapse
559
+
560
+
561
+ /* COLLAPSIBLE DATA-API
562
+ * ==================== */
563
+
564
+ $(function () {
565
+ $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
566
+ var $this = $(this), href
567
+ , target = $this.attr('data-target')
568
+ || e.preventDefault()
569
+ || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
570
+ , option = $(target).data('collapse') ? 'toggle' : $this.data()
571
+ $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
572
+ $(target).collapse(option)
573
+ })
574
+ })
575
+
576
+ }(window.jQuery);/* ============================================================
577
+ * bootstrap-dropdown.js v2.1.1
578
+ * http://twitter.github.com/bootstrap/javascript.html#dropdowns
579
+ * ============================================================
580
+ * Copyright 2012 Twitter, Inc.
581
+ *
582
+ * Licensed under the Apache License, Version 2.0 (the "License");
583
+ * you may not use this file except in compliance with the License.
584
+ * You may obtain a copy of the License at
585
+ *
586
+ * http://www.apache.org/licenses/LICENSE-2.0
587
+ *
588
+ * Unless required by applicable law or agreed to in writing, software
589
+ * distributed under the License is distributed on an "AS IS" BASIS,
590
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
591
+ * See the License for the specific language governing permissions and
592
+ * limitations under the License.
593
+ * ============================================================ */
594
+
595
+
596
+ !function ($) {
597
+
598
+ "use strict"; // jshint ;_;
599
+
600
+
601
+ /* DROPDOWN CLASS DEFINITION
602
+ * ========================= */
603
+
604
+ var toggle = '[data-toggle=dropdown]'
605
+ , Dropdown = function (element) {
606
+ var $el = $(element).on('click.dropdown.data-api', this.toggle)
607
+ $('html').on('click.dropdown.data-api', function () {
608
+ $el.parent().removeClass('open')
609
+ })
610
+ }
611
+
612
+ Dropdown.prototype = {
613
+
614
+ constructor: Dropdown
615
+
616
+ , toggle: function (e) {
617
+ var $this = $(this)
618
+ , $parent
619
+ , isActive
620
+
621
+ if ($this.is('.disabled, :disabled')) return
622
+
623
+ $parent = getParent($this)
624
+
625
+ isActive = $parent.hasClass('open')
626
+
627
+ clearMenus()
628
+
629
+ if (!isActive) {
630
+ $parent.toggleClass('open')
631
+ $this.focus()
632
+ }
633
+
634
+ return false
635
+ }
636
+
637
+ , keydown: function (e) {
638
+ var $this
639
+ , $items
640
+ , $active
641
+ , $parent
642
+ , isActive
643
+ , index
644
+
645
+ if (!/(38|40|27)/.test(e.keyCode)) return
646
+
647
+ $this = $(this)
648
+
649
+ e.preventDefault()
650
+ e.stopPropagation()
651
+
652
+ if ($this.is('.disabled, :disabled')) return
653
+
654
+ $parent = getParent($this)
655
+
656
+ isActive = $parent.hasClass('open')
657
+
658
+ if (!isActive || (isActive && e.keyCode == 27)) return $this.click()
659
+
660
+ $items = $('[role=menu] li:not(.divider) a', $parent)
661
+
662
+ if (!$items.length) return
663
+
664
+ index = $items.index($items.filter(':focus'))
665
+
666
+ if (e.keyCode == 38 && index > 0) index-- // up
667
+ if (e.keyCode == 40 && index < $items.length - 1) index++ // down
668
+ if (!~index) index = 0
669
+
670
+ $items
671
+ .eq(index)
672
+ .focus()
673
+ }
674
+
675
+ }
676
+
677
+ function clearMenus() {
678
+ getParent($(toggle))
679
+ .removeClass('open')
680
+ }
681
+
682
+ function getParent($this) {
683
+ var selector = $this.attr('data-target')
684
+ , $parent
685
+
686
+ if (!selector) {
687
+ selector = $this.attr('href')
688
+ selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
689
+ }
690
+
691
+ $parent = $(selector)
692
+ $parent.length || ($parent = $this.parent())
693
+
694
+ return $parent
695
+ }
696
+
697
+
698
+ /* DROPDOWN PLUGIN DEFINITION
699
+ * ========================== */
700
+
701
+ $.fn.dropdown = function (option) {
702
+ return this.each(function () {
703
+ var $this = $(this)
704
+ , data = $this.data('dropdown')
705
+ if (!data) $this.data('dropdown', (data = new Dropdown(this)))
706
+ if (typeof option == 'string') data[option].call($this)
707
+ })
708
+ }
709
+
710
+ $.fn.dropdown.Constructor = Dropdown
711
+
712
+
713
+ /* APPLY TO STANDARD DROPDOWN ELEMENTS
714
+ * =================================== */
715
+
716
+ $(function () {
717
+ $('html')
718
+ .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
719
+ $('body')
720
+ .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
721
+ .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
722
+ .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
723
+ })
724
+
725
+ }(window.jQuery);/* =========================================================
726
+ * bootstrap-modal.js v2.1.1
727
+ * http://twitter.github.com/bootstrap/javascript.html#modals
728
+ * =========================================================
729
+ * Copyright 2012 Twitter, Inc.
730
+ *
731
+ * Licensed under the Apache License, Version 2.0 (the "License");
732
+ * you may not use this file except in compliance with the License.
733
+ * You may obtain a copy of the License at
734
+ *
735
+ * http://www.apache.org/licenses/LICENSE-2.0
736
+ *
737
+ * Unless required by applicable law or agreed to in writing, software
738
+ * distributed under the License is distributed on an "AS IS" BASIS,
739
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
740
+ * See the License for the specific language governing permissions and
741
+ * limitations under the License.
742
+ * ========================================================= */
743
+
744
+
745
+ !function ($) {
746
+
747
+ "use strict"; // jshint ;_;
748
+
749
+
750
+ /* MODAL CLASS DEFINITION
751
+ * ====================== */
752
+
753
+ var Modal = function (element, options) {
754
+ this.options = options
755
+ this.$element = $(element)
756
+ .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
757
+ this.options.remote && this.$element.find('.modal-body').load(this.options.remote)
758
+ }
759
+
760
+ Modal.prototype = {
761
+
762
+ constructor: Modal
763
+
764
+ , toggle: function () {
765
+ return this[!this.isShown ? 'show' : 'hide']()
766
+ }
767
+
768
+ , show: function () {
769
+ var that = this
770
+ , e = $.Event('show')
771
+
772
+ this.$element.trigger(e)
773
+
774
+ if (this.isShown || e.isDefaultPrevented()) return
775
+
776
+ $('body').addClass('modal-open')
777
+
778
+ this.isShown = true
779
+
780
+ this.escape()
781
+
782
+ this.backdrop(function () {
783
+ var transition = $.support.transition && that.$element.hasClass('fade')
784
+
785
+ if (!that.$element.parent().length) {
786
+ that.$element.appendTo(document.body) //don't move modals dom position
787
+ }
788
+
789
+ that.$element
790
+ .show()
791
+
792
+ if (transition) {
793
+ that.$element[0].offsetWidth // force reflow
794
+ }
795
+
796
+ that.$element
797
+ .addClass('in')
798
+ .attr('aria-hidden', false)
799
+ .focus()
800
+
801
+ that.enforceFocus()
802
+
803
+ transition ?
804
+ that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
805
+ that.$element.trigger('shown')
806
+
807
+ })
808
+ }
809
+
810
+ , hide: function (e) {
811
+ e && e.preventDefault()
812
+
813
+ var that = this
814
+
815
+ e = $.Event('hide')
816
+
817
+ this.$element.trigger(e)
818
+
819
+ if (!this.isShown || e.isDefaultPrevented()) return
820
+
821
+ this.isShown = false
822
+
823
+ $('body').removeClass('modal-open')
824
+
825
+ this.escape()
826
+
827
+ $(document).off('focusin.modal')
828
+
829
+ this.$element
830
+ .removeClass('in')
831
+ .attr('aria-hidden', true)
832
+
833
+ $.support.transition && this.$element.hasClass('fade') ?
834
+ this.hideWithTransition() :
835
+ this.hideModal()
836
+ }
837
+
838
+ , enforceFocus: function () {
839
+ var that = this
840
+ $(document).on('focusin.modal', function (e) {
841
+ if (that.$element[0] !== e.target && !that.$element.has(e.target).length) {
842
+ that.$element.focus()
843
+ }
844
+ })
845
+ }
846
+
847
+ , escape: function () {
848
+ var that = this
849
+ if (this.isShown && this.options.keyboard) {
850
+ this.$element.on('keyup.dismiss.modal', function ( e ) {
851
+ e.which == 27 && that.hide()
852
+ })
853
+ } else if (!this.isShown) {
854
+ this.$element.off('keyup.dismiss.modal')
855
+ }
856
+ }
857
+
858
+ , hideWithTransition: function () {
859
+ var that = this
860
+ , timeout = setTimeout(function () {
861
+ that.$element.off($.support.transition.end)
862
+ that.hideModal()
863
+ }, 500)
864
+
865
+ this.$element.one($.support.transition.end, function () {
866
+ clearTimeout(timeout)
867
+ that.hideModal()
868
+ })
869
+ }
870
+
871
+ , hideModal: function (that) {
872
+ this.$element
873
+ .hide()
874
+ .trigger('hidden')
875
+
876
+ this.backdrop()
877
+ }
878
+
879
+ , removeBackdrop: function () {
880
+ this.$backdrop.remove()
881
+ this.$backdrop = null
882
+ }
883
+
884
+ , backdrop: function (callback) {
885
+ var that = this
886
+ , animate = this.$element.hasClass('fade') ? 'fade' : ''
887
+
888
+ if (this.isShown && this.options.backdrop) {
889
+ var doAnimate = $.support.transition && animate
890
+
891
+ this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
892
+ .appendTo(document.body)
893
+
894
+ if (this.options.backdrop != 'static') {
895
+ this.$backdrop.click($.proxy(this.hide, this))
896
+ }
897
+
898
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
899
+
900
+ this.$backdrop.addClass('in')
901
+
902
+ doAnimate ?
903
+ this.$backdrop.one($.support.transition.end, callback) :
904
+ callback()
905
+
906
+ } else if (!this.isShown && this.$backdrop) {
907
+ this.$backdrop.removeClass('in')
908
+
909
+ $.support.transition && this.$element.hasClass('fade')?
910
+ this.$backdrop.one($.support.transition.end, $.proxy(this.removeBackdrop, this)) :
911
+ this.removeBackdrop()
912
+
913
+ } else if (callback) {
914
+ callback()
915
+ }
916
+ }
917
+ }
918
+
919
+
920
+ /* MODAL PLUGIN DEFINITION
921
+ * ======================= */
922
+
923
+ $.fn.modal = function (option) {
924
+ return this.each(function () {
925
+ var $this = $(this)
926
+ , data = $this.data('modal')
927
+ , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
928
+ if (!data) $this.data('modal', (data = new Modal(this, options)))
929
+ if (typeof option == 'string') data[option]()
930
+ else if (options.show) data.show()
931
+ })
932
+ }
933
+
934
+ $.fn.modal.defaults = {
935
+ backdrop: true
936
+ , keyboard: true
937
+ , show: true
938
+ }
939
+
940
+ $.fn.modal.Constructor = Modal
941
+
942
+
943
+ /* MODAL DATA-API
944
+ * ============== */
945
+
946
+ $(function () {
947
+ $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
948
+ var $this = $(this)
949
+ , href = $this.attr('href')
950
+ , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
951
+ , option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
952
+
953
+ e.preventDefault()
954
+
955
+ $target
956
+ .modal(option)
957
+ .one('hide', function () {
958
+ $this.focus()
959
+ })
960
+ })
961
+ })
962
+
963
+ }(window.jQuery);/* ===========================================================
964
+ * bootstrap-tooltip.js v2.1.1
965
+ * http://twitter.github.com/bootstrap/javascript.html#tooltips
966
+ * Inspired by the original jQuery.tipsy by Jason Frame
967
+ * ===========================================================
968
+ * Copyright 2012 Twitter, Inc.
969
+ *
970
+ * Licensed under the Apache License, Version 2.0 (the "License");
971
+ * you may not use this file except in compliance with the License.
972
+ * You may obtain a copy of the License at
973
+ *
974
+ * http://www.apache.org/licenses/LICENSE-2.0
975
+ *
976
+ * Unless required by applicable law or agreed to in writing, software
977
+ * distributed under the License is distributed on an "AS IS" BASIS,
978
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
979
+ * See the License for the specific language governing permissions and
980
+ * limitations under the License.
981
+ * ========================================================== */
982
+
983
+
984
+ !function ($) {
985
+
986
+ "use strict"; // jshint ;_;
987
+
988
+
989
+ /* TOOLTIP PUBLIC CLASS DEFINITION
990
+ * =============================== */
991
+
992
+ var Tooltip = function (element, options) {
993
+ this.init('tooltip', element, options)
994
+ }
995
+
996
+ Tooltip.prototype = {
997
+
998
+ constructor: Tooltip
999
+
1000
+ , init: function (type, element, options) {
1001
+ var eventIn
1002
+ , eventOut
1003
+
1004
+ this.type = type
1005
+ this.$element = $(element)
1006
+ this.options = this.getOptions(options)
1007
+ this.enabled = true
1008
+
1009
+ if (this.options.trigger == 'click') {
1010
+ this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
1011
+ } else if (this.options.trigger != 'manual') {
1012
+ eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
1013
+ eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
1014
+ this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
1015
+ this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
1016
+ }
1017
+
1018
+ this.options.selector ?
1019
+ (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
1020
+ this.fixTitle()
1021
+ }
1022
+
1023
+ , getOptions: function (options) {
1024
+ options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
1025
+
1026
+ if (options.delay && typeof options.delay == 'number') {
1027
+ options.delay = {
1028
+ show: options.delay
1029
+ , hide: options.delay
1030
+ }
1031
+ }
1032
+
1033
+ return options
1034
+ }
1035
+
1036
+ , enter: function (e) {
1037
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
1038
+
1039
+ if (!self.options.delay || !self.options.delay.show) return self.show()
1040
+
1041
+ clearTimeout(this.timeout)
1042
+ self.hoverState = 'in'
1043
+ this.timeout = setTimeout(function() {
1044
+ if (self.hoverState == 'in') self.show()
1045
+ }, self.options.delay.show)
1046
+ }
1047
+
1048
+ , leave: function (e) {
1049
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
1050
+
1051
+ if (this.timeout) clearTimeout(this.timeout)
1052
+ if (!self.options.delay || !self.options.delay.hide) return self.hide()
1053
+
1054
+ self.hoverState = 'out'
1055
+ this.timeout = setTimeout(function() {
1056
+ if (self.hoverState == 'out') self.hide()
1057
+ }, self.options.delay.hide)
1058
+ }
1059
+
1060
+ , show: function () {
1061
+ var $tip
1062
+ , inside
1063
+ , pos
1064
+ , actualWidth
1065
+ , actualHeight
1066
+ , placement
1067
+ , tp
1068
+
1069
+ if (this.hasContent() && this.enabled) {
1070
+ $tip = this.tip()
1071
+ this.setContent()
1072
+
1073
+ if (this.options.animation) {
1074
+ $tip.addClass('fade')
1075
+ }
1076
+
1077
+ placement = typeof this.options.placement == 'function' ?
1078
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
1079
+ this.options.placement
1080
+
1081
+ inside = /in/.test(placement)
1082
+
1083
+ $tip
1084
+ .remove()
1085
+ .css({ top: 0, left: 0, display: 'block' })
1086
+ .appendTo(inside ? this.$element : document.body)
1087
+
1088
+ pos = this.getPosition(inside)
1089
+
1090
+ actualWidth = $tip[0].offsetWidth
1091
+ actualHeight = $tip[0].offsetHeight
1092
+
1093
+ switch (inside ? placement.split(' ')[1] : placement) {
1094
+ case 'bottom':
1095
+ tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
1096
+ break
1097
+ case 'top':
1098
+ tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
1099
+ break
1100
+ case 'left':
1101
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
1102
+ break
1103
+ case 'right':
1104
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
1105
+ break
1106
+ }
1107
+
1108
+ $tip
1109
+ .css(tp)
1110
+ .addClass(placement)
1111
+ .addClass('in')
1112
+ }
1113
+ }
1114
+
1115
+ , setContent: function () {
1116
+ var $tip = this.tip()
1117
+ , title = this.getTitle()
1118
+
1119
+ $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
1120
+ $tip.removeClass('fade in top bottom left right')
1121
+ }
1122
+
1123
+ , hide: function () {
1124
+ var that = this
1125
+ , $tip = this.tip()
1126
+
1127
+ $tip.removeClass('in')
1128
+
1129
+ function removeWithAnimation() {
1130
+ var timeout = setTimeout(function () {
1131
+ $tip.off($.support.transition.end).remove()
1132
+ }, 500)
1133
+
1134
+ $tip.one($.support.transition.end, function () {
1135
+ clearTimeout(timeout)
1136
+ $tip.remove()
1137
+ })
1138
+ }
1139
+
1140
+ $.support.transition && this.$tip.hasClass('fade') ?
1141
+ removeWithAnimation() :
1142
+ $tip.remove()
1143
+
1144
+ return this
1145
+ }
1146
+
1147
+ , fixTitle: function () {
1148
+ var $e = this.$element
1149
+ if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
1150
+ $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
1151
+ }
1152
+ }
1153
+
1154
+ , hasContent: function () {
1155
+ return this.getTitle()
1156
+ }
1157
+
1158
+ , getPosition: function (inside) {
1159
+ return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
1160
+ width: this.$element[0].offsetWidth
1161
+ , height: this.$element[0].offsetHeight
1162
+ })
1163
+ }
1164
+
1165
+ , getTitle: function () {
1166
+ var title
1167
+ , $e = this.$element
1168
+ , o = this.options
1169
+
1170
+ title = $e.attr('data-original-title')
1171
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
1172
+
1173
+ return title
1174
+ }
1175
+
1176
+ , tip: function () {
1177
+ return this.$tip = this.$tip || $(this.options.template)
1178
+ }
1179
+
1180
+ , validate: function () {
1181
+ if (!this.$element[0].parentNode) {
1182
+ this.hide()
1183
+ this.$element = null
1184
+ this.options = null
1185
+ }
1186
+ }
1187
+
1188
+ , enable: function () {
1189
+ this.enabled = true
1190
+ }
1191
+
1192
+ , disable: function () {
1193
+ this.enabled = false
1194
+ }
1195
+
1196
+ , toggleEnabled: function () {
1197
+ this.enabled = !this.enabled
1198
+ }
1199
+
1200
+ , toggle: function () {
1201
+ this[this.tip().hasClass('in') ? 'hide' : 'show']()
1202
+ }
1203
+
1204
+ , destroy: function () {
1205
+ this.hide().$element.off('.' + this.type).removeData(this.type)
1206
+ }
1207
+
1208
+ }
1209
+
1210
+
1211
+ /* TOOLTIP PLUGIN DEFINITION
1212
+ * ========================= */
1213
+
1214
+ $.fn.tooltip = function ( option ) {
1215
+ return this.each(function () {
1216
+ var $this = $(this)
1217
+ , data = $this.data('tooltip')
1218
+ , options = typeof option == 'object' && option
1219
+ if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
1220
+ if (typeof option == 'string') data[option]()
1221
+ })
1222
+ }
1223
+
1224
+ $.fn.tooltip.Constructor = Tooltip
1225
+
1226
+ $.fn.tooltip.defaults = {
1227
+ animation: true
1228
+ , placement: 'top'
1229
+ , selector: false
1230
+ , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
1231
+ , trigger: 'hover'
1232
+ , title: ''
1233
+ , delay: 0
1234
+ , html: true
1235
+ }
1236
+
1237
+ }(window.jQuery);
1238
+ /* ===========================================================
1239
+ * bootstrap-popover.js v2.1.1
1240
+ * http://twitter.github.com/bootstrap/javascript.html#popovers
1241
+ * ===========================================================
1242
+ * Copyright 2012 Twitter, Inc.
1243
+ *
1244
+ * Licensed under the Apache License, Version 2.0 (the "License");
1245
+ * you may not use this file except in compliance with the License.
1246
+ * You may obtain a copy of the License at
1247
+ *
1248
+ * http://www.apache.org/licenses/LICENSE-2.0
1249
+ *
1250
+ * Unless required by applicable law or agreed to in writing, software
1251
+ * distributed under the License is distributed on an "AS IS" BASIS,
1252
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1253
+ * See the License for the specific language governing permissions and
1254
+ * limitations under the License.
1255
+ * =========================================================== */
1256
+
1257
+
1258
+ !function ($) {
1259
+
1260
+ "use strict"; // jshint ;_;
1261
+
1262
+
1263
+ /* POPOVER PUBLIC CLASS DEFINITION
1264
+ * =============================== */
1265
+
1266
+ var Popover = function (element, options) {
1267
+ this.init('popover', element, options)
1268
+ }
1269
+
1270
+
1271
+ /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
1272
+ ========================================== */
1273
+
1274
+ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
1275
+
1276
+ constructor: Popover
1277
+
1278
+ , setContent: function () {
1279
+ var $tip = this.tip()
1280
+ , title = this.getTitle()
1281
+ , content = this.getContent()
1282
+
1283
+ $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
1284
+ $tip.find('.popover-content > *')[this.options.html ? 'html' : 'text'](content)
1285
+
1286
+ $tip.removeClass('fade top bottom left right in')
1287
+ }
1288
+
1289
+ , hasContent: function () {
1290
+ return this.getTitle() || this.getContent()
1291
+ }
1292
+
1293
+ , getContent: function () {
1294
+ var content
1295
+ , $e = this.$element
1296
+ , o = this.options
1297
+
1298
+ content = $e.attr('data-content')
1299
+ || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
1300
+
1301
+ return content
1302
+ }
1303
+
1304
+ , tip: function () {
1305
+ if (!this.$tip) {
1306
+ this.$tip = $(this.options.template)
1307
+ }
1308
+ return this.$tip
1309
+ }
1310
+
1311
+ , destroy: function () {
1312
+ this.hide().$element.off('.' + this.type).removeData(this.type)
1313
+ }
1314
+
1315
+ })
1316
+
1317
+
1318
+ /* POPOVER PLUGIN DEFINITION
1319
+ * ======================= */
1320
+
1321
+ $.fn.popover = function (option) {
1322
+ return this.each(function () {
1323
+ var $this = $(this)
1324
+ , data = $this.data('popover')
1325
+ , options = typeof option == 'object' && option
1326
+ if (!data) $this.data('popover', (data = new Popover(this, options)))
1327
+ if (typeof option == 'string') data[option]()
1328
+ })
1329
+ }
1330
+
1331
+ $.fn.popover.Constructor = Popover
1332
+
1333
+ $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
1334
+ placement: 'right'
1335
+ , trigger: 'click'
1336
+ , content: ''
1337
+ , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
1338
+ })
1339
+
1340
+ }(window.jQuery);/* =============================================================
1341
+ * bootstrap-scrollspy.js v2.1.1
1342
+ * http://twitter.github.com/bootstrap/javascript.html#scrollspy
1343
+ * =============================================================
1344
+ * Copyright 2012 Twitter, Inc.
1345
+ *
1346
+ * Licensed under the Apache License, Version 2.0 (the "License");
1347
+ * you may not use this file except in compliance with the License.
1348
+ * You may obtain a copy of the License at
1349
+ *
1350
+ * http://www.apache.org/licenses/LICENSE-2.0
1351
+ *
1352
+ * Unless required by applicable law or agreed to in writing, software
1353
+ * distributed under the License is distributed on an "AS IS" BASIS,
1354
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1355
+ * See the License for the specific language governing permissions and
1356
+ * limitations under the License.
1357
+ * ============================================================== */
1358
+
1359
+
1360
+ !function ($) {
1361
+
1362
+ "use strict"; // jshint ;_;
1363
+
1364
+
1365
+ /* SCROLLSPY CLASS DEFINITION
1366
+ * ========================== */
1367
+
1368
+ function ScrollSpy(element, options) {
1369
+ var process = $.proxy(this.process, this)
1370
+ , $element = $(element).is('body') ? $(window) : $(element)
1371
+ , href
1372
+ this.options = $.extend({}, $.fn.scrollspy.defaults, options)
1373
+ this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process)
1374
+ this.selector = (this.options.target
1375
+ || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
1376
+ || '') + ' .nav li > a'
1377
+ this.$body = $('body')
1378
+ this.refresh()
1379
+ this.process()
1380
+ }
1381
+
1382
+ ScrollSpy.prototype = {
1383
+
1384
+ constructor: ScrollSpy
1385
+
1386
+ , refresh: function () {
1387
+ var self = this
1388
+ , $targets
1389
+
1390
+ this.offsets = $([])
1391
+ this.targets = $([])
1392
+
1393
+ $targets = this.$body
1394
+ .find(this.selector)
1395
+ .map(function () {
1396
+ var $el = $(this)
1397
+ , href = $el.data('target') || $el.attr('href')
1398
+ , $href = /^#\w/.test(href) && $(href)
1399
+ return ( $href
1400
+ && $href.length
1401
+ && [[ $href.position().top, href ]] ) || null
1402
+ })
1403
+ .sort(function (a, b) { return a[0] - b[0] })
1404
+ .each(function () {
1405
+ self.offsets.push(this[0])
1406
+ self.targets.push(this[1])
1407
+ })
1408
+ }
1409
+
1410
+ , process: function () {
1411
+ var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
1412
+ , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
1413
+ , maxScroll = scrollHeight - this.$scrollElement.height()
1414
+ , offsets = this.offsets
1415
+ , targets = this.targets
1416
+ , activeTarget = this.activeTarget
1417
+ , i
1418
+
1419
+ if (scrollTop >= maxScroll) {
1420
+ return activeTarget != (i = targets.last()[0])
1421
+ && this.activate ( i )
1422
+ }
1423
+
1424
+ for (i = offsets.length; i--;) {
1425
+ activeTarget != targets[i]
1426
+ && scrollTop >= offsets[i]
1427
+ && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
1428
+ && this.activate( targets[i] )
1429
+ }
1430
+ }
1431
+
1432
+ , activate: function (target) {
1433
+ var active
1434
+ , selector
1435
+
1436
+ this.activeTarget = target
1437
+
1438
+ $(this.selector)
1439
+ .parent('.active')
1440
+ .removeClass('active')
1441
+
1442
+ selector = this.selector
1443
+ + '[data-target="' + target + '"],'
1444
+ + this.selector + '[href="' + target + '"]'
1445
+
1446
+ active = $(selector)
1447
+ .parent('li')
1448
+ .addClass('active')
1449
+
1450
+ if (active.parent('.dropdown-menu').length) {
1451
+ active = active.closest('li.dropdown').addClass('active')
1452
+ }
1453
+
1454
+ active.trigger('activate')
1455
+ }
1456
+
1457
+ }
1458
+
1459
+
1460
+ /* SCROLLSPY PLUGIN DEFINITION
1461
+ * =========================== */
1462
+
1463
+ $.fn.scrollspy = function (option) {
1464
+ return this.each(function () {
1465
+ var $this = $(this)
1466
+ , data = $this.data('scrollspy')
1467
+ , options = typeof option == 'object' && option
1468
+ if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
1469
+ if (typeof option == 'string') data[option]()
1470
+ })
1471
+ }
1472
+
1473
+ $.fn.scrollspy.Constructor = ScrollSpy
1474
+
1475
+ $.fn.scrollspy.defaults = {
1476
+ offset: 10
1477
+ }
1478
+
1479
+
1480
+ /* SCROLLSPY DATA-API
1481
+ * ================== */
1482
+
1483
+ $(window).on('load', function () {
1484
+ $('[data-spy="scroll"]').each(function () {
1485
+ var $spy = $(this)
1486
+ $spy.scrollspy($spy.data())
1487
+ })
1488
+ })
1489
+
1490
+ }(window.jQuery);/* ========================================================
1491
+ * bootstrap-tab.js v2.1.1
1492
+ * http://twitter.github.com/bootstrap/javascript.html#tabs
1493
+ * ========================================================
1494
+ * Copyright 2012 Twitter, Inc.
1495
+ *
1496
+ * Licensed under the Apache License, Version 2.0 (the "License");
1497
+ * you may not use this file except in compliance with the License.
1498
+ * You may obtain a copy of the License at
1499
+ *
1500
+ * http://www.apache.org/licenses/LICENSE-2.0
1501
+ *
1502
+ * Unless required by applicable law or agreed to in writing, software
1503
+ * distributed under the License is distributed on an "AS IS" BASIS,
1504
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1505
+ * See the License for the specific language governing permissions and
1506
+ * limitations under the License.
1507
+ * ======================================================== */
1508
+
1509
+
1510
+ !function ($) {
1511
+
1512
+ "use strict"; // jshint ;_;
1513
+
1514
+
1515
+ /* TAB CLASS DEFINITION
1516
+ * ==================== */
1517
+
1518
+ var Tab = function (element) {
1519
+ this.element = $(element)
1520
+ }
1521
+
1522
+ Tab.prototype = {
1523
+
1524
+ constructor: Tab
1525
+
1526
+ , show: function () {
1527
+ var $this = this.element
1528
+ , $ul = $this.closest('ul:not(.dropdown-menu)')
1529
+ , selector = $this.attr('data-target')
1530
+ , previous
1531
+ , $target
1532
+ , e
1533
+
1534
+ if (!selector) {
1535
+ selector = $this.attr('href')
1536
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
1537
+ }
1538
+
1539
+ if ( $this.parent('li').hasClass('active') ) return
1540
+
1541
+ previous = $ul.find('.active a').last()[0]
1542
+
1543
+ e = $.Event('show', {
1544
+ relatedTarget: previous
1545
+ })
1546
+
1547
+ $this.trigger(e)
1548
+
1549
+ if (e.isDefaultPrevented()) return
1550
+
1551
+ $target = $(selector)
1552
+
1553
+ this.activate($this.parent('li'), $ul)
1554
+ this.activate($target, $target.parent(), function () {
1555
+ $this.trigger({
1556
+ type: 'shown'
1557
+ , relatedTarget: previous
1558
+ })
1559
+ })
1560
+ }
1561
+
1562
+ , activate: function ( element, container, callback) {
1563
+ var $active = container.find('> .active')
1564
+ , transition = callback
1565
+ && $.support.transition
1566
+ && $active.hasClass('fade')
1567
+
1568
+ function next() {
1569
+ $active
1570
+ .removeClass('active')
1571
+ .find('> .dropdown-menu > .active')
1572
+ .removeClass('active')
1573
+
1574
+ element.addClass('active')
1575
+
1576
+ if (transition) {
1577
+ element[0].offsetWidth // reflow for transition
1578
+ element.addClass('in')
1579
+ } else {
1580
+ element.removeClass('fade')
1581
+ }
1582
+
1583
+ if ( element.parent('.dropdown-menu') ) {
1584
+ element.closest('li.dropdown').addClass('active')
1585
+ }
1586
+
1587
+ callback && callback()
1588
+ }
1589
+
1590
+ transition ?
1591
+ $active.one($.support.transition.end, next) :
1592
+ next()
1593
+
1594
+ $active.removeClass('in')
1595
+ }
1596
+ }
1597
+
1598
+
1599
+ /* TAB PLUGIN DEFINITION
1600
+ * ===================== */
1601
+
1602
+ $.fn.tab = function ( option ) {
1603
+ return this.each(function () {
1604
+ var $this = $(this)
1605
+ , data = $this.data('tab')
1606
+ if (!data) $this.data('tab', (data = new Tab(this)))
1607
+ if (typeof option == 'string') data[option]()
1608
+ })
1609
+ }
1610
+
1611
+ $.fn.tab.Constructor = Tab
1612
+
1613
+
1614
+ /* TAB DATA-API
1615
+ * ============ */
1616
+
1617
+ $(function () {
1618
+ $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
1619
+ e.preventDefault()
1620
+ $(this).tab('show')
1621
+ })
1622
+ })
1623
+
1624
+ }(window.jQuery);/* =============================================================
1625
+ * bootstrap-typeahead.js v2.1.1
1626
+ * http://twitter.github.com/bootstrap/javascript.html#typeahead
1627
+ * =============================================================
1628
+ * Copyright 2012 Twitter, Inc.
1629
+ *
1630
+ * Licensed under the Apache License, Version 2.0 (the "License");
1631
+ * you may not use this file except in compliance with the License.
1632
+ * You may obtain a copy of the License at
1633
+ *
1634
+ * http://www.apache.org/licenses/LICENSE-2.0
1635
+ *
1636
+ * Unless required by applicable law or agreed to in writing, software
1637
+ * distributed under the License is distributed on an "AS IS" BASIS,
1638
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1639
+ * See the License for the specific language governing permissions and
1640
+ * limitations under the License.
1641
+ * ============================================================ */
1642
+
1643
+
1644
+ !function($){
1645
+
1646
+ "use strict"; // jshint ;_;
1647
+
1648
+
1649
+ /* TYPEAHEAD PUBLIC CLASS DEFINITION
1650
+ * ================================= */
1651
+
1652
+ var Typeahead = function (element, options) {
1653
+ this.$element = $(element)
1654
+ this.options = $.extend({}, $.fn.typeahead.defaults, options)
1655
+ this.matcher = this.options.matcher || this.matcher
1656
+ this.sorter = this.options.sorter || this.sorter
1657
+ this.highlighter = this.options.highlighter || this.highlighter
1658
+ this.updater = this.options.updater || this.updater
1659
+ this.$menu = $(this.options.menu).appendTo('body')
1660
+ this.source = this.options.source
1661
+ this.shown = false
1662
+ this.listen()
1663
+ }
1664
+
1665
+ Typeahead.prototype = {
1666
+
1667
+ constructor: Typeahead
1668
+
1669
+ , select: function () {
1670
+ var val = this.$menu.find('.active').attr('data-value')
1671
+ this.$element
1672
+ .val(this.updater(val))
1673
+ .change()
1674
+ return this.hide()
1675
+ }
1676
+
1677
+ , updater: function (item) {
1678
+ return item
1679
+ }
1680
+
1681
+ , show: function () {
1682
+ var pos = $.extend({}, this.$element.offset(), {
1683
+ height: this.$element[0].offsetHeight
1684
+ })
1685
+
1686
+ this.$menu.css({
1687
+ top: pos.top + pos.height
1688
+ , left: pos.left
1689
+ })
1690
+
1691
+ this.$menu.show()
1692
+ this.shown = true
1693
+ return this
1694
+ }
1695
+
1696
+ , hide: function () {
1697
+ this.$menu.hide()
1698
+ this.shown = false
1699
+ return this
1700
+ }
1701
+
1702
+ , lookup: function (event) {
1703
+ var items
1704
+
1705
+ this.query = this.$element.val()
1706
+
1707
+ if (!this.query || this.query.length < this.options.minLength) {
1708
+ return this.shown ? this.hide() : this
1709
+ }
1710
+
1711
+ items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source
1712
+
1713
+ return items ? this.process(items) : this
1714
+ }
1715
+
1716
+ , process: function (items) {
1717
+ var that = this
1718
+
1719
+ items = $.grep(items, function (item) {
1720
+ return that.matcher(item)
1721
+ })
1722
+
1723
+ items = this.sorter(items)
1724
+
1725
+ if (!items.length) {
1726
+ return this.shown ? this.hide() : this
1727
+ }
1728
+
1729
+ return this.render(items.slice(0, this.options.items)).show()
1730
+ }
1731
+
1732
+ , matcher: function (item) {
1733
+ return ~item.toLowerCase().indexOf(this.query.toLowerCase())
1734
+ }
1735
+
1736
+ , sorter: function (items) {
1737
+ var beginswith = []
1738
+ , caseSensitive = []
1739
+ , caseInsensitive = []
1740
+ , item
1741
+
1742
+ while (item = items.shift()) {
1743
+ if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
1744
+ else if (~item.indexOf(this.query)) caseSensitive.push(item)
1745
+ else caseInsensitive.push(item)
1746
+ }
1747
+
1748
+ return beginswith.concat(caseSensitive, caseInsensitive)
1749
+ }
1750
+
1751
+ , highlighter: function (item) {
1752
+ var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
1753
+ return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
1754
+ return '<strong>' + match + '</strong>'
1755
+ })
1756
+ }
1757
+
1758
+ , render: function (items) {
1759
+ var that = this
1760
+
1761
+ items = $(items).map(function (i, item) {
1762
+ i = $(that.options.item).attr('data-value', item)
1763
+ i.find('a').html(that.highlighter(item))
1764
+ return i[0]
1765
+ })
1766
+
1767
+ items.first().addClass('active')
1768
+ this.$menu.html(items)
1769
+ return this
1770
+ }
1771
+
1772
+ , next: function (event) {
1773
+ var active = this.$menu.find('.active').removeClass('active')
1774
+ , next = active.next()
1775
+
1776
+ if (!next.length) {
1777
+ next = $(this.$menu.find('li')[0])
1778
+ }
1779
+
1780
+ next.addClass('active')
1781
+ }
1782
+
1783
+ , prev: function (event) {
1784
+ var active = this.$menu.find('.active').removeClass('active')
1785
+ , prev = active.prev()
1786
+
1787
+ if (!prev.length) {
1788
+ prev = this.$menu.find('li').last()
1789
+ }
1790
+
1791
+ prev.addClass('active')
1792
+ }
1793
+
1794
+ , listen: function () {
1795
+ this.$element
1796
+ .on('blur', $.proxy(this.blur, this))
1797
+ .on('keypress', $.proxy(this.keypress, this))
1798
+ .on('keyup', $.proxy(this.keyup, this))
1799
+
1800
+ if ($.browser.chrome || $.browser.webkit || $.browser.msie) {
1801
+ this.$element.on('keydown', $.proxy(this.keydown, this))
1802
+ }
1803
+
1804
+ this.$menu
1805
+ .on('click', $.proxy(this.click, this))
1806
+ .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
1807
+ }
1808
+
1809
+ , move: function (e) {
1810
+ if (!this.shown) return
1811
+
1812
+ switch(e.keyCode) {
1813
+ case 9: // tab
1814
+ case 13: // enter
1815
+ case 27: // escape
1816
+ e.preventDefault()
1817
+ break
1818
+
1819
+ case 38: // up arrow
1820
+ e.preventDefault()
1821
+ this.prev()
1822
+ break
1823
+
1824
+ case 40: // down arrow
1825
+ e.preventDefault()
1826
+ this.next()
1827
+ break
1828
+ }
1829
+
1830
+ e.stopPropagation()
1831
+ }
1832
+
1833
+ , keydown: function (e) {
1834
+ this.suppressKeyPressRepeat = !~$.inArray(e.keyCode, [40,38,9,13,27])
1835
+ this.move(e)
1836
+ }
1837
+
1838
+ , keypress: function (e) {
1839
+ if (this.suppressKeyPressRepeat) return
1840
+ this.move(e)
1841
+ }
1842
+
1843
+ , keyup: function (e) {
1844
+ switch(e.keyCode) {
1845
+ case 40: // down arrow
1846
+ case 38: // up arrow
1847
+ break
1848
+
1849
+ case 9: // tab
1850
+ case 13: // enter
1851
+ if (!this.shown) return
1852
+ this.select()
1853
+ break
1854
+
1855
+ case 27: // escape
1856
+ if (!this.shown) return
1857
+ this.hide()
1858
+ break
1859
+
1860
+ default:
1861
+ this.lookup()
1862
+ }
1863
+
1864
+ e.stopPropagation()
1865
+ e.preventDefault()
1866
+ }
1867
+
1868
+ , blur: function (e) {
1869
+ var that = this
1870
+ setTimeout(function () { that.hide() }, 150)
1871
+ }
1872
+
1873
+ , click: function (e) {
1874
+ e.stopPropagation()
1875
+ e.preventDefault()
1876
+ this.select()
1877
+ }
1878
+
1879
+ , mouseenter: function (e) {
1880
+ this.$menu.find('.active').removeClass('active')
1881
+ $(e.currentTarget).addClass('active')
1882
+ }
1883
+
1884
+ }
1885
+
1886
+
1887
+ /* TYPEAHEAD PLUGIN DEFINITION
1888
+ * =========================== */
1889
+
1890
+ $.fn.typeahead = function (option) {
1891
+ return this.each(function () {
1892
+ var $this = $(this)
1893
+ , data = $this.data('typeahead')
1894
+ , options = typeof option == 'object' && option
1895
+ if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
1896
+ if (typeof option == 'string') data[option]()
1897
+ })
1898
+ }
1899
+
1900
+ $.fn.typeahead.defaults = {
1901
+ source: []
1902
+ , items: 8
1903
+ , menu: '<ul class="typeahead dropdown-menu"></ul>'
1904
+ , item: '<li><a href="#"></a></li>'
1905
+ , minLength: 1
1906
+ }
1907
+
1908
+ $.fn.typeahead.Constructor = Typeahead
1909
+
1910
+
1911
+ /* TYPEAHEAD DATA-API
1912
+ * ================== */
1913
+
1914
+ $(function () {
1915
+ $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
1916
+ var $this = $(this)
1917
+ if ($this.data('typeahead')) return
1918
+ e.preventDefault()
1919
+ $this.typeahead($this.data())
1920
+ })
1921
+ })
1922
+
1923
+ }(window.jQuery);
1924
+ /* ==========================================================
1925
+ * bootstrap-affix.js v2.1.1
1926
+ * http://twitter.github.com/bootstrap/javascript.html#affix
1927
+ * ==========================================================
1928
+ * Copyright 2012 Twitter, Inc.
1929
+ *
1930
+ * Licensed under the Apache License, Version 2.0 (the "License");
1931
+ * you may not use this file except in compliance with the License.
1932
+ * You may obtain a copy of the License at
1933
+ *
1934
+ * http://www.apache.org/licenses/LICENSE-2.0
1935
+ *
1936
+ * Unless required by applicable law or agreed to in writing, software
1937
+ * distributed under the License is distributed on an "AS IS" BASIS,
1938
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1939
+ * See the License for the specific language governing permissions and
1940
+ * limitations under the License.
1941
+ * ========================================================== */
1942
+
1943
+
1944
+ !function ($) {
1945
+
1946
+ "use strict"; // jshint ;_;
1947
+
1948
+
1949
+ /* AFFIX CLASS DEFINITION
1950
+ * ====================== */
1951
+
1952
+ var Affix = function (element, options) {
1953
+ this.options = $.extend({}, $.fn.affix.defaults, options)
1954
+ this.$window = $(window).on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
1955
+ this.$element = $(element)
1956
+ this.checkPosition()
1957
+ }
1958
+
1959
+ Affix.prototype.checkPosition = function () {
1960
+ if (!this.$element.is(':visible')) return
1961
+
1962
+ var scrollHeight = $(document).height()
1963
+ , scrollTop = this.$window.scrollTop()
1964
+ , position = this.$element.offset()
1965
+ , offset = this.options.offset
1966
+ , offsetBottom = offset.bottom
1967
+ , offsetTop = offset.top
1968
+ , reset = 'affix affix-top affix-bottom'
1969
+ , affix
1970
+
1971
+ if (typeof offset != 'object') offsetBottom = offsetTop = offset
1972
+ if (typeof offsetTop == 'function') offsetTop = offset.top()
1973
+ if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
1974
+
1975
+ affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ?
1976
+ false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ?
1977
+ 'bottom' : offsetTop != null && scrollTop <= offsetTop ?
1978
+ 'top' : false
1979
+
1980
+ if (this.affixed === affix) return
1981
+
1982
+ this.affixed = affix
1983
+ this.unpin = affix == 'bottom' ? position.top - scrollTop : null
1984
+
1985
+ this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : ''))
1986
+ }
1987
+
1988
+
1989
+ /* AFFIX PLUGIN DEFINITION
1990
+ * ======================= */
1991
+
1992
+ $.fn.affix = function (option) {
1993
+ return this.each(function () {
1994
+ var $this = $(this)
1995
+ , data = $this.data('affix')
1996
+ , options = typeof option == 'object' && option
1997
+ if (!data) $this.data('affix', (data = new Affix(this, options)))
1998
+ if (typeof option == 'string') data[option]()
1999
+ })
2000
+ }
2001
+
2002
+ $.fn.affix.Constructor = Affix
2003
+
2004
+ $.fn.affix.defaults = {
2005
+ offset: 0
2006
+ }
2007
+
2008
+
2009
+ /* AFFIX DATA-API
2010
+ * ============== */
2011
+
2012
+ $(window).on('load', function () {
2013
+ $('[data-spy="affix"]').each(function () {
2014
+ var $spy = $(this)
2015
+ , data = $spy.data()
2016
+
2017
+ data.offset = data.offset || {}
2018
+
2019
+ data.offsetBottom && (data.offset.bottom = data.offsetBottom)
2020
+ data.offsetTop && (data.offset.top = data.offsetTop)
2021
+
2022
+ $spy.affix(data)
2023
+ })
2024
+ })
2025
+
2026
+
2027
+ }(window.jQuery);