angular-rails 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,25 +1,25 @@
1
- # Project Goals
1
+ # Angular-Rails - The HTML6 Shim [![Build Status](https://secure.travis-ci.org/ludicast/angular-rails.png)](http://travis-ci.org/ludicast/angular-rails)
2
2
 
3
- Easily setup and use angularjs (0.9.19) with rails 3.1
3
+ This project lets you use angularjs with the yummy Rails 3.1 asset pipeline. The eventual goal is to have it integrate scaffolding with test support.
4
4
 
5
5
  ## Warning!! Code-Theft :)
6
6
 
7
7
  This README (and some of the accompanying code) is being copied/pasted/ripped from the [http://github.com/codebrew/backbone-rails](backbone-rails) project to help bootstrap things. Later on I'll cut the cord.
8
8
 
9
- ## Rails 3.1 setup
10
- This gem requires the use of rails 3.1, coffeescript and the new rails asset pipeline provided by sprockets.
9
+ ## Requirements
10
+
11
+ * Rails 3.1 - For the asset pipeline
12
+ * Coffeescript - Because more LOC means more bugs
13
+ * Ruby 1.9.2 - Because I like the syntax enhancements (but if there's an outcry I can maybe support 1.8.7)
11
14
 
12
- This gem vendors the latest stable version of angular.js for Rails 3.1 and greater. This file will be added to the asset pipeline and available for you to use.
13
-
14
15
  ### Installation
15
16
 
16
- In your Gemfile, add this line:
17
+ Add to your gemfile:
17
18
 
18
19
  gem "rails-angular"
19
20
 
20
- Then run the following commands:
21
+ And bundle away. To bootstrap things then type:
21
22
 
22
- bundle install
23
23
  rails g angular:install
24
24
 
25
25
  ### Layout and namespacing
@@ -37,6 +37,37 @@ It will also add to the application.js file the appropriate requires.
37
37
 
38
38
  angular-rails provides a simple generator to help get you started using angular.js with rails 3.1. The generators will only create client side code (javascript).
39
39
 
40
+ So far we have a controller generator which generates a controller file if you rum
41
+
42
+ rails g angular:controller MODELNAME
43
+
44
+ This file is empty except for the class declaration, but I will be adding some RESTful controller functionality shortly.
45
+
46
+ ## Angular-Helpers
47
+
48
+ In an attempt to DRY up angular apps I added an angular-helpers coffeescript file to the assets path. So far all it has is a Router class that sets up some defaults. If you subclass it in Coffeescript like so:
49
+
50
+ class @PhotoGalleryCtrl extends Router
51
+ routes:->
52
+ {
53
+ default: '/photographers'
54
+ '/photographers':
55
+ template: '<%= asset_path("photographers.html") %>'
56
+ controller: PhotographersCtrl
57
+ '/photographers/:photographer_id/galleries':
58
+ template: '<%= asset_path("galleries.html") %>'
59
+ controller: GalleriesCtrl
60
+ '/photographers/:photographer_id/galleries/:gallery_id/photos':
61
+ template: '<%= asset_path("photos.html") %>'
62
+ controller: PhotosCtrl
63
+ }
64
+
65
+ You will have those routes set up. Note that this class will need to be injected with both the $xhr and the $route object like so:
66
+
67
+ PhotoGalleryCtrl.$inject = ['$route', '$xhr']
68
+
69
+ This is pretty much an adaption of the routing code at a demo of [https://github.com/centresource/angularjs_rails_demo](angular with Rails).
70
+
40
71
  ## Example Usage
41
72
 
42
73
  Created a new rails 3.1 application called `blog`.
@@ -1,3 +1,3 @@
1
1
  module AngularRails
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -0,0 +1,16 @@
1
+ require 'generators/angular/resource_helpers'
2
+
3
+ module Angular
4
+ module Generators
5
+ class ControllerGenerator < Rails::Generators::NamedBase
6
+ include Angular::Generators::ResourceHelpers
7
+
8
+ source_root File.expand_path("../templates", __FILE__)
9
+ desc "This generator creates an angular controller"
10
+
11
+ def create_backbone_model
12
+ template "controller.coffee", "#{angular_path}/controllers/#{file_name.pluralize}.coffee"
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1 @@
1
+ class @<%=file_name.camelize.pluralize %>Controller
@@ -1,7 +1,5 @@
1
1
  require 'generators/angular/resource_helpers'
2
2
 
3
- puts "loaded install generator"
4
-
5
3
  module Angular
6
4
  module Generators
7
5
  class InstallGenerator < Rails::Generators::Base
@@ -15,8 +13,8 @@ module Angular
15
13
  :desc => "Skip Git ignores and keeps"
16
14
 
17
15
  def inject_angular
18
- inject_into_file "app/assets/javascripts/application.js", :before => "//= require_tree" do
19
- "//= require angular\n//= require_tree ./angular\n"
16
+ append_to_file "app/assets/javascripts/application.js" do
17
+ "//= require angular.min\n//= require angular-helpers\n//= require_tree ./angular\n"
20
18
  end
21
19
  end
22
20
 
@@ -6,6 +6,9 @@ class AngularRailsTest < ActiveSupport::TestCase
6
6
  end
7
7
 
8
8
  test "angular.js is found as an asset" do
9
- assert_not_nil @app.assets["angular"]
9
+ assert_not_nil @app.assets["angular.min"]
10
+ end
11
+ test "angular-helpers.coffee is found as an asset" do
12
+ assert_not_nil @app.assets["angular-helpers"]
10
13
  end
11
14
  end
@@ -14,7 +14,7 @@ development:
14
14
  # Do not set this db to the same as development or production.
15
15
  test:
16
16
  adapter: sqlite3
17
- database: db/test.sqlite3
17
+ database: ":memory:"
18
18
  pool: 5
19
19
  timeout: 5000
20
20
 
@@ -1,2 +1,9 @@
1
1
  Compiled angular (1ms) (pid 26934)
2
2
  Compiled angular (1ms) (pid 28741)
3
+ Compiled angular-helpers (198ms) (pid 42163)
4
+ Compiled angular-helpers (229ms) (pid 42498)
5
+ Compiled angular-helpers (371ms) (pid 42957)
6
+ Compiled angular-helpers (174ms) (pid 46674)
7
+ Compiled angular.min (2ms) (pid 46699)
8
+ Compiled angular-helpers (589ms) (pid 50164)
9
+ Compiled angular.min (7ms) (pid 50164)
@@ -0,0 +1,30 @@
1
+ require 'test_helper'
2
+ require 'generators/generators_test_helper'
3
+ require "generators/angular/controller/controller_generator"
4
+
5
+ class ControllerGeneratorTest < Rails::Generators::TestCase
6
+ include GeneratorsTestHelper
7
+ tests Angular::Generators::ControllerGenerator
8
+
9
+ test "simple model" do
10
+ run_generator %w(Post)
11
+ puts angular_path
12
+ assert_file "#{angular_path}/controllers/posts.coffee" do |controller|
13
+ controller_class = Regexp.escape("class @PostsController")
14
+ assert_match /#{controller_class}/, controller
15
+ end
16
+
17
+ end
18
+
19
+ test "two word model is camelcased" do
20
+ run_generator %w(BlogPost)
21
+
22
+ assert_file "#{angular_path}/controllers/blog_posts.coffee" do |controller|
23
+ controller_class = Regexp.escape("class @BlogPostsController")
24
+
25
+ assert_match /#{controller_class}/, controller
26
+ end
27
+
28
+ end
29
+
30
+ end
@@ -37,7 +37,7 @@ class InstallGeneratorTest < Rails::Generators::TestCase
37
37
  run_generator
38
38
 
39
39
  assert_file "app/assets/javascripts/application.js" do |application|
40
- assert_match /require angular(.*)require_tree \.\/angular/m, application
40
+ assert_match /require angular.min(.*)require angular-helpers(.*)require_tree \.\/angular/m, application
41
41
  end
42
42
  end
43
43
 
data/test/test_helper.rb CHANGED
@@ -3,6 +3,7 @@ ENV["RAILS_ENV"] = "test"
3
3
 
4
4
  require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
5
  require "rails/test_help"
6
+ require 'minitest/spec'
6
7
 
7
8
  Rails.backtrace_cleaner.remove_silencers!
8
9
 
@@ -1,5 +1,6 @@
1
1
  //= require jquery
2
2
  //= require jquery_ujs
3
- //= require angular
4
- //= require_tree ./angular
5
3
  //= require_tree .
4
+ //= require angular.min
5
+ //= require angular-helpers
6
+ //= require_tree ./angular
@@ -0,0 +1,22 @@
1
+ class @Router
2
+ initRoutes:(router, routes)->
3
+ for routeName, info of routes
4
+ if routeName is "default"
5
+ router.otherwise redirectTo: info
6
+ else
7
+ router.when routeName,
8
+ template: info.template
9
+ controller: info.controller
10
+
11
+ setupXhr:(xhr)->
12
+ xhr.defaults.headers.post['Content-Type'] = 'application/json'
13
+ xhr.defaults.headers.put['Content-Type'] = 'application/json'
14
+
15
+ token = $("meta[name='csrf-token']").attr("content")
16
+ xhr.defaults.headers.post['X-CSRF-Token'] = token
17
+ xhr.defaults.headers.put['X-CSRF-Token'] = token
18
+ xhr.defaults.headers['delete']['X-CSRF-Token'] = token
19
+
20
+ constructor:($route, $xhr)->
21
+ @setupXhr($xhr)
22
+ @initRoutes $route, @routes()
@@ -0,0 +1,35 @@
1
+ /*
2
+ Content-Type: multipart/related; boundary="_"
3
+
4
+ --_
5
+ Content-Location:img0
6
+ Content-Transfer-Encoding:base64
7
+
8
+ R0lGODlhCwAXAKIAAMzMzO/v7/f39////////wAAAAAAAAAAACH5BAUUAAQALAAAAAALABcAAAMrSLoc/AG8FeUUIN+sGebWAnbKSJodqqlsOxJtqYooU9vvk+vcJIcTkg+QAAA7
9
+ --_
10
+ Content-Location:img1
11
+ Content-Transfer-Encoding:base64
12
+
13
+ R0lGODlhCwAXAKIAAMzMzO/v7/f39////////wAAAAAAAAAAACH5BAUUAAQALAAAAAALABcAAAMrCLTcoM29yN6k9socs91e5X3EyJloipYrO4ohTMqA0Fn2XVNswJe+H+SXAAA7
14
+ --_
15
+ Content-Location:img2
16
+ Content-Transfer-Encoding:base64
17
+
18
+ R0lGODlhEAAQAPQAAP///wAAAPDw8IqKiuDg4EZGRnp6egAAAFhYWCQkJKysrL6+vhQUFJycnAQEBDY2NmhoaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAAFdyAgAgIJIeWoAkRCCMdBkKtIHIngyMKsErPBYbADpkSCwhDmQCBethRB6Vj4kFCkQPG4IlWDgrNRIwnO4UKBXDufzQvDMaoSDBgFb886MiQadgNABAokfCwzBA8LCg0Egl8jAggGAA1kBIA1BAYzlyILczULC2UhACH5BAkKAAAALAAAAAAQABAAAAV2ICACAmlAZTmOREEIyUEQjLKKxPHADhEvqxlgcGgkGI1DYSVAIAWMx+lwSKkICJ0QsHi9RgKBwnVTiRQQgwF4I4UFDQQEwi6/3YSGWRRmjhEETAJfIgMFCnAKM0KDV4EEEAQLiF18TAYNXDaSe3x6mjidN1s3IQAh+QQJCgAAACwAAAAAEAAQAAAFeCAgAgLZDGU5jgRECEUiCI+yioSDwDJyLKsXoHFQxBSHAoAAFBhqtMJg8DgQBgfrEsJAEAg4YhZIEiwgKtHiMBgtpg3wbUZXGO7kOb1MUKRFMysCChAoggJCIg0GC2aNe4gqQldfL4l/Ag1AXySJgn5LcoE3QXI3IQAh+QQJCgAAACwAAAAAEAAQAAAFdiAgAgLZNGU5joQhCEjxIssqEo8bC9BRjy9Ag7GILQ4QEoE0gBAEBcOpcBA0DoxSK/e8LRIHn+i1cK0IyKdg0VAoljYIg+GgnRrwVS/8IAkICyosBIQpBAMoKy9dImxPhS+GKkFrkX+TigtLlIyKXUF+NjagNiEAIfkECQoAAAAsAAAAABAAEAAABWwgIAICaRhlOY4EIgjH8R7LKhKHGwsMvb4AAy3WODBIBBKCsYA9TjuhDNDKEVSERezQEL0WrhXucRUQGuik7bFlngzqVW9LMl9XWvLdjFaJtDFqZ1cEZUB0dUgvL3dgP4WJZn4jkomWNpSTIyEAIfkECQoAAAAsAAAAABAAEAAABX4gIAICuSxlOY6CIgiD8RrEKgqGOwxwUrMlAoSwIzAGpJpgoSDAGifDY5kopBYDlEpAQBwevxfBtRIUGi8xwWkDNBCIwmC9Vq0aiQQDQuK+VgQPDXV9hCJjBwcFYU5pLwwHXQcMKSmNLQcIAExlbH8JBwttaX0ABAcNbWVbKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICSRBlOY7CIghN8zbEKsKoIjdFzZaEgUBHKChMJtRwcWpAWoWnifm6ESAMhO8lQK0EEAV3rFopIBCEcGwDKAqPh4HUrY4ICHH1dSoTFgcHUiZjBhAJB2AHDykpKAwHAwdzf19KkASIPl9cDgcnDkdtNwiMJCshACH5BAkKAAAALAAAAAAQABAAAAV3ICACAkkQZTmOAiosiyAoxCq+KPxCNVsSMRgBsiClWrLTSWFoIQZHl6pleBh6suxKMIhlvzbAwkBWfFWrBQTxNLq2RG2yhSUkDs2b63AYDAoJXAcFRwADeAkJDX0AQCsEfAQMDAIPBz0rCgcxky0JRWE1AmwpKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICKZzkqJ4nQZxLqZKv4NqNLKK2/Q4Ek4lFXChsg5ypJjs1II3gEDUSRInEGYAw6B6zM4JhrDAtEosVkLUtHA7RHaHAGJQEjsODcEg0FBAFVgkQJQ1pAwcDDw8KcFtSInwJAowCCA6RIwqZAgkPNgVpWndjdyohACH5BAkKAAAALAAAAAAQABAAAAV5ICACAimc5KieLEuUKvm2xAKLqDCfC2GaO9eL0LABWTiBYmA06W6kHgvCqEJiAIJiu3gcvgUsscHUERm+kaCxyxa+zRPk0SgJEgfIvbAdIAQLCAYlCj4DBw0IBQsMCjIqBAcPAooCBg9pKgsJLwUFOhCZKyQDA3YqIQAh+QQJCgAAACwAAAAAEAAQAAAFdSAgAgIpnOSonmxbqiThCrJKEHFbo8JxDDOZYFFb+A41E4H4OhkOipXwBElYITDAckFEOBgMQ3arkMkUBdxIUGZpEb7kaQBRlASPg0FQQHAbEEMGDSVEAA1QBhAED1E0NgwFAooCDWljaQIQCE5qMHcNhCkjIQAh+QQJCgAAACwAAAAAEAAQAAAFeSAgAgIpnOSoLgxxvqgKLEcCC65KEAByKK8cSpA4DAiHQ/DkKhGKh4ZCtCyZGo6F6iYYPAqFgYy02xkSaLEMV34tELyRYNEsCQyHlvWkGCzsPgMCEAY7Cg04Uk48LAsDhRA8MVQPEF0GAgqYYwSRlycNcWskCkApIyEAOwAAAAAAAAAAAA==
19
+ --_--
20
+ */
21
+ (function(){
22
+ var jsUri = document.location.href.replace(/\/[^\/]+(#.*)?$/, '/') +
23
+ document.getElementById('ng-ie-compat').src,
24
+ css = '#ng-callout .ng-arrow-left{*background-image:url("mhtml:' + jsUri + '!img0")}#ng-callout .ng-arrow-right{*background-image:url("mhtml:' + jsUri + '!img1")}.ng-input-indicator-wait {*background-image:url("mhtml:' + jsUri + '!img2")}',
25
+ s = document.createElement('style');
26
+
27
+ s.setAttribute('type', 'text/css');
28
+
29
+ if (s.styleSheet) {
30
+ s.styleSheet.cssText = css;
31
+ } else {
32
+ s.appendChild(document.createTextNode(css));
33
+ }
34
+ document.getElementsByTagName('head')[0].appendChild(s);
35
+ })();
@@ -0,0 +1,137 @@
1
+ /*
2
+ AngularJS v0.10.5
3
+ (c) 2010-2011 AngularJS http://angularjs.org
4
+ License: MIT
5
+ */
6
+ 'use strict';(function(y,K,D){function k(a,b,c){var d;if(a)if(t(a))for(d in a)d!="prototype"&&d!=mc&&d!=nc&&a.hasOwnProperty(d)&&b.call(c,a[d],d);else if(a.forEach&&a.forEach!==k)a.forEach(b,c);else if(L(a)&&ma(a.length))for(d=0;d<a.length;d++)b.call(c,a[d],d);else for(d in a)b.call(c,a[d],d);return a}function sb(a){var b=[],c;for(c in a)a.hasOwnProperty(c)&&b.push(c);return b.sort()}function tb(a,b,c){for(var d=sb(a),e=0;e<d.length;e++)b.call(c,a[d[e]],d[e]);return d}function oc(a){a instanceof u&&
7
+ (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 Ra(){for(var a=R.length,b;a;){a--;b=R[a].charCodeAt(0);if(b==57)return R[a]="A",R.join("");if(b==90)R[a]="0";else return R[a]=String.fromCharCode(b+1),R.join("")}R.unshift("0");return R.join("")}function w(a){k(arguments,function(b){b!==a&&k(b,function(b,d){a[d]=b})});return a}function ua(a,b){return w(new (w(function(){},{prototype:a})),
8
+ b)}function v(){}function da(a){return a}function Sa(a){return function(){return a}}function X(a,b,c){var d;return a[b]||(d=a[b]=function(a,b,g){a=(c||da)(a);p(b)&&(d[a]=w(b,g||{}));return d[a]})}function r(a){return typeof a==Ta}function p(a){return typeof a!=Ta}function L(a){return a!=null&&typeof a==ub}function s(a){return typeof a==pc}function ma(a){return typeof a==qc}function na(a){return a instanceof Date}function M(a){return a instanceof Array}function t(a){return typeof a=="function"}function S(a){return s(a)?
9
+ a.replace(/^\s*/,"").replace(/\s*$/,""):a}function Ua(a){return a&&(a.nodeName||a.bind&&a.find)}function T(a){var b={},a=a.split(","),c;for(c=0;c<a.length;c++)b[a[c]]=!0;return b}function Va(a,b){this.html=a;this.get=z(b)=="unsafe"?Sa(a):function(){var b=[];vb(a,wb(b));return b.join("")}}function rc(a,b,c){var d=[];k(a,function(a,f,g){d.push(b.call(c,a,f,g))});return d}function xb(a,b){var c=0,d;if(M(a)||s(a))return a.length;else if(L(a))for(d in a)(!b||a.hasOwnProperty(d))&&c++;return c}function yb(a,
10
+ b){for(var c=0;c<a.length;c++)if(b===a[c])return c;return-1}function sc(a){if(a)switch(a.nodeName){case "OPTION":case "PRE":case "TITLE":return!0}return!1}function A(a,b){if(b)if(M(a)){for(;b.length;)b.pop();for(var c=0;c<a.length;c++)b.push(A(a[c]))}else for(c in k(b,function(a,c){delete b[c]}),a)b[c]=A(a[c]);else(b=a)&&(M(a)?b=A(a,[]):na(a)?b=new Date(a.getTime()):L(a)&&(b=A(a,{})));return b}function P(a,b){if(a===b)return!0;if(a===null||b===null)return!1;var c=typeof a,d;if(c==typeof b&&c=="object")if(a instanceof
11
+ Array){if((c=a.length)==b.length){for(d=0;d<c;d++)if(!P(a[d],b[d]))return!1;return!0}}else{c={};for(d in a){if(d.charAt(0)!=="$"&&!t(a[d])&&!P(a[d],b[d]))return!1;c[d]=!0}for(d in b)if(!c[d]&&d.charAt(0)!=="$"&&!t(b[d]))return!1;return!0}return!1}function N(a,b){var c=arguments.length>2?ea.call(arguments,2):[];return t(b)&&!(b instanceof RegExp)?c.length?function(){return arguments.length?b.apply(a,c.concat(ea.call(arguments,0))):b.apply(a,c)}:function(){return arguments.length?b.apply(a,arguments):
12
+ b.call(a)}:b}function va(a){a&&a.length!==0?(a=z(""+a),a=!(a=="f"||a=="0"||a=="false"||a=="no"||a=="n"||a=="[]")):a=!1;return a}function Wa(a){return(new zb(Xa,Ab,C,G)).compile(a)}function wa(a){var b={},c,d;k((a||"").split("&"),function(a){a&&(c=a.split("="),d=decodeURIComponent(c[0]),b[d]=p(c[1])?decodeURIComponent(c[1]):!0)});return b}function Bb(a){var b=[];k(a,function(a,d){b.push(fa(d,!0)+(a===!0?"":"="+fa(a,!0)))});return b.length?b.join("&"):""}function xa(a){return fa(a,!0).replace(/%26/gi,
13
+ "&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function fa(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(b?null:/%20/g,"+")}function Cb(){(ga=y.jQuery)?(o=ga,w(ga.fn,{scope:Ya.scope,inheritedData:Ya.inheritedData}),Za("remove",!0),Za("empty"),Za("html")):o=$a;x.element=o}function ha(a,b){if(!t(a))throw new u("Argument '"+(b||"?")+"' is "+("not a function, got "+(typeof a=="object"?a.constructor.name:typeof a)||"required"));
14
+ return a}function U(a,b){var c=[];ab(c,a,b?"\n ":null,[]);return c.join("")}function ia(a,b){function c(a){if(s(a)&&a.length===Db)return aa.toDate(a);else(M(a)||L(a))&&k(a,function(b,d){a[d]=c(b)});return a}if(!s(a))return a;var d;try{return b&&y.JSON&&y.JSON.parse?(d=JSON.parse(a),c(d)):ya(a,!0).primary()()}catch(e){throw tc("fromJson error: ",a,e),e;}}function ab(a,b,c,d){if(L(b)){if(b===y){a.push("WINDOW");return}if(b===K){a.push("DOCUMENT");return}var e;a:{for(e=0;e<d.length;e++)if(b===d[e]){e=
15
+ !0;break a}e=!1}if(e){a.push("RECURSION");return}d.push(b)}if(b===null)a.push(za);else if(b instanceof RegExp)a.push(aa.quoteUnicode(b.toString()));else if(t(b))return;else if(typeof b==uc)a.push(""+b);else if(ma(b))isNaN(b)?a.push(za):a.push(""+b);else if(s(b))return a.push(aa.quoteUnicode(b));else if(L(b))if(M(b)){a.push("[");e=b.length;for(var f=!1,g=0;g<e;g++){var h=b[g];f&&a.push(",");!(h instanceof RegExp)&&(t(h)||r(h))?a.push(za):ab(a,h,c,d);f=!0}a.push("]")}else if(Ua(b))a.push("DOM_ELEMENT");
16
+ else if(na(b))a.push(aa.quoteUnicode(x.Date.toString(b)));else{a.push("{");c&&a.push(c);e=!1;f=c?c+" ":!1;g=[];for(h in b)h!="this"&&h!="$parent"&&h.substring(0,2)!="$$"&&b.hasOwnProperty(h)&&b[h]!==D&&g.push(h);g.sort();for(h=0;h<g.length;h++){var j=g[h],i=b[j];t(i)||(e&&(a.push(","),c&&a.push(c)),a.push(aa.quote(j)),a.push(":"),ab(a,i,f,d),e=!0)}a.push("}")}L(b)&&d.pop()}function bb(){this.paths=[];this.children=[];this.linkFns=[];this.newScope=!1}function zb(a,b,c,d){this.markup=a;this.attrMarkup=
17
+ b;this.directives=c;this.widgets=d}function vc(a,b){var c,d=a[0].childNodes||[],e;for(c=0;c<d.length;c++){var f=e=d[c];oa(f)=="#text"||b(o(e),c)}}function Aa(a,b){var c,d=a[0].attributes||[],e,f,g={};for(c=0;c<d.length;c++)e=d[c],f=e.name,e=e.value,O&&f=="href"&&(e=decodeURIComponent(a[0].getAttribute(f,2))),g[f]=e;tb(g,b)}function Eb(a,b){var c=new Fb;(c.$service=Gb(c,a,b)).eager();return c}function Fb(){this.$id=Ra();this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=
18
+ this.$$childHead=this.$$childTail=null;this.$destructor=v;this["this"]=this.$root=this;this.$$asyncQueue=[];this.$$listeners={}}function Hb(a,b){var c=s(a)?Y(a):a;ha(c,b);return c}function Gb(a,b,c){function d(d){if(!(d in c)){var g=b[d];if(!g)throw u("Unknown provider for '"+d+"'.");cb(g);c[d]=e(a,g)}return c[d]}function e(a,b,c){for(var c=c||[],e=b.$inject||[],i=e.length;i--;)c.unshift(d(e[i]));return b.apply(a,c)}b=b||Ba;c=c||{};a=a||{};d.invoke=e;d.eager=function(){k(b,function(a,b){a.$eager&&
19
+ d(b);if(a.$creation)throw new u("Failed to register service '"+b+"': $creation property is unsupported. Use $eager:true or see release notes.");})};return d}function pa(a,b){if(a instanceof Array)return b.$inject=a,b;else{for(var c=0,d=arguments.length-1,e=arguments[d].$inject=[];c<d;c++)e.push(arguments[c]);return arguments[d]}}function F(a,b,c,d){Ba(a,b,{$inject:c,$eager:d})}function cb(a){ha(a);if(!a.$inject){var b=a.$inject=[],c=a.toString().replace(wc,"").match(xc);k(c[1].split(yc),function(a){a.replace(zc,
20
+ function(a,c){b.push(c)})})}return a.$inject}function Ac(a,b){function c(a){return a.indexOf(k)!=-1}function d(){return q+1<a.length?a.charAt(q+1):!1}function e(a){return"0"<=a&&a<="9"}function f(a){return"a"<=a&&a<="z"||"A"<=a&&a<="Z"||"_"==a||a=="$"}function g(a){return a=="-"||a=="+"||e(a)}function h(b,c,d){d=d||q;throw u("Lexer Error: "+b+" at column"+(p(c)?"s "+c+"-"+q+" ["+a.substring(c,d)+"]":" "+d)+" in expression ["+a+"].");}function j(){for(var b="",c=q;q<a.length;){var f=z(a.charAt(q));
21
+ if(f=="."||e(f))b+=f;else{var i=d();if(f=="e"&&g(i))b+=f;else if(g(f)&&i&&e(i)&&b.charAt(b.length-1)=="e")b+=f;else if(g(f)&&(!i||!e(i))&&b.charAt(b.length-1)=="e")h("Invalid exponent");else break}q++}b*=1;n.push({index:c,text:b,json:!0,fn:function(){return b}})}function i(){for(var b="",c=q,d;q<a.length;){d=a.charAt(q);if(d=="."||f(d)||e(d))b+=d;else break;q++}d=db[b];n.push({index:c,text:b,json:d,fn:d||w(Ib(b),{assign:function(a,c){return Jb(a,b,c)}})})}function l(b){var c=q;q++;for(var d="",e=
22
+ b,g=!1;q<a.length;){var f=a.charAt(q);e+=f;if(g)f=="u"?(f=a.substring(q+1,q+5),f.match(/[\da-f]{4}/i)||h("Invalid unicode escape [\\u"+f+"]"),q+=4,d+=String.fromCharCode(parseInt(f,16))):(g=Bc[f],d+=g?g:f),g=!1;else if(f=="\\")g=!0;else if(f==b){q++;n.push({index:c,text:e,string:d,json:!0,fn:function(){return d.length==m?x.String.toDate(d):d}});return}else d+=f;q++}h("Unterminated quote",c)}for(var m=b?Db:-1,n=[],E,q=0,I=[],k,B=":";q<a.length;){k=a.charAt(q);if(c("\"'"))l(k);else if(e(k)||c(".")&&
23
+ e(d()))j();else if(f(k)){if(i(),"{,".indexOf(B)!=-1&&I[0]=="{"&&(E=n[n.length-1]))E.json=E.text.indexOf(".")==-1}else if(c("(){}[].,;:"))n.push({index:q,text:k,json:":[,".indexOf(B)!=-1&&c("{[")||c("}]:,")}),c("{[")&&I.unshift(k),c("}]")&&I.shift(),q++;else if(k==" "||k=="\r"||k=="\t"||k=="\n"||k=="\u000b"||k=="\u00a0"){q++;continue}else{var J=k+d(),o=db[k],t=db[J];t?(n.push({index:q,text:J,fn:t}),q+=2):o?(n.push({index:q,text:k,fn:o,json:"[,:".indexOf(B)!=-1&&c("+-")}),q+=1):h("Unexpected next character ",
24
+ q,q+1)}B=k}return n}function ya(a,b){function c(a){return function(){var b=a();p.length!==0&&d("is an unexpected token",p[0]);return b}}function d(b,c){throw u("Syntax Error: Token '"+c.text+"' "+b+" at column "+(c.index+1)+" of the expression ["+a+"] starting at ["+a.substring(c.index)+"].");}function e(){if(p.length===0)throw u("Unexpected end of expression: "+a);return p[0]}function f(a,b,c,d){if(p.length>0){var e=p[0],g=e.text;if(g==a||g==b||g==c||g==d||!a&&!b&&!c&&!d)return e}return!1}function g(a,
25
+ c,e,g){return(a=f(a,c,e,g))?(b&&!a.json&&d("is not valid json",a),p.shift(),a):!1}function h(a){g(a)||d("is unexpected, expecting ["+a+"]",f())}function j(a,b){return function(c){return a(c,b)}}function i(a,b,c){return function(d){return b(d,a,c)}}function l(){return Ca(V)}function m(){for(var a=n(),b;;)if(b=g("||"))a=i(a,b.fn,n());else return a}function n(){var a=E(),b;if(b=g("&&"))a=i(a,b.fn,n());return a}function E(){var a=q(),b;if(b=g("==","!="))a=i(a,b.fn,E());return a}function q(){var a;a=k();
26
+ for(var b;b=g("+","-");)a=i(a,b.fn,k());if(b=g("<",">","<=",">="))a=i(a,b.fn,q());return a}function k(){for(var a=ja(),b;b=g("*","/","%");)a=i(a,b.fn,ja());return a}function ja(){var a;return g("+")?B():(a=g("-"))?i(s,a.fn,ja()):(a=g("!"))?j(a.fn,ja()):B()}function B(){var a;if(g("("))a=eb(),h(")");else if(g("["))a=J();else if(g("{"))a=o();else{var b=g();(a=b.fn)||d("not a primary expression",b)}for(;b=g("(","[",".");)b.text==="("?a=y(a):b.text==="["?a=Kb(a):b.text==="."?a=x(a):d("IMPOSSIBLE");return a}
27
+ function J(){var a=[];if(e().text!="]"){do a.push(r());while(g(","))}h("]");return function(b){for(var c=[],d=0;d<a.length;d++)c.push(a[d](b));return c}}function o(){var a=[];if(e().text!="}"){do{var b=g(),b=b.string||b.text;h(":");var c=r();a.push({key:b,value:c})}while(g(","))}h("}");return function(b){for(var c={},d=0;d<a.length;d++){var e=a[d],g=e.value(b);c[e.key]=g}return c}}var s=Sa(0),p=Ac(a,b),r=function(){var b=m(),c,e;return(e=g("="))?(b.assign||d("implies assignment but ["+a.substring(0,
28
+ e.index)+"] can not be assigned to",e),c=m(),function(a){return b.assign(a,c(a))}):b},z=m,y=function(a){var b=[];if(e().text!=")"){do b.push(r());while(g(","))}h(")");return function(c){for(var d=[],e=0;e<b.length;e++)d.push(b[e](c));e=a(c)||v;return e.apply?e.apply(c,d):e(d[0],d[1],d[2],d[3],d[4])}},x=function(a){var b=g().text,c=Ib(b);return w(function(b){return c(a(b))},{assign:function(c,d){return Jb(a(c),b,d)}})},Kb=function(a){var b=r();h("]");return w(function(c){var d=a(c),c=b(c);return d?
29
+ d[c]:D},{assign:function(c,d){return a(c)[b(c)]=d}})},eb=function(){for(var a=r(),b;;)if(b=g("|"))a=i(a,b.fn,l());else return a},Lb=function(a){for(var b=g(),c=b.text.split("."),e,f=0;f<c.length;f++)e=c[f],a&&(a=a[e]);t(a)||d("should be a function",b);return a},Ca=function(a){for(var b=Lb(a),c=[];;)if(g(":"))c.push(r());else{var d=function(a,d){for(var e=[d],g=0;g<c.length;g++)e.push(c[g](a));return b.apply(a,e)};return function(){return d}}};b&&(r=m,y=x=Kb=z=eb=Lb=Ca=function(){d("is not valid json",
30
+ {text:a,index:0})});return{assignable:c(z),primary:c(B),statements:c(function(){for(var a=[];;)if(p.length>0&&!f("}",")",";","]")&&a.push(eb()),!g(";"))return a.length==1?a[0]:function(b){for(var c,d=0;d<a.length;d++){var e=a[d];e&&(c=e(b))}return c}}),filter:c(l)}}function Jb(a,b,c){for(var b=b.split("."),d=0;b.length>1;d++){var e=b.shift(),f=a[e];f||(f={},a[e]=f);a=f}return a[b.shift()]=c}function Da(a,b,c){if(!b)return a;for(var b=b.split("."),d,e=a,f=b.length,g=0;g<f;g++)if(d=b[g],a&&(a=(e=a)[d]),
31
+ r(a)&&d.charAt(0)=="$"){var h=Z.typeOf(e);if(d=(h=x[h.charAt(0).toUpperCase()+h.substring(1)])?h[[d.substring(1)]]:Cc)return N(e,d,e)}return!c&&t(a)?N(e,a):a}function Ib(a){var b=Mb[a];if(b)return b;var c="var l, fn, t;\n";k(a.split("."),function(a){a=Nb[a]?'["'+a+'"]':"."+a;c+="if(!s) return s;\nl=s;\ns=s"+a+';\nif(typeof s=="function" && !(s instanceof RegExp)) {\n fn=function(){ return l'+a+".apply(l, arguments); };\n fn.$unboundFn=s;\n s=fn;\n}\n";a.charAt(1)=="$"&&(a=a.substr(2),c+='if(!s) {\n t = angular.Global.typeOf(l);\n fn = (angular[t.charAt(0).toUpperCase() + t.substring(1)]||{})["'+
32
+ a+'"];\n if (fn) s = function(){ return fn.apply(l, [l].concat(Array.prototype.slice.call(arguments, 0))); };\n}\n')});c+="return s;";b=Function("s",c);b.toString=function(){return c};return Mb[a]=b}function Y(a){if(t(a))return a;var b=Ob[a];b||(b=Ob[a]=ya(a).statements());return b}function Pb(a,b){this.template=a+="#";this.defaults=b||{};var c=this.urlParams={};k(a.split(/\W/),function(b){b&&a.match(RegExp(":"+b+"\\W"))&&(c[b]=!0)})}function Ea(a){this.xhr=a}function Dc(a,b,c,d,e,f){function g(a){try{a.apply(null,
33
+ ea.call(arguments,1))}finally{if(B--,B===0)for(;J.length;)try{J.pop()()}catch(b){e.error(b)}}}function h(a,b){(function Ca(){k(t,function(a){a()});p=b(Ca,a)})()}function j(){w!=i.url()&&(w=i.url(),k(y,function(a){a(i.url())}))}var i=this,l=b[0],m=a.location,n=a.history,E=a.setTimeout,q=a.clearTimeout,I={};i.isMock=!1;var ja=0,B=0,J=[];i.xhr=function(b,e,f,h,j){B++;if(z(b)=="json"){var m=("angular_"+Math.random()+"_"+ja++).replace(/\d\./,"");a[m]=function(b){a[m].data=b};var n=i.addJs(e.replace("JSON_CALLBACK",
34
+ m),function(){a[m].data?g(h,200,a[m].data):g(h);delete a[m];c[0].removeChild(n)})}else{var l=new d;l.open(b,e,!0);k(j,function(a,b){a&&l.setRequestHeader(b,a)});l.onreadystatechange=function(){l.readyState==4&&g(h,l.status==1223?204:l.status,l.responseText)};l.send(f||"")}};i.notifyWhenNoOutstandingRequests=function(a){k(t,function(a){a()});B===0?a():J.push(a)};var t=[],p;i.addPollFn=function(a){r(p)&&h(100,E);t.push(a);return a};var w=m.href;i.url=function(a,b){return a?(w=a,f.history?b?n.replaceState(null,
35
+ "",a):n.pushState(null,"",a):b?m.replace(a):m.href=a,i):m.href};var y=[],x=!1;i.onUrlChange=function(b){x||(f.history&&o(a).bind("popstate",j),f.hashchange?o(a).bind("hashchange",j):i.addPollFn(j),x=!0);y.push(b);return b};var u={},A="";i.cookies=function(a,b){var c,d,g,f;if(a)if(b===D)l.cookie=escape(a)+"=;expires=Thu, 01 Jan 1970 00:00:00 GMT";else{if(s(b))l.cookie=escape(a)+"="+escape(b),c=a.length+b.length+1,c>4096&&e.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+
36
+ c+" > 4096 bytes)!"),u.length>20&&e.warn("Cookie '"+a+"' possibly not set or overflowed because too many cookies were already set ("+u.length+" > 20 )")}else{if(l.cookie!==A){A=l.cookie;c=A.split("; ");u={};for(g=0;g<c.length;g++)d=c[g],f=d.indexOf("="),f>0&&(u[unescape(d.substring(0,f))]=unescape(d.substring(f+1)))}return u}};i.defer=function(a,b){var c;B++;c=E(function(){delete I[c];g(a)},b||0);I[c]=!0;return c};i.defer.cancel=function(a){return I[a]?(delete I[a],q(a),g(v),!0):!1};i.addCss=function(a){var b=
37
+ o(l.createElement("link"));b.attr("rel","stylesheet");b.attr("type","text/css");b.attr("href",a);c.append(b)};i.addJs=function(a,b){var d=l.createElement("script");d.type="text/javascript";d.src=a;if(O)d.onreadystatechange=function(){/loaded|complete/.test(d.readyState)&&b&&b()};else if(b)d.onload=d.onerror=b;c[0].appendChild(d);return d};i.baseHref=function(){var a=b.find("base").attr("href");return a?a.replace(/^https?\:\/\/[^\/]*/,""):a}}function vb(a,b){function c(a,c,e,f){c=z(c);if(Qb[c])for(;g.last()&&
38
+ Rb[g.last()];)d("",g.last());Sb[c]&&g.last()==c&&d("",c);(f=Tb[c]||!!f)||g.push(c);var h={};e.replace(Ec,function(a,b,c,d,e){h[b]=fb(c||d||e||"")});b.start&&b.start(c,h,f)}function d(a,c){var d=0,e;if(c=z(c))for(d=g.length-1;d>=0;d--)if(g[d]==c)break;if(d>=0){for(e=g.length-1;e>=d;e--)b.end&&b.end(g[e]);g.length=d}}var e,f,g=[],h=a;for(g.last=function(){return g[g.length-1]};a;){f=!0;if(!g.last()||!Ub[g.last()]){if(a.indexOf("<\!--")===0)e=a.indexOf("--\>"),e>=0&&(b.comment&&b.comment(a.substring(4,
39
+ e)),a=a.substring(e+3),f=!1);else if(Fc.test(a)){if(e=a.match(Vb))a=a.substring(e[0].length),e[0].replace(Vb,d),f=!1}else if(Gc.test(a)&&(e=a.match(Wb)))a=a.substring(e[0].length),e[0].replace(Wb,c),f=!1;f&&(e=a.indexOf("<"),f=e<0?a:a.substring(0,e),a=e<0?"":a.substring(e),b.chars&&b.chars(fb(f)))}else a=a.replace(RegExp("(.*)<\\s*\\/\\s*"+g.last()+"[^>]*>","i"),function(a,c){c=c.replace(Hc,"$1").replace(Ic,"$1");b.chars&&b.chars(fb(c));return""}),d("",g.last());if(a==h)throw"Parse Error: "+a;h=a}d()}
40
+ function fb(a){gb.innerHTML=a.replace(/</g,"&lt;");return gb.innerText||gb.textContent||""}function Xb(a){return a.replace(/&/g,"&amp;").replace(Jc,function(a){return"&#"+a.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function wb(a){var b=!1,c=N(a,a.push);return{start:function(a,e,f){a=z(a);!b&&Ub[a]&&(b=a);!b&&Yb[a]==!0&&(c("<"),c(a),k(e,function(a,b){var d=z(b);if(Kc[d]==!0&&(Zb[d]!==!0||a.match(Lc)))c(" "),c(b),c('="'),c(Xb(a)),c('"')}),c(f?"/>":">"))},end:function(a){a=z(a);!b&&
41
+ Yb[a]==!0&&(c("</"),c(a),c(">"));a==b&&(b=!1)},chars:function(a){b||c(Xb(a))}}}function Mc(a){return a.replace(/\-(\w)/g,function(a,c,d){return d==0&&c=="w"?"w":c.toUpperCase()})}function Za(a,b){function c(){var e;for(var a=[this],c=b,g,h,j,i,l,m,n;a.length;){g=a.shift();h=0;for(j=g.length;h<j;h++){i=o(g[h]);c?(n=(l=i.data("events"))&&l.$destroy)&&k(n,function(a){a.handler()}):c=!c;l=0;for(e=(m=i.children()).length,i=e;l<i;l++)a.push(ga(m[l]))}}return d.apply(this,arguments)}var d=ga.fn[a],d=d.$original||
42
+ d;c.$original=d;ga.fn[a]=c}function $a(a){if(s(a)&&a.charAt(0)!="<")throw new u("selectors not implemented");return new W(a)}function W(a){if(a instanceof W)return a;else if(s(a)){var b=K.createElement("div");b.innerHTML="<div>&nbsp;</div>"+a;b.removeChild(b.firstChild);hb(this,b.childNodes);this.remove()}else hb(this,a)}function qa(a){$b(a);for(var b=0,a=a.childNodes||[];b<a.length;b++)qa(a[b])}function $b(a){var b=a[Fa],c=Ga[b];c&&(c.bind&&k(c.bind,function(b,c){c=="$destroy"?b({}):ib(a,c,b)}),
43
+ delete Ga[b],a[Fa]=D)}function Ha(a,b,c){var d=a[Fa],d=Ga[d||-1];if(p(c))d||(a[Fa]=d=Nc++,d=Ga[d]={}),d[b]=c;else return d?d[b]:null}function jb(a,b){return(" "+a.className+" ").replace(/[\n\t]/g," ").indexOf(" "+b+" ")>-1}function ac(a,b){b&&k(b.split(" "),function(b){a.className=S((" "+a.className+" ").replace(/[\n\t]/g," ").replace(" "+S(b)+" "," "))})}function bc(a,b){b&&k(b.split(" "),function(b){if(!jb(a,b))a.className=S(a.className+" "+S(b))})}function hb(a,b){if(b)for(var b=!b.nodeName&&p(b.length)&&
44
+ (!b||!b.document||!b.location||!b.alert||!b.setInterval)?b:[b],c=0;c<b.length;c++)a.push(b[c])}function ra(a){var b=typeof a,c=a;if(b=="object")if(typeof(c=a.$$hashKey)=="function")c=a.$$hashKey();else if(c===D)c=a.$$hashKey=Ra();return b+":"+c}function kb(a){k(a,this.put,this)}function lb(){}function ba(a,b){x[a]=x[a]||{};k(b,function(b){w(x[a],b)})}function cc(a,b,c,d,e){if(isNaN(a)||!isFinite(a))return"";var f=a<0,a=Math.abs(a),g=a+"",h="",j=[];if(g.indexOf("e")!==-1)h=g;else{g=(g.split(dc)[1]||
45
+ "").length;r(e)&&(e=Math.min(Math.max(b.minFrac,g),b.maxFrac));var g=Math.pow(10,e),a=Math.round(a*g)/g,a=(""+a).split(dc),g=a[0],a=a[1]||"",i=0,l=b.lgSize,m=b.gSize;if(g.length>=l+m)for(var i=g.length-l,n=0;n<i;n++)(i-n)%m===0&&n!==0&&(h+=c),h+=g.charAt(n);for(n=i;n<g.length;n++)(g.length-n)%l===0&&n!==0&&(h+=c),h+=g.charAt(n);for(;a.length<e;)a+="0";e&&(h+=d+a.substr(0,e))}j.push(f?b.negPre:b.posPre);j.push(h);j.push(f?b.negSuf:b.posSuf);return j.join("")}function Q(a,b,c){var d="";a<0&&(d="-",
46
+ a=-a);for(a=""+a;a.length<b;)a="0"+a;c&&(a=a.substr(a.length-b));return d+a}function H(a,b,c,d){return function(e){e=e["get"+a]();if(c>0||e>-c)e+=c;e===0&&c==-12&&(e=12);return Q(e,b,d)}}function Ia(a,b){return function(c,d){var e=c["get"+a](),f=Ja(b?"SHORT"+a:a);return d[f][e]}}function ka(a){a.$valid=!(a.$invalid=!(a.$readonly||a.$disabled||P(a.$error,{})))}function ec(){function a(a,e,f){if(a){for(var f=f||this,g=0,h=a.length;g<h;g++)a[g]===f&&(a.splice(g,1),a.length||delete c[e]);ka(b)}}var b=
47
+ this,c=b.$error={};b.$on("$destroy",function(d){d=d.targetScope;d.$widgetId&&delete b[d.$widgetId];k(c,a,d)});b.$on("$valid",function(b,e){var f=b.targetScope;delete f.$error[e];ka(f);a(c[e],e,f)});b.$on("$invalid",function(a,e){var f=a.targetScope;a:{var g=c[e];if(g)for(var h=0,j=g.length;h<j;h++){if(g[h]===f)break a}else c[e]=g=[];g.push(f);ka(b)}f.$error[e]=!0;ka(f)});ka(b)}function fc(a){for(var a=a.split("/"),b=a.length;b--;)a[b]=xa(a[b]);return a.join("/")}function Ka(a,b){var c=Oc.exec(a),
48
+ c={protocol:c[1],host:c[3],port:parseInt(c[5])||gc[c[1]]||null,path:c[6]||"/",search:c[8],hash:c[10]};if(b)b.$$protocol=c.protocol,b.$$host=c.host,b.$$port=c.port;return c}function sa(a,b,c){return a+"://"+b+(c==gc[a]?"":":"+c)}function Pc(a,b,c){var d=Ka(a);return decodeURIComponent(d.path)!=b||r(d.hash)||d.hash.indexOf(c)!=0?a:sa(d.protocol,d.host,d.port)+b.substr(0,b.lastIndexOf("/"))+d.hash.substr(c.length)}function Qc(a,b,c){var d=Ka(a);if(decodeURIComponent(d.path)==b)return a;else{var e=d.search&&
49
+ "?"+d.search||"",f=d.hash&&"#"+d.hash||"",g=b.substr(0,b.lastIndexOf("/")),h=d.path.substr(g.length);if(d.path.indexOf(g)!=0)throw'Invalid url "'+a+'", missing path prefix "'+g+'" !';return sa(d.protocol,d.host,d.port)+b+"#"+c+h+e+f}}function hc(a,b){b=b||"";this.$$parse=function(a){var d=Ka(a,this);if(d.path.indexOf(b)!=0)throw'Invalid url "'+a+'", missing path prefix "'+b+'" !';this.$$path=decodeURIComponent(d.path.substr(b.length));this.$$search=wa(d.search);this.$$hash=d.hash&&decodeURIComponent(d.hash)||
50
+ "";this.$$compose()};this.$$compose=function(){var a=Bb(this.$$search),d=this.$$hash?"#"+xa(this.$$hash):"";this.$$url=fc(this.$$path)+(a?"?"+a:"")+d;this.$$absUrl=sa(this.$$protocol,this.$$host,this.$$port)+b+this.$$url};this.$$parse(a)}function mb(a,b){var c;this.$$parse=function(a){var e=Ka(a,this);if(e.hash&&e.hash.indexOf(b)!=0)throw'Invalid url "'+a+'", missing hash prefix "'+b+'" !';c=e.path+(e.search?"?"+e.search:"");e=Rc.exec((e.hash||"").substr(b.length));this.$$path=e[1]?(e[1].charAt(0)==
51
+ "/"?"":"/")+decodeURIComponent(e[1]):"";this.$$search=wa(e[3]);this.$$hash=e[5]&&decodeURIComponent(e[5])||"";this.$$compose()};this.$$compose=function(){var a=Bb(this.$$search),e=this.$$hash?"#"+xa(this.$$hash):"";this.$$url=fc(this.$$path)+(a?"?"+a:"")+e;this.$$absUrl=sa(this.$$protocol,this.$$host,this.$$port)+c+(this.$$url?"#"+b+this.$$url:"")};this.$$parse(a)}function La(a){return function(){return this[a]}}function ic(a,b){return function(c){if(r(c))return this[a];this[a]=b(c);this.$$compose();
52
+ return this}}function nb(a){var b=jc[a];if(!b){var c=[];k(Ma(a),function(a){var b=Na(a);c.push(b?function(a){return a.$eval(b)}:function(){return a})});jc[a]=b=function(a,b,f){var g=[],h=a.hasOwnProperty("$element"),j=a.$element;a.$element=b;try{for(var i=0;i<c.length;i++){var l=c[i](a,b);Ua(l)?l="":L(l)&&(l=U(l,f));g.push(l)}return g.join("")}finally{h?a.$element=j:delete a.$element}}}return b}function ob(a){return function(b){return function(c){this.$watch(b,function(b,e,f){a(b.$index)&&(f&&c.removeClass(M(f)?
53
+ f.join(" "):f),e&&c.addClass(M(e)?e.join(" "):e))})}}}function Ma(a){for(var b=[],c=0,d;(d=a.indexOf("{{",c))>-1;)c<d&&b.push(a.substr(c,d-c)),c=d,d=a.indexOf("}}",d),d=d<0?a.length:d+2,b.push(a.substr(c,d-c)),c=d;c!=a.length&&b.push(a.substr(c,a.length-c));return b.length===0?[a]:b}function Na(a){return(a=a.replace(/\n/gm," ").match(/^\{\{(.*)\}\}$/))?a[1]:null}function kc(a,b){return function(c){var d=this,e=1*(c.attr("min")||Number.MIN_VALUE),f=1*(c.attr("max")||Number.MAX_VALUE);d.$on("$validate",
54
+ function(){var c=d.$viewValue,h=c&&S(c)!="",j=s(c)&&c.match(a);d.$emit(!h||j?"$valid":"$invalid",b);h&&(c*=1);d.$emit(j&&c<e?"$invalid":"$valid","MIN");d.$emit(j&&c>f?"$invalid":"$valid","MAX")});d.$parseView=function(){if(d.$viewValue.match(a))d.$modelValue=1*d.$viewValue;else if(d.$viewValue=="")d.$modelValue=null};d.$parseModel=function(){if(ma(d.$modelValue))d.$viewValue=""+d.$modelValue}}}function ca(a,b,c,d){var e=ia(d.attr("ng:bind-attr")||"{}"),f=/\s*{{(.*)}}\s*/.exec(e[c]),g=Oa[c];b["$"+
55
+ c]=g?s(d.prop(c))||!!d.prop(c)||!!d[0].attributes[c]:d.attr(c);e[c]&&f&&a.$watch(f[1],function(a,d){b["$"+c]=g?!!d:d;b.$emit("$validate")})}if(typeof K.getAttribute==Ta)K.getAttribute=function(){};var z=function(a){return s(a)?a.toLowerCase():a},Ja=function(a){return s(a)?a.toUpperCase():a},Cc=D,uc="boolean",mc="length",nc="name",za="null",qc="number",ub="object",pc="string",Ta="undefined",u=y.Error,O=parseInt((/msie (\d+)/.exec(z(navigator.userAgent))||[])[1],10),o,ga,ea=[].slice,la=[].push,tc=y.console?
56
+ N(y.console,y.console.error||v):v,x=y.angular||(y.angular={}),Xa=X(x,"markup"),Ab=X(x,"attrMarkup"),C=X(x,"directive"),G=X(x,"widget",function(a){a=z(a);O<9&&a.charAt(0)!="@"&&K.createElement(a);return a}),V=X(x,"filter"),$=X(x,"inputType",z),Ba=X(x,"service");X(x,"callbacks");var oa,R=["0","0","0"],Db=24;oa=O<9?function(a){a=a.nodeName?a:a[0];return a.scopeName&&a.scopeName!="HTML"?Ja(a.scopeName+":"+a.nodeName):a.nodeName}:function(a){return a.nodeName?a.nodeName:a[0].nodeName};x.toJson=U;x.fromJson=
57
+ ia;bb.prototype={link:function(a,b){var c=b;this.newScope&&(c=t(this.newScope)?b.$new(this.newScope(b)):b.$new(),a.data("$scope",c));k(this.linkFns,function(b){try{c.$service.invoke(c,b,[a])}catch(d){c.$service("$exceptionHandler")(d)}});var d,e=a[0].childNodes,f=this.children,g=this.paths,h=g.length;for(d=0;d<h;d++)e[g[d]]?f[d].link(o(e[g[d]]),c):delete g[d]},addLinkFn:function(a){a&&this.linkFns.push(a)},addChild:function(a,b){b&&(this.paths.push(a),this.children.push(b))},empty:function(){return this.linkFns.length===
58
+ 0&&this.paths.length===0}};zb.prototype={compile:function(a){var a=o(a),b=0,c,d=a.parent();if(a.length>1)throw u("Cannot compile multiple element roots: "+o("<div>").append(a.clone()).html());if(d&&d[0])for(var d=d[0],e=0;e<d.childNodes.length;e++)d.childNodes[e]==a[0]&&(b=e);c=this.templatize(a,b)||new bb;return function(b,d){var e=d?Ya.clone.call(a):a,b=b||Eb();e.data("$scope",b);b.$element=e;(d||v)(e,b);c.link(e,b);return b}},templatize:function(a,b){var c=this,d,e,f=c.directives,g=!0,h=!0,j=oa(a),
59
+ i=j.indexOf(":")>0?z(j).replace(":","-"):"",l,m={compile:N(c,c.compile),descend:function(a){p(a)&&(g=a);return g},directives:function(a){p(a)&&(h=a);return h},scope:function(a){if(p(a))l.newScope=l.newScope||a;return l.newScope}};a.addClass(i);l=new bb;Aa(a,function(b,e){if(!d&&(d=c.widgets("@"+e)))a.addClass("ng-attr-widget"),d=N(m,d,b,a)});if(!d&&(d=c.widgets(j)))i&&a.addClass("ng-widget"),d=N(m,d,a);d&&(h=g=!1,j=a.parent(),l.addLinkFn(d.call(m,a)),j&&j[0]&&(a=o(j[0].childNodes[b])));if(g)for(var n=
60
+ 0,E=a[0].childNodes;n<E.length;n++)oa(E[n])=="#text"&&k(c.markup,function(b){if(n<E.length){var c=o(E[n]);b.call(m,c.text(),c,a)}});h&&(Aa(a,function(b,d){k(c.attrMarkup,function(c){c.call(m,b,d,a)})}),Aa(a,function(b,c){if(e=f[c])a.addClass("ng-directive"),l.addLinkFn(f[c].call(m,b,a))}));g&&vc(a,function(a,b){l.addChild(b,c.templatize(a,b))});return l.empty()?null:l}};Fb.prototype={$new:function(a,b){var c=function(){};c.prototype=this;c=new c;c["this"]=c;c.$$listeners={};c.$parent=this;c.$id=Ra();
61
+ c.$$asyncQueue=[];c.$$phase=c.$$watchers=c.$$nextSibling=c.$$childHead=c.$$childTail=null;c.$$prevSibling=this.$$childTail;this.$$childHead?this.$$childTail=this.$$childTail.$$nextSibling=c:this.$$childHead=this.$$childTail=c;if(a){var d=a.prototype,e;for(e in d)c[e]=N(c,d[e]);this.$service.invoke(c,a,b)}return c},$watch:function(a,b){var c=Hb(a,"watch"),d=this.$$watchers,e={fn:Hb(b||v,"listener"),last:Number.NaN,get:c,exp:a};if(!d)d=this.$$watchers=[];d.unshift(e);return function(){Pa.remove(d,e)}},
62
+ $digest:function(){var a,b,c,d,e,f,g=100,h,j=[];if(this.$$phase)throw u(this.$$phase+" already in progress");do{f=!1;h=this;do{h.$$phase="$digest";for(d=h.$$asyncQueue;d.length;)try{h.$eval(d.shift())}catch(i){h.$service("$exceptionHandler")(i)}if(d=h.$$watchers)for(e=d.length;e--;)try{if(a=d[e],(b=a.get(h))!==(c=a.last)&&!P(b,c))f=!0,a.last=A(b),a.fn(h,b,c),g<5&&(j[4-g]||(j[4-g]=[]),t(a.exp)?j[4-g].push("fn: "+(a.exp.name||a.exp.toString())):j[4-g].push(a.exp))}catch(l){h.$service("$exceptionHandler")(l)}h.$$phase=
63
+ null;if(!(d=h.$$childHead||h!==this&&h.$$nextSibling))for(;h!==this&&!(d=h.$$nextSibling);)h=h.$parent}while(h=d);if(!g--)throw u("100 $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: "+U(j));}while(f)},$destroy:function(){if(this.$root!=this){this.$emit("$destroy");var a=this.$parent;if(a.$$childHead==this)a.$$childHead=this.$$nextSibling;if(a.$$childTail==this)a.$$childTail=this.$$prevSibling;if(this.$$prevSibling)this.$$prevSibling.$$nextSibling=this.$$nextSibling;
64
+ if(this.$$nextSibling)this.$$nextSibling.$$prevSibling=this.$$prevSibling}},$eval:function(a){return(s(a)?Y(a):a||v)(this)},$evalAsync:function(a){this.$$asyncQueue.push(a)},$apply:function(a){try{return this.$eval(a)}catch(b){this.$service("$exceptionHandler")(b)}finally{this.$root.$digest()}},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);return function(){Pa.remove(c,b)}},$emit:function(a,b){var c=[],d,e=!1,f=this,g={name:a,targetScope:f,cancel:function(){e=
65
+ !0}},h=[g].concat(ea.call(arguments,1)),j,i;do{d=f.$$listeners[a]||c;g.currentScope=f;j=0;for(i=d.length;j<i;j++)try{if(d[j].apply(null,h),e)return}catch(l){f.$service("$exceptionHandler")(l)}f=f.$parent}while(f)},$broadcast:function(a,b){var c=this,d=this,e={name:a,targetScope:this},f=[e].concat(ea.call(arguments,1));do if(c=d,e.currentScope=c,k(c.$$listeners[a],function(a){try{a.apply(null,f)}catch(b){c.$service("$exceptionHandler")(b)}}),!(d=c.$$childHead||c!==this&&c.$$nextSibling))for(;c!==this&&
66
+ !(d=c.$$nextSibling);)c=c.$parent;while(c=d)}};var xc=/^function\s*[^\(]*\(([^\)]*)\)/m,yc=/,/,zc=/^\s*(.+?)\s*$/,wc=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,db={"null":function(){return null},"true":function(){return!0},"false":function(){return!1},$undefined:v,"+":function(a,b,c){b=b(a);c=c(a);return(p(b)?b:0)+(p(c)?c:0)},"-":function(a,b,c){b=b(a);c=c(a);return(p(b)?b:0)-(p(c)?c:0)},"*":function(a,b,c){return b(a)*c(a)},"/":function(a,b,c){return b(a)/c(a)},"%":function(a,b,c){return b(a)%c(a)},"^":function(a,
67
+ b,c){return b(a)^c(a)},"=":v,"==":function(a,b,c){return b(a)==c(a)},"!=":function(a,b,c){return b(a)!=c(a)},"<":function(a,b,c){return b(a)<c(a)},">":function(a,b,c){return b(a)>c(a)},"<=":function(a,b,c){return b(a)<=c(a)},">=":function(a,b,c){return b(a)>=c(a)},"&&":function(a,b,c){return b(a)&&c(a)},"||":function(a,b,c){return b(a)||c(a)},"&":function(a,b,c){return b(a)&c(a)},"|":function(a,b,c){return c(a)(a,b(a))},"!":function(a,b){return!b(a)}},Bc={n:"\n",f:"\u000c",r:"\r",t:"\t",v:"\u000b",
68
+ "'":"'",'"':'"'},Mb={},Ob={},Nb={};k("abstract,boolean,break,byte,case,catch,char,class,const,continue,debugger,default,delete,do,double,else,enum,export,extends,false,final,finally,float,for,function,goto,if,implements,import,ininstanceof,intinterface,long,native,new,null,package,private,protected,public,return,short,static,super,switch,synchronized,this,throw,throws,transient,true,try,typeof,var,volatile,void,undefined,while,with".split(/,/),function(a){Nb[a]=!0});Pb.prototype={url:function(a){var b=
69
+ this,c=this.template,d,a=a||{};k(this.urlParams,function(e,g){d=xa(a[g]||b.defaults[g]||"");c=c.replace(RegExp(":"+g+"(\\W)"),d+"$1")});var c=c.replace(/\/?#$/,""),e=[];tb(a,function(a,c){b.urlParams[c]||e.push(fa(c)+"="+fa(a))});c=c.replace(/\/*$/,"");return c+(e.length?"?"+e.join("&"):"")}};Ea.DEFAULT_ACTIONS={get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}};Ea.prototype={route:function(a,b,c){function d(a){var c={};k(b||
70
+ {},function(b,d){c[d]=b.charAt&&b.charAt(0)=="@"?Da(a,b.substr(1)):b});return c}function e(a){A(a||{},this)}var f=this,g=new Pb(a),c=w({},Ea.DEFAULT_ACTIONS,c);k(c,function(h,j){var i=h.method=="POST"||h.method=="PUT";e[j]=function(a,b,c,j){var q={},I,o=v,B=null;switch(arguments.length){case 4:B=j,o=c;case 3:case 2:if(t(b)){if(t(a)){o=a;B=b;break}o=b;B=c}else{q=a;I=b;o=c;break}case 1:t(a)?o=a:i?I=a:q=a;break;case 0:break;default:throw"Expected between 0-4 arguments [params, data, success, error], got "+
71
+ arguments.length+" arguments.";}var J=this instanceof e?this:h.isArray?[]:new e(I);f.xhr(h.method,g.url(w({},d(I),h.params||{},q)),I,function(a,b){if(b)h.isArray?(J.length=0,k(b,function(a){J.push(new e(a))})):A(b,J);(o||v)(J)},B||h.verifyCache,h.verifyCache);return J};e.bind=function(d){return f.route(a,w({},b,d),c)};e.prototype["$"+j]=function(a,b,c){var g=d(this),f=v,h;switch(arguments.length){case 3:g=a;f=b;h=c;break;case 2:case 1:t(a)?(f=a,h=b):(g=a,f=b||v);case 0:break;default:throw"Expected between 1-3 arguments [params, success, error], got "+
72
+ arguments.length+" arguments.";}e[j].call(this,g,i?this:D,f,h)}});return e}};var Sc=y.XMLHttpRequest||function(){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(a){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(b){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(c){}throw new u("This browser does not support XMLHttpRequest.");},Wb=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,Vb=/^<\s*\/\s*([\w:-]+)[^>]*>/,Ec=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,
73
+ Gc=/^</,Fc=/^<\s*\//,Hc=/<\!--(.*?)--\>/g,Ic=/<!\[CDATA\[(.*?)]]\>/g,Lc=/^((ftp|https?):\/\/|mailto:|#)/,Jc=/([^\#-~| |!])/g,Tb=T("area,br,col,hr,img,wbr"),Qa=T("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),ta=T("rp,rt"),Sb=w({},ta,Qa),Qb=w({},Qa,T("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),Rb=w({},ta,T("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),
74
+ Ub=T("script,style"),Yb=w({},Tb,Qb,Rb,Sb),Zb=T("background,cite,href,longdesc,src,usemap"),Kc=w({},Zb,T("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,span,start,summary,target,title,type,valign,value,vspace,width")),gb=K.createElement("pre"),Ga={},Fa="ng-"+(new Date).getTime(),Nc=1,Tc=y.document.addEventListener?function(a,
75
+ b,c){a.addEventListener(b,c,!1)}:function(a,b,c){a.attachEvent("on"+b,c)},ib=y.document.removeEventListener?function(a,b,c){a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent("on"+b,c)},Ya=W.prototype={ready:function(a){function b(){c||(c=!0,a())}var c=!1;this.bind("DOMContentLoaded",b);$a(y).bind("load",b)},toString:function(){var a=[];k(this,function(b){a.push(""+b)});return"["+a.join(", ")+"]"},eq:function(a){return a>=0?o(this[a]):o(this[this.length+a])},length:0,push:la,sort:[].sort,
76
+ splice:[].splice},Oa={};k("multiple,selected,checked,disabled,readOnly,required".split(","),function(a){Oa[z(a)]=a});k({data:Ha,inheritedData:function(a,b,c){for(a=o(a);a.length;){if(c=a.data(b))return c;a=a.parent()}},scope:function(a){return o(a).inheritedData("$scope")},removeAttr:function(a,b){a.removeAttribute(b)},hasClass:jb,css:function(a,b,c){b=Mc(b);if(p(c))a.style[b]=c;else{var d;O<=8&&(d=a.currentStyle&&a.currentStyle[b],d===""&&(d="auto"));d=d||a.style[b];O<=8&&(d=d===""?D:d);return d}},
77
+ attr:function(a,b,c){var d=z(b);if(Oa[d])if(p(c))c?(a[b]=!0,a.setAttribute(b,d)):(a[b]=!1,a.removeAttribute(d));else return a[b]||a.getAttribute(b)!==null&&(O<9?a.getAttribute(b)!=="":1)?d:D;else if(p(c))a.setAttribute(b,c);else if(a.getAttribute)return a=a.getAttribute(b,2),a===null?D:a},prop:function(a,b,c){if(p(c))a[b]=c;else return a[b]},text:w(O<9?function(a,b){if(a.nodeType==3){if(r(b))return a.nodeValue;a.nodeValue=b}else{if(r(b))return a.innerText;a.innerText=b}}:function(a,b){if(r(b))return a.textContent;
78
+ a.textContent=b},{$dv:""}),val:function(a,b){if(r(b))return a.value;a.value=b},html:function(a,b){if(r(b))return a.innerHTML;for(var c=0,d=a.childNodes;c<d.length;c++)qa(d[c]);a.innerHTML=b}},function(a,b){W.prototype[b]=function(b,d){var e,f;if((a.length==2?b:d)===D)if(L(b)){for(e=0;e<this.length;e++)for(f in b)a(this[e],f,b[f]);return this}else{if(this.length)return a(this[0],b,d)}else{for(e=0;e<this.length;e++)a(this[e],b,d);return this}return a.$dv}});k({removeData:$b,dealoc:qa,bind:function(a,
79
+ b,c){var d=Ha(a,"bind");d||Ha(a,"bind",d={});k(b.split(" "),function(b){var f=d[b];if(!f)d[b]=f=function(b){if(!b.preventDefault)b.preventDefault=function(){b.returnValue=!1};if(!b.stopPropagation)b.stopPropagation=function(){b.cancelBubble=!0};if(!b.target)b.target=b.srcElement||K;if(r(b.defaultPrevented)){var c=b.preventDefault;b.preventDefault=function(){b.defaultPrevented=!0;c.call(b)};b.defaultPrevented=!1}b.isDefaultPrevented=function(){return b.defaultPrevented};k(f.fns,function(c){c.call(a,
80
+ b)})},f.fns=[],Tc(a,b,f);f.fns.push(c)})},unbind:function(a,b,c){var d=Ha(a,"bind");d&&(r(b)?k(d,function(b,c){ib(a,c,b);delete d[c]}):r(c)?(ib(a,b,d[b]),delete d[b]):Pa.remove(d[b].fns,c))},replaceWith:function(a,b){var c,d=a.parentNode;qa(a);k(new W(b),function(b){c?d.insertBefore(b,c.nextSibling):d.replaceChild(b,a);c=b})},children:function(a){var b=[];k(a.childNodes,function(a){a.nodeName!="#text"&&b.push(a)});return b},append:function(a,b){k(new W(b),function(b){a.nodeType===1&&a.appendChild(b)})},
81
+ prepend:function(a,b){if(a.nodeType===1){var c=a.firstChild;k(new W(b),function(b){c?a.insertBefore(b,c):(a.appendChild(b),c=b)})}},remove:function(a){qa(a);var b=a.parentNode;b&&b.removeChild(a)},after:function(a,b){var c=a,d=a.parentNode;k(new W(b),function(a){d.insertBefore(a,c.nextSibling);c=a})},addClass:bc,removeClass:ac,toggleClass:function(a,b,c){r(c)&&(c=!jb(a,b));(c?bc:ac)(a,b)},parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},next:function(a){return a.nextSibling},find:function(a,
82
+ b){return a.getElementsByTagName(b)},clone:function(a){return a.cloneNode(!0)}},function(a,b){W.prototype[b]=function(b,d){for(var e,f=0;f<this.length;f++)e==D?(e=a(this[f],b,d),e!==D&&(e=o(e))):hb(e,a(this[f],b,d));return e==D?this:e}});var Z={typeOf:function(a){if(a===null)return za;var b=typeof a;if(b==ub){if(a instanceof Array)return"array";if(na(a))return"date";if(a.nodeType==1)return"element"}return b}},la={copy:A,size:xb,equals:P},Qa={extend:w},Pa={indexOf:yb,sum:function(a,b){for(var c=pb.compile(b),
83
+ d=0,e=0;e<a.length;e++){var f=1*c(a[e]);isNaN(f)||(d+=f)}return d},remove:function(a,b){var c=yb(a,b);c>=0&&a.splice(c,1);return b},filter:function(a,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=
84
+ 0;c<a.length;c++)if(d(a[c],b))return!0;return!1;default:return!1}};switch(typeof b){case "boolean":case "number":case "string":b={$:b};case "object":for(var e in b)e=="$"?function(){var a=(""+b[e]).toLowerCase();a&&c.push(function(b){return d(b,a)})}():function(){var a=e,g=(""+b[e]).toLowerCase();g&&c.push(function(b){return d(Da(b,a),g)})}();break;case "function":c.push(b);break;default:return a}for(var f=[],g=0;g<a.length;g++){var h=a[g];c.check(h)&&f.push(h)}return f},add:function(a,b){a.push(r(b)?
85
+ {}:b);return a},count:function(a,b){if(!b)return a.length;var c=pb.compile(b),d=0;k(a,function(a){c(a)&&d++});return d},orderBy:function(a,b,c){function d(a,b){return va(b)?function(b,c){return a(c,b)}:a}if(!b)return a;for(var b=M(b)?b:[b],b=rc(b,function(a){var b=!1,c=a||da;if(s(a)){if(a.charAt(0)=="+"||a.charAt(0)=="-")b=a.charAt(0)=="-",a=a.substring(1);c=Y(a)}return d(function(a,b){var d;d=c(a);var e=c(b),g=typeof d,f=typeof e;g==f?(g=="string"&&(d=d.toLowerCase()),g=="string"&&(e=e.toLowerCase()),
86
+ d=d===e?0:d<e?-1:1):d=g<f?-1:1;return d},b)}),e=[],f=0;f<a.length;f++)e.push(a[f]);return e.sort(d(function(a,c){for(var d=0;d<b.length;d++){var e=b[d](a,c);if(e!==0)return e}return 0},c))},limitTo:function(a,b){var b=parseInt(b,10),c=[],d,e;if(!a||!(a instanceof Array))return c;b>a.length?b=a.length:b<-a.length&&(b=-a.length);b>0?(d=0,e=b):(d=a.length+b,e=a.length);for(;d<e;d++)c.push(a[d]);return c}},Uc=/^(\d{4})-(\d\d)-(\d\d)(?:T(\d\d)(?:\:(\d\d)(?:\:(\d\d)(?:\.(\d{3}))?)?)?Z)?$/,aa={quote:function(a){return'"'+
87
+ a.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\v/g,"\\v")+'"'},quoteUnicode:function(a){for(var a=x.String.quote(a),b=[],c=0;c<a.length;c++){var d=a.charCodeAt(c);d<128?b.push(a.charAt(c)):(d="000"+d.toString(16),b.push("\\u"+d.substring(d.length-4)))}return b.join("")},toDate:function(a){var b;if(s(a)&&(b=a.match(Uc)))a=new Date(0),a.setUTCFullYear(b[1],b[2]-1,b[3]),a.setUTCHours(b[4]||0,b[5]||0,b[6]||0,b[7]||
88
+ 0);return a}},ta={toString:function(a){if(!a)return a;var b=a.toISOString?a.toISOString():"";return b.length==24?b:Q(a.getUTCFullYear(),4)+"-"+Q(a.getUTCMonth()+1,2)+"-"+Q(a.getUTCDate(),2)+"T"+Q(a.getUTCHours(),2)+":"+Q(a.getUTCMinutes(),2)+":"+Q(a.getUTCSeconds(),2)+"."+Q(a.getUTCMilliseconds(),3)+"Z"}},pb={compile:function(a){return t(a)?a:a?Y(a):da}};kb.prototype={put:function(a,b){this[ra(a)]=b},get:function(a){return this[ra(a)]},remove:function(a){var b=this[a=ra(a)];delete this[a];return b}};
89
+ lb.prototype={push:function(a,b){var c=this[a=ra(a)];c?c.push(b):this[a]=[b]},shift:function(a){var b=this[a=ra(a)];if(b)return b.length==1?(delete this[a],b[0]):b.shift()}};ba("Global",[Z]);ba("Collection",[Z,la]);ba("Array",[Z,la,Pa]);ba("Object",[Z,la,Qa]);ba("String",[Z,aa]);ba("Date",[Z,ta]);x.Date.toString=ta.toString;ba("Function",[Z,la,pb]);V.currency=function(a,b){var c=this.$service("$locale").NUMBER_FORMATS;this.$element.toggleClass("ng-format-negative",a<0);if(r(b))b=c.CURRENCY_SYM;return cc(a,
90
+ c.PATTERNS[1],c.GROUP_SEP,c.DECIMAL_SEP,2).replace(/\u00A4/g,b)};var dc=".";V.number=function(a,b){var c=this.$service("$locale").NUMBER_FORMATS;return cc(a,c.PATTERNS[0],c.GROUP_SEP,c.DECIMAL_SEP,b)};var Vc={yyyy:H("FullYear",4),yy:H("FullYear",2,0,!0),y:H("FullYear",1),MMMM:Ia("Month"),MMM:Ia("Month",!0),MM:H("Month",2,1),M:H("Month",1,1),dd:H("Date",2),d:H("Date",1),HH:H("Hours",2),H:H("Hours",1),hh:H("Hours",2,-12),h:H("Hours",1,-12),mm:H("Minutes",2),m:H("Minutes",1),ss:H("Seconds",2),s:H("Seconds",
91
+ 1),EEEE:Ia("Day"),EEE:Ia("Day",!0),a:function(a,b){return a.getHours()<12?b.AMPMS[0]:b.AMPMS[1]},Z:function(a){a=a.getTimezoneOffset();return Q(a/60,2)+Q(Math.abs(a%60),2)}},Wc=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,Xc=/^\d+$/;V.date=function(a,b){var c=this.$service("$locale"),d="",e=[],f,g,b=b||"mediumDate",b=c.DATETIME_FORMATS[b]||b;s(a)&&(a=Xc.test(a)?parseInt(a,10):aa.toDate(a));ma(a)&&(a=new Date(a));if(!na(a))return a;for(;b;)(g=Wc.exec(b))?(e=e.concat(ea.call(g,
92
+ 1)),b=e.pop()):(e.push(b),b=null);k(e,function(b){f=Vc[b];d+=f?f(a,c.DATETIME_FORMATS):b.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return d};V.json=function(a){this.$element.addClass("ng-monospace");return U(a,!0,/^(\$|this$)/)};V.lowercase=z;V.uppercase=Ja;V.html=function(a,b){return new Va(a,b)};var Yc=/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s\.\;\,\(\)\{\}\<\>]/,Zc=/^mailto:/;V.linky=function(a){if(!a)return a;for(var b=a,c=[],d=wb(c),e,f;a=b.match(Yc);)e=a[0],a[2]==a[3]&&(e="mailto:"+
93
+ e),f=a.index,d.chars(b.substr(0,f)),d.start("a",{href:e}),d.chars(a[0].replace(Zc,"")),d.end("a"),b=b.substring(f+a[0].length);d.chars(b);return new Va(c.join(""))};F("$cookieStore",function(a){return{get:function(b){return ia(a[b])},put:function(b,c){a[b]=U(c)},remove:function(b){delete a[b]}}},["$cookies"]);F("$cookies",function(a){var b=this,c={},d={},e,f=!1;a.addPollFn(function(){var g=a.cookies();e!=g&&(e=g,A(g,d),A(g,c),f&&b.$apply())})();f=!0;this.$watch(function(){var b,e,f;for(b in d)r(c[b])&&
94
+ a.cookies(b,D);for(b in c)e=c[b],s(e)?e!==d[b]&&(a.cookies(b,e),f=!0):p(d[b])?c[b]=d[b]:delete c[b];if(f)for(b in e=a.cookies(),c)c[b]!==e[b]&&(r(e[b])?delete c[b]:c[b]=e[b])});return c},["$browser"]);F("$defer",function(a){function b(b,e){return a.defer(function(){c.$apply(b)},e)}var c=this;b.cancel=function(b){return a.defer.cancel(b)};return b},["$browser"]);F("$document",function(a){return o(a.document)},["$window"]);F("$exceptionHandler",function(a){return function(b){a.error(b)}},["$log"]);
95
+ F("$formFactory",function(){function a(b){return(b||a.rootForm).$new(ec)}a.rootForm=a(this);a.forElement=function(b){return b.inheritedData("$form")||a.rootForm};return a});ec.prototype.$createWidget=function(a){var b=a.scope,c=a.onChange,d=a.alias,e=ya(a.model).assignable(),f=e.assign,g=this.$new(a.controller,a.controllerArgs);g.$error={};g.$modelValue=Number.NaN;b.$watch(e,function(a,b){if(!P(g.$modelValue,b))g.$modelValue=b,g.$parseModel?g.$parseModel():g.$viewValue=b,g.$emit("$validate"),g.$render&&
96
+ g.$render()});g.$on("$viewChange",function(a,d){if(!P(g.$viewValue,d))g.$viewValue=d,g.$parseView?g.$parseView():g.$modelValue=g.$viewValue,f(b,g.$modelValue),c&&b.$eval(c),g.$emit("$validate")});ka(g);d&&!this.hasOwnProperty(d)?(this[d]=g,g.$widgetId=d):d=null;return g};var Oc=/^(file|ftp|http|https):\/\/(\w+:{0,1}\w*@)?([\w\.-]*)(:([0-9]+))?(\/[^\?#]*)?(\?([^#]*))?(#(.*))?$/,lc=/^([^\?#]*)?(\?([^#]*))?(#(.*))?$/,Rc=lc,gc={http:80,https:443,ftp:21};hc.prototype=mb.prototype={$$replace:!1,absUrl:La("$$absUrl"),
97
+ url:function(a,b){if(r(a))return this.$$url;var c=lc.exec(a);this.path(decodeURIComponent(c[1]||"")).search(c[3]||"").hash(c[5]||"",b);return this},protocol:La("$$protocol"),host:La("$$host"),port:La("$$port"),path:ic("$$path",function(a){return a.charAt(0)=="/"?a:"/"+a}),search:function(a,b){if(r(a))return this.$$search;p(b)?b===null?delete this.$$search[a]:this.$$search[a]=fa(b):this.$$search=s(a)?wa(a):a;this.$$compose();return this},hash:ic("$$hash",da),replace:function(){this.$$replace=!0;return this}};
98
+ F("$location",function(a,b,c,d){var e=this,f,g=a.baseHref()||"/",h=g.substr(0,g.lastIndexOf("/")),j=c.hashPrefix||"",i=a.url();if(c.html5Mode){var b=f=b.history?new hc(Pc(i,g,j),h):new mb(Qc(i,g,j),j),l=sa(b.protocol(),b.host(),b.port())+h;d.bind("click",function(a){if(!a.ctrlKey&&!(a.metaKey||a.which==2)){for(var b=o(a.target);b.length&&z(b[0].nodeName)!=="a";)b=b.parent();var c=b.attr("href");c&&!p(b.attr("ng:ext-link"))&&!b.attr("target")&&(c=c.replace(l,""),c.substr(0,4)!="http"&&(c=c.indexOf(h)===
99
+ 0?c.substr(h.length):c,f.url(c),e.$apply(),a.preventDefault(),y.angular["ff-684208-preventDefault"]=!0))}})}else f=new mb(i,j);f.absUrl()!=i&&a.url(f.absUrl(),!0);a.onUrlChange(function(a){f.absUrl()!=a&&(f.$$parse(a),e.$apply())});var m=0;e.$watch(function(){a.url()!=f.absUrl()&&(m++,e.$evalAsync(function(){a.url(f.absUrl(),f.$$replace);f.$$replace=!1}));return m});return f},["$browser","$sniffer","$locationConfig","$document"]);x.service("$locationConfig",function(){return{html5Mode:!1,hashPrefix:""}});
100
+ F("$log",function(a){function b(b){var d=a.console||{},e=d[b]||d.log||v;return e.apply?function(){var a=[];k(arguments,function(b){a.push(oc(b))});return e.apply(d,a)}:e}return{log:b("log"),warn:b("warn"),info:b("info"),error:b("error")}},["$window"]);F("$resource",function(a){a=new Ea(a);return N(a,a.route)},["$xhr.cache"]);F("$route",function(a,b){function c(){var b,c;k(e,function(d,e){if(!c&&(b=f(a.path(),e)))c=ua(d,{params:w({},a.search(),b),pathParams:b}),c.$route=d});return c||e[null]&&ua(e[null],
101
+ {params:{},pathParams:{}})}function d(a,b){var c=[];k((a||"").split(":"),function(a,d){if(d==0)c.push(a);else{var e=a.match(/(\w+)(.*)/),g=e[1];c.push(b[g]);c.push(e[2]||"");delete b[g]}});return c.join("")}var e={},f=function(a,b){var c="^"+b.replace(/([\.\\\(\)\^\$])/g,"\\$1")+"$",d=[],e={};k(b.split(/\W/),function(a){if(a){var b=RegExp(":"+a+"([\\W])");c.match(b)&&(c=c.replace(b,"([^\\/]*)$1"),d.push(a))}});var g=a.match(RegExp(c));g&&k(d,function(a,b){e[a]=g[b+1]});return g?e:null},g=this,h=this,
102
+ j=0,i=!1,l={routes:e,parent:function(a){a&&(g=a)},when:function(a,b){var c=e[a];c||(c=e[a]={reloadOnSearch:!0});b&&w(c,b);j++;return c},otherwise:function(a){l.when(null,a)},reload:function(){j++;i=!0}};this.$watch(function(){return j+a.url()},function(){var e=c(),f=l.current,j;if(e&&f&&e.$route===f.$route&&P(e.pathParams,f.pathParams)&&!e.reloadOnSearch&&!i)l.current=e,A(e.params,b),f.scope&&f.scope.$emit("$routeUpdate");else{i=!1;h.$broadcast("$beforeRouteChange",e,f);f&&f.scope&&f.scope.$destroy();
103
+ if(l.current=e)e.redirectTo?s(e.redirectTo)?a.path(d(e.redirectTo,e.params)).search(e.params).replace():a.url(e.redirectTo(e.pathParams,a.path(),a.search())).replace():(A(e.params,b),(j=e.controller)&&cb(j),e.scope=g.$new(j));h.$broadcast("$afterRouteChange",e,f)}});return l},["$location","$routeParams"]);Ba("$routeParams",function(){return{}});F("$sniffer",function(a){return a.Modernizr?a.Modernizr:{history:!(!a.history||!a.history.pushState),hashchange:"onhashchange"in a&&(!a.document.documentMode||
104
+ a.document.documentMode>7)}},["$window"]);F("$window",N(y,da,y));F("$xhr.bulk",function(a,b,c){function d(b,c,g,h,j){t(g)&&(j=h,h=g,g=null);var i;k(d.urls,function(a){if(t(a.match)?a.match(c):a.match.exec(c))i=a});if(i){if(!i.requests)i.requests=[];b={method:b,url:c,data:g,success:h};if(j)b.error=j;i.requests.push(b)}else a(b,c,g,h,j)}d.urls={};d.flush=function(e,f){ha(e=e||v,0);ha(f=f||v,1);k(d.urls,function(d,f){var j=d.requests;if(j&&j.length)d.requests=[],d.callbacks=[],a("POST",f,{requests:j},
105
+ function(a,d){k(d,function(a,d){try{a.status==200?(j[d].success||v)(a.status,a.response):t(j[d].error)?j[d].error(a.status,a.response):b(j[d],a)}catch(e){c.error(e)}});e()},function(a,d){k(j,function(e){try{t(e.error)?e.error(a,d):b(e,d)}catch(g){c.error(g)}})})})};this.$watch(function(){d.flush()});return d},["$xhr","$xhr.error","$log"]);F("$xhr.cache",function(a,b,c,d){function e(a,h,j,i,l,m,n){t(j)?(t(i)?(n=m,m=l,l=i):(m=i,n=l,l=null),i=j,j=null):t(l)||(n=m,m=l,l=null);if(a=="GET"){var E;if(E=
106
+ e.data[h])if(n?i(200,A(E.value)):b(function(){i(200,A(E.value))}),!m)return;(m=f[h])?(m.successes.push(i),m.errors.push(l)):(f[h]={successes:[i],errors:[l]},e.delegate(a,h,j,function(a,b){a==200&&(e.data[h]={value:b});var c=f[h].successes;delete f[h];k(c,function(c){try{(c||v)(a,A(b))}catch(e){d.error(e)}})},function(b,e){var i=f[h].errors,l=f[h].successes;delete f[h];k(i,function(f,i){try{t(f)?f(b,A(e)):c({method:a,url:h,data:j,success:l[i]},{status:b,body:e})}catch(n){d.error(n)}})}))}else e.data=
107
+ {},e.delegate(a,h,j,i,l)}var f={};e.data={};e.delegate=a;return e},["$xhr.bulk","$defer","$xhr.error","$log"]);F("$xhr.error",function(a){return function(b,c){a.error("ERROR: XHR: "+b.url,b,c)}},["$log"]);F("$xhr",function(a,b,c){function d(d,h,j,i,l){t(j)&&(l=i,i=j,j=null);j&&L(j)&&(j=U(j));a.xhr(d,h,j,function(a,f){try{s(f)&&(f.match(/^\)\]\}',\n/)&&(f=f.substr(6)),/^\s*[\[\{]/.exec(f)&&/[\}\]]\s*$/.exec(f)&&(f=ia(f,!0))),e.$apply(function(){200<=a&&a<300?i(a,f):t(l)?l(a,f):b({method:d,url:h,data:j,
108
+ success:i},{status:a,body:f})})}catch(k){c.error(k)}},w({"X-XSRF-TOKEN":a.cookies()["XSRF-TOKEN"]},f.common,f[z(d)]))}var e=this,f={common:{Accept:"application/json, text/plain, */*","X-Requested-With":"XMLHttpRequest"},post:{"Content-Type":"application/x-www-form-urlencoded"},get:{},head:{},put:{},"delete":{},patch:{}};d.defaults={headers:f};return d},["$browser","$xhr.error","$log"]);F("$locale",function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,
109
+ 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(","),SHORTDAY:"Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(","),
110
+ 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(a){return a===1?"one":"other"}}});C("ng:init",function(a){return function(){this.$eval(a)}});C("ng:controller",function(a){this.scope(function(b){b=Da(b,a,!0)||Da(y,a,!0);ha(b,a);cb(b);return b});return v});C("ng:bind",function(a,b){b.addClass("ng-binding");var c=ya(a).statements();
111
+ return function(a){var b=Number.NaN;this.$watch(function(f){var g,h,j,i,l=f.hasOwnProperty("$element"),k=f.$element;f.$element=a;try{g=c(f);if(j=g instanceof Va)g=(h=g).html;b!==g&&(i=Ua(g),!j&&!i&&L(g)&&(g=U(g,!0)),g!=b&&(b=g,j?a.html(h.get()):i?(a.html(""),a.append(g)):a.text(g==D?"":g)))}catch(n){f.$service("$exceptionHandler")(n)}finally{l?f.$element=k:delete f.$element}})}});var jc={};C("ng:bind-template",function(a,b){b.addClass("ng-binding");var c=nb(a);return function(a){var b;this.$watch(function(f){f=
112
+ c(f,a,!0);f!=b&&(a.text(f),b=f)})}});C("ng:bind-attr",function(a){return function(b){var c={};this.$watch(function(d){var e=d.$eval(a),f;for(f in e){var g=nb(e[f])(d,b);c[f]!==g&&(c[f]=g,b.attr(f,Oa[z(f)]?va(g):g))}})}});C("ng:click",function(a){return function(b){var c=this;b.bind("click",function(b){c.$apply(a);b.stopPropagation()})}});C("ng:submit",function(a){return function(b){var c=this;b.bind("submit",function(b){c.$apply(a);b.preventDefault()})}});C("ng:class",ob(function(){return!0}));C("ng:class-odd",
113
+ ob(function(a){return a%2===0}));C("ng:class-even",ob(function(a){return a%2===1}));C("ng:show",function(a){return function(b){this.$watch(a,function(a,d){b.css("display",va(d)?"":"none")})}});C("ng:hide",function(a){return function(b){this.$watch(a,function(a,d){b.css("display",va(d)?"none":"")})}});C("ng:style",function(a){return function(b){this.$watch(a,function(a,d,e){e&&k(e,function(a,c){b.css(c,"")});d&&b.css(d)})}});C("ng:cloak",function(a,b){b.removeAttr("ng:cloak");b.removeClass("ng-cloak")});
114
+ Xa("{{}}",function(a,b,c){var d=Ma(a);if(d.length>1||Na(d[0])!==null)if(sc(c[0]))c.attr("ng:bind-template",a);else{var e=b,f;k(Ma(a),function(a){var b=Na(a);b?(f=o("<span>"),f.attr("ng:bind",b)):f=o(K.createTextNode(a));O&&a.charAt(0)==" "&&(f=o("<span>&nbsp;</span>"),b=f.html(),f.text(a.substr(1)),f.html(b+f.html()));e.after(f);e=f});b.remove()}});Xa("option",function(a,b,c){z(oa(c))=="option"&&(O<=7?vb(c[0].outerHTML,{start:function(b,e){r(e.value)&&c.attr("value",a)}}):c[0].getAttribute("value")==
115
+ null&&c.attr("value",a))});var qb={};k("src,href,multiple,selected,checked,disabled,readonly,required".split(","),function(a){qb["ng:"+a]=a});Ab("{{}}",function(a,b,c){if(!C(b)&&!C("@"+b)){O&&b=="src"&&(a=decodeURI(a));var d=Ma(a);if(d.length>1||Na(d[0])!==null||qb[b])c.removeAttr(b),d=ia(c.attr("ng:bind-attr")||"{}"),d[qb[b]||b]=a,c.attr("ng:bind-attr",U(d))}});G("ng:include",function(a){var b=this,c=a.attr("src"),d=a.attr("scope")||"",e=a[0].getAttribute("onload")||"";if(a[0]["ng:compiled"])this.descend(!0),
116
+ this.directives(!0);else return a[0]["ng:compiled"]=!0,w(function(a,g){var h=0,j=[],i,l;this.$watch(c,function(){h++});this.$watch(function(a){a=a.$eval(d);a!==l&&(l=a,h++)});this.$watch(function(){return h},function(h){for(var l=h.$eval(c),k=h.$eval(d);j.length;)j.pop().$destroy();l?a("GET",l,null,function(a,c){g.html(c);k?i=k:j.push(i=h.$new());b.compile(g)(i);h.$eval(e)},!1,!0):(i=null,g.html(""))})},{$inject:["$xhr.cache"]})});G("ng:switch",function(a){var b=a.attr("on"),c=a.attr("change"),d=
117
+ {},e,f=a.children(),g=f.length,h,j;if(!b)throw new u("Missing 'on' attribute.");for(;g--;)h=o(f[g]),h.remove(),j=h.attr("ng:switch-when"),s(j)?d[j]=this.compile(h):s(h.attr("ng:switch-default"))&&(e=this.compile(h));f=null;a.html("");return function(a){var f=0,g,h;this.$watch(b,function(b,j){a.html("");if(h=d[j]||e)f++,g&&g.$destroy(),g=b.$new(),g.$eval(c)});this.$watch(function(){return f},function(){a.html("");h&&h(g,function(b){a.append(b)})})}});G("a",function(){this.descend(!0);this.directives(!0);
118
+ return function(a){var b=(a.attr("ng:bind-attr")||"").indexOf('"href":')!==-1;!b&&!a.attr("name")&&!a.attr("href")&&a.attr("href","");a.attr("href")===""&&!b&&a.bind("click",function(a){a.preventDefault()})}});G("@ng:repeat",function(a,b){b.removeAttr("ng:repeat");b.replaceWith(o("<\!-- ng:repeat: "+a+" --\>"));var c=this.compile(b);return function(b){var e=a.match(/^\s*(.+)\s+in\s+(.*)\s*$/),f,g,h,j;if(!e)throw u("Expected ng:repeat in form of '_item_ in _collection_' but got '"+a+"'.");f=e[1];g=
119
+ e[2];e=f.match(/^([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\)$/);if(!e)throw u("'item' in 'item in collection' should be identifier or (key, value) but got '"+keyValue+"'.");h=e[3]||e[1];j=e[2];var i=this,l=new lb;this.$watch(function(a){var e,f=a.$eval(g),k=xb(f,!0),o,t=new lb,B,p,r,s,w=b;if(M(f))r=f||[];else{r=[];for(B in f)f.hasOwnProperty(B)&&B.charAt(0)!="$"&&r.push(B);r.sort()}e=0;for(a=r.length;e<a;e++){B=f===r?e:r[e];p=f[B];if(s=l.shift(p)){o=s.scope;t.push(p,s);if(e!==s.index)s.index=e,w.after(s.element);
120
+ w=s.element}else o=i.$new();o[h]=p;j&&(o[j]=B);o.$index=e;o.$position=e==0?"first":e==k-1?"last":"middle";s||c(o,function(a){w.after(a);s={scope:o,element:w=a,index:e};t.push(p,s)})}for(B in l)if(l.hasOwnProperty(B))for(r=l[B];r.length;)p=r.pop(),p.element.remove(),p.scope.$destroy();l=t})}});G("@ng:non-bindable",v);G("ng:view",function(a){var b=this;if(a[0]["ng:compiled"])b.descend(!0),b.directives(!0);else return a[0]["ng:compiled"]=!0,pa("$xhr.cache","$route",function(a,d,e){var f=0;this.$on("$afterRouteChange",
121
+ function(){f++});this.$watch(function(){return f},function(g,h){var j=d.current&&d.current.template;j?a("GET",j,function(a,c){h==f&&(e.html(c),b.compile(e)(d.current.scope))}):e.html("")})})});G("ng:pluralize",function(a){var b=a.attr("count"),c=a.attr("when"),d=a.attr("offset")||0;return pa("$locale",function(a,f){var g=this,h=g.$eval(c),j={};k(h,function(a,c){j[c]=nb(a.replace(/{}/g,"{{"+b+"-"+d+"}}"))});g.$watch(function(){var c=parseFloat(g.$eval(b));return isNaN(c)?"":(h[c]||(c=a.pluralCat(c-
122
+ d)),j[c](g,f,!0))},function(a,b){f.text(b)})})});G("form",function(){this.descend(!0);this.directives(!0);return pa("$formFactory",function(a,b){function c(a){f.$watch("$"+a,function(c,d){b[d?"addClass":"removeClass"]("ng-"+a)})}var d=b.attr("name"),e=a.forElement(b),f=a(e);b.data("$form",f);b.bind("submit",function(a){a.preventDefault()});d&&(this[d]=f);c("valid");c("invalid")})});G("ng:form",G("form"));var $c=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,
123
+ ad=/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/;$("email",function(){var a=this;this.$on("$validate",function(){var b=a.$viewValue;a.$emit(!b||b.match(ad)?"$valid":"$invalid","EMAIL")})});$("url",function(){var a=this;this.$on("$validate",function(){var b=a.$viewValue;a.$emit(!b||b.match($c)?"$valid":"$invalid","URL")})});$("list",function(){function a(a){var c=[];k(a.split(/\s*,\s*/),function(a){a&&c.push(S(a))});return c}this.$parseView=function(){s(this.$viewValue)&&(this.$modelValue=a(this.$viewValue))};
124
+ this.$parseModel=function(){var b=this.$modelValue;if(M(b)&&(!s(this.$viewValue)||!P(a(this.$viewValue),b)))this.$viewValue=b.join(", ")}});$("number",kc(/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,"NUMBER"));$("integer",kc(/^\s*(\-|\+)?\d+\s*$/,"INTEGER"));$("checkbox",function(a){var b=this,c=a.attr("ng:true-value"),d=a.attr("ng:false-value");s(c)||(c=!0);s(d)||(d=!1);a.bind("click",function(){b.$apply(function(){b.$emit("$viewChange",a[0].checked)})});b.$render=function(){a[0].checked=b.$viewValue};b.$parseModel=
125
+ function(){b.$viewValue=this.$modelValue===c};b.$parseView=function(){b.$modelValue=b.$viewValue?c:d}});$("radio",function(a){var b=this;a.attr("name",b.$id+"@"+a.attr("name"));a.bind("click",function(){b.$apply(function(){a[0].checked&&b.$emit("$viewChange",b.$value)})});b.$render=function(){a[0].checked=p(b.$value)&&b.$value==b.$viewValue};if(a[0].checked)b.$viewValue=b.$value});var bd=T("search,tel,url,email,datetime,date,month,week,time,datetime-local,number,range,color,radio,checkbox,text,button,submit,reset,hidden,password");
126
+ G("input",function(a){this.directives(!0);this.descend(!0);var b=a.attr("ng:model");return b&&pa("$defer","$formFactory",function(a,d,e){var d=d.forElement(e),f=e[0].getAttribute("type")||"text",g,h=this,j,i,l=S(e.attr("ng:pattern")),m=parseInt(e.attr("ng:minlength"),10),n=parseInt(e.attr("ng:maxlength"),10);g=f.match(/^\s*\@\s*(.*)/);l?l.match(/^\/(.*)\/$/)?(l=RegExp(l.substr(1,l.length-2)),j=function(a){return l.test(a)}):j=function(a){var b=h.$eval(l);if(!b||!b.test)throw new u("Expected "+l+" to be a RegExp but was "+
127
+ b);return b.test(a)}:j=Sa(!0);f=z(f);g=(g?ha(this.$eval(g[1]),g[1]).$unboundFn:$(f))||v;if(!bd[f])try{e[0].setAttribute("type","text")}catch(o){}!g.$inject&&(g.$inject=[]);i=d.$createWidget({scope:h,model:b,onChange:e.attr("ng:change"),alias:e.attr("name"),controller:g,controllerArgs:[e]});ca(this,i,"value",e);ca(this,i,"required",e);ca(this,i,"readonly",e);ca(this,i,"disabled",e);i.$pristine=!(i.$dirty=!1);i.$on("$validate",function(){var a=S(i.$viewValue),b=i.$required&&!a,c=n&&a&&a.length>n,d=
128
+ m&&a&&a.length<m,a=a&&!j(a);i.$error.REQUIRED!=b&&i.$emit(b?"$invalid":"$valid","REQUIRED");i.$error.PATTERN!=a&&i.$emit(a?"$invalid":"$valid","PATTERN");i.$error.MINLENGTH!=d&&i.$emit(d?"$invalid":"$valid","MINLENGTH");i.$error.MAXLENGTH!=c&&i.$emit(c?"$invalid":"$valid","MAXLENGTH")});k(["valid","invalid","pristine","dirty"],function(a){i.$watch("$"+a,function(b,c){e[c?"addClass":"removeClass"]("ng-"+a)})});e.bind("$destroy",function(){i.$destroy()});if(f!="checkbox"&&f!="radio")i.$render=function(){e.val(i.$viewValue||
129
+ "")},e.bind("keydown change",function(b){b=b.keyCode;b!=91&&!(15<b&&b<19)&&!(37<b&&b<40)&&a(function(){i.$dirty=!(i.$pristine=!1);var a=S(e.val());i.$viewValue!==a&&i.$emit("$viewChange",a)})})})});G("textarea",G("input"));var cd=/^\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+(.*)$/;G("select",function(a){this.directives(!0);this.descend(!0);return a.attr("ng:model")&&pa("$formFactory",function(a,c){function d(){var a=
130
+ this;this.$render=function(){var a=new kb(this.$viewValue);k(c.children(),function(b){b.selected=p(a.get(b.value))})};c.bind("change",function(){a.$apply(function(){var b=[];k(c.children(),function(a){a.selected&&b.push(a.value)});a.$emit("$viewChange",b)})})}function e(){var a=this;a.$render=function(){c.val(a.$viewValue)};c.bind("change",function(){a.$apply(function(){a.$emit("$viewChange",c.val())})});a.$viewValue=c.val()}function f(){function a(){var d={"":[]},e=[""],i,k,n,o,p;n=b.$modelValue;
131
+ o=s(g)||[];var q=l?sb(o):o,z,u,v;u=ua(g);p=!1;var A,C;if(j)p=new kb(n);else if(n===null||y)d[""].push({selected:n===null,id:"",label:""}),p=!0;for(v=0;z=q.length,v<z;v++){u[h]=o[l?u[l]=q[v]:v];i=m(u)||"";if(!(k=d[i]))k=d[i]=[],e.push(i);j?i=p.remove(r(u))!=D:(i=n===r(u),p=p||i);k.push({id:l?q[v]:v,label:f(u)||"",selected:i})}!j&&!p&&d[""].unshift({id:"?",label:"",selected:!0});u=0;for(q=e.length;u<q;u++){i=e[u];k=d[i];if(x.length<=u)n={element:w.clone().attr("label",i),label:k.label},o=[n],x.push(o),
132
+ c.append(n.element);else if(o=x[u],n=o[0],n.label!=i)n.element.attr("label",n.label=i);A=null;v=0;for(z=k.length;v<z;v++)if(i=k[v],p=o[v+1]){A=p.element;if(p.label!==i.label)A.text(p.label=i.label);if(p.id!==i.id)A.val(p.id=i.id);if(p.element.selected!==i.selected)A.prop("selected",p.selected=i.selected)}else i.id===""&&y?C=y:(C=t.clone()).val(i.id).attr("selected",i.selected).text(i.label),o.push({element:C,label:i.label,id:i.id,selected:i.selected}),A?A.after(C):n.element.append(C),A=C;for(v++;o.length>
133
+ v;)o.pop().element.remove()}for(;x.length>u;)x.pop()[0].element.remove()}var b=this,d;if(!(d=i.match(cd)))throw u("Expected ng:options in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '"+i+"'.");var e=this,f=Y(d[2]||d[1]),h=d[4]||d[6],l=d[5],m=Y(d[3]||""),r=Y(d[2]?d[1]:h),s=Y(d[7]),t=o(K.createElement("option")),w=o(K.createElement("optgroup")),y=!1,x=[[{element:c,label:""}]];k(c.children(),function(a){a.value==""&&(y=o(a).remove(),Wa(y)(g))});c.html("");c.bind("change",
134
+ function(){e.$apply(function(){var a,b=s(g)||[],d=c.val(),f=ua(g),i,k,n,m,o,q;if(j){i=[];m=0;for(q=x.length;m<q;m++){a=x[m];n=1;for(o=a.length;n<o;n++)if((k=a[n].element)[0].selected)l&&(f[l]=d),f[h]=b[k.val()],i.push(r(f))}}else d=="?"?i=D:d==""?i=null:(f[h]=b[d],l&&(f[l]=d),i=r(f));p(i)&&g.$viewVal!==i&&e.$emit("$viewChange",i)})});e.$watch(a);e.$render=a}var g=this,h=a.forElement(c),j=c.attr("multiple"),i=c.attr("ng:options"),l=c.attr("ng:model"),m=h.$createWidget({scope:this,model:l,onChange:c.attr("ng:change"),
135
+ alias:c.attr("name"),controller:i?f:j?d:e});c.bind("$destroy",function(){m.$destroy()});m.$pristine=!(m.$dirty=!1);ca(g,m,"required",c);ca(g,m,"readonly",c);ca(g,m,"disabled",c);m.$on("$validate",function(){var a=!m.$required||!!m.$modelValue;a&&j&&m.$required&&(a=!!m.$modelValue.length);a!==!m.$error.REQUIRED&&m.$emit(a?"$valid":"$invalid","REQUIRED")});m.$on("$viewChange",function(){m.$pristine=!(m.$dirty=!0)});k(["valid","invalid","pristine","dirty"],function(a){m.$watch("$"+a,function(b,d){c[d?
136
+ "addClass":"removeClass"]("ng-"+a)})})})});var rb;Ba("$browser",function(a,b){rb||(rb=new Dc(y,o(y.document),o(y.document.body),Sc,a,b));return rb},{$inject:["$log","$sniffer"]});w(x,{compile:Wa,scope:Eb,copy:A,extend:w,equals:P,forEach:k,injector:Gb,noop:v,bind:N,toJson:U,fromJson:ia,identity:da,isUndefined:r,isDefined:p,isString:s,isFunction:t,isObject:L,isNumber:ma,isArray:M,version:{full:"0.10.5",major:0,minor:10,dot:5,codeName:"steel-fist"},isDate:na,lowercase:z,uppercase:Ja});Cb();var dd=function(a){Cb();
137
+ var a=a.getElementsByTagName("script"),a=a[a.length-1],b=a.src,c={},d;d=b.indexOf("#");d!=-1&&w(c,wa(b.substr(d+1)));Aa(o(a),function(a,b){/^ng:/.exec(b)&&(b=b.substring(3).replace(/-/g,"_"),c[b]=a||!0)});return c}(K);$a(K).ready(function(){var a=K,b=dd.autobind;b&&(a=s(b)?a.getElementById(b):a,Wa(a)().$apply())})})(window,document);angular.element(document).find("head").append('<style type="text/css">@charset "UTF-8";[ng\\:cloak],.ng-cloak{display:none;}.ng-format-negative{color:red;}ng\\:form{display:block;}</style>');
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: angular-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-11-18 00:00:00.000000000Z
12
+ date: 2011-11-21 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &2950290 !ruby/object:Gem::Requirement
16
+ requirement: &2989880 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.1.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2950290
24
+ version_requirements: *2989880
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: coffee-script
27
- requirement: &2950040 !ruby/object:Gem::Requirement
27
+ requirement: &2989630 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: 2.2.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2950040
35
+ version_requirements: *2989630
36
36
  description: Helpers for angularjs in a rails project (ripped from backbone-rails)
37
37
  email:
38
38
  - nate@ludicast.com
@@ -42,9 +42,13 @@ extra_rdoc_files: []
42
42
  files:
43
43
  - lib/angular-rails/version.rb
44
44
  - lib/angular-rails.rb
45
+ - lib/generators/angular/controller/controller_generator.rb
46
+ - lib/generators/angular/controller/templates/controller.coffee
45
47
  - lib/generators/angular/install/install_generator.rb
46
48
  - lib/generators/angular/resource_helpers.rb
47
- - vendor/assets/javascripts/angular.js
49
+ - vendor/assets/javascripts/angular-helpers.coffee
50
+ - vendor/assets/javascripts/angular-ie-compat.js
51
+ - vendor/assets/javascripts/angular.min.js
48
52
  - MIT-LICENSE
49
53
  - Rakefile
50
54
  - README.md
@@ -80,8 +84,14 @@ files:
80
84
  - test/dummy/public/favicon.ico
81
85
  - test/dummy/Rakefile
82
86
  - test/dummy/script/rails
87
+ - test/dummy/tmp/cache/assets/CB8/DA0/sprockets%2Fc3c2c990532795ef50ae856f345b7180
88
+ - test/dummy/tmp/cache/assets/CCF/8E0/sprockets%2F6bed2d97ed023774109a241f0a8450b0
89
+ - test/dummy/tmp/cache/assets/CE0/600/sprockets%2F7b3428bf74f80926f20a216683bf5b0f
83
90
  - test/dummy/tmp/cache/assets/D11/830/sprockets%2F376c8de111107498cc89fc305dac169a
91
+ - test/dummy/tmp/cache/assets/D21/570/sprockets%2Fc943c801ce0caac77ad24200450912ae
84
92
  - test/dummy/tmp/cache/assets/D3C/4A0/sprockets%2F55361a479acf3690d592c04adddfa507
93
+ - test/dummy/tmp/cache/assets/D9F/120/sprockets%2Fe8a9852102a74db1afd5fe4dd860db93
94
+ - test/generators/controller_generator_test.rb
85
95
  - test/generators/fixtures/application.js
86
96
  - test/generators/generators_test_helper.rb
87
97
  - test/generators/install_generator_test.rb
@@ -144,8 +154,14 @@ test_files:
144
154
  - test/dummy/public/favicon.ico
145
155
  - test/dummy/Rakefile
146
156
  - test/dummy/script/rails
157
+ - test/dummy/tmp/cache/assets/CB8/DA0/sprockets%2Fc3c2c990532795ef50ae856f345b7180
158
+ - test/dummy/tmp/cache/assets/CCF/8E0/sprockets%2F6bed2d97ed023774109a241f0a8450b0
159
+ - test/dummy/tmp/cache/assets/CE0/600/sprockets%2F7b3428bf74f80926f20a216683bf5b0f
147
160
  - test/dummy/tmp/cache/assets/D11/830/sprockets%2F376c8de111107498cc89fc305dac169a
161
+ - test/dummy/tmp/cache/assets/D21/570/sprockets%2Fc943c801ce0caac77ad24200450912ae
148
162
  - test/dummy/tmp/cache/assets/D3C/4A0/sprockets%2F55361a479acf3690d592c04adddfa507
163
+ - test/dummy/tmp/cache/assets/D9F/120/sprockets%2Fe8a9852102a74db1afd5fe4dd860db93
164
+ - test/generators/controller_generator_test.rb
149
165
  - test/generators/fixtures/application.js
150
166
  - test/generators/generators_test_helper.rb
151
167
  - test/generators/install_generator_test.rb