text: /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.9.4
   */
  !function(e,t,n){"use strict";function i(e,t){function n(t,n,i){e(n)}function i(e,n,i){var r=this;r.isErrorGetter=i.mdIsError&&t(i.mdIsError),r.delegateClick=function(){r.input.focus()},r.element=n,r.setFocused=function(e){n.toggleClass("md-input-focused",!!e)},r.setHasValue=function(e){n.toggleClass("md-input-has-value",!!e)},r.setInvalid=function(e){n.toggleClass("md-input-invalid",!!e)},e.$watch(function(){return r.label&&r.input},function(e){e&&!r.label.attr("for")&&r.label.attr("for",r.input.attr("id"))})}return i.$inject=["$scope","$element","$attrs"],{restrict:"E",link:n,controller:i}}function r(){return{restrict:"E",require:"^?mdInputContainer",link:function(e,t,n,i){i&&!n.mdNoFloat&&(i.label=t,e.$on("$destroy",function(){i.label=null}))}}}function l(e,n,i){function r(r,l,o,a){function u(e){return d.setHasValue(!f.$isEmpty(e)),e}function s(){d.setHasValue(l.val().length>0||(l[0].validity||{}).badInput)}function c(){function i(e){return c(),e}function o(){s.style.height="auto",s.scrollTop=0;var e=a();e&&(s.style.height=e+"px")}function a(){var e=s.scrollHeight-s.offsetHeight;return s.offsetHeight+(e>0?e:0)}function u(e){s.scrollTop=0;var t=s.scrollHeight-s.offsetHeight,n=s.offsetHeight+t;s.style.height=n+"px"}var s=l[0],c=e.debounce(o,1);f?(f.$formatters.push(i),f.$viewChangeListeners.push(i)):c(),l.on("keydown input",c),l.on("scroll",u),t.element(n).on("resize",c),r.$on("$destroy",function(){t.element(n).off("resize",c)})}var d=a[0],f=a[1]||e.fakeNgModel(),m=t.isDefined(o.readonly);if(d){if(d.input)throw new Error("<md-input-container> can only have *one* <input> or <textarea> child element!");d.input=l,d.label||i.expect(l,"aria-label",l.attr("placeholder")),l.addClass("md-input"),l.attr("id")||l.attr("id","input_"+e.nextUid()),"textarea"===l[0].tagName.toLowerCase()&&c();var p=d.isErrorGetter||function(){return f.$invalid&&f.$touched};r.$watch(p,d.setInvalid),f.$parsers.push(u),f.$formatters.push(u),l.on("input",s),m||l.on("focus",function(e){d.setFocused(!0)}).on("blur",function(e){d.setFocused(!1),s()}),r.$on("$destroy",function(){d.setFocused(!1),d.setHasValue(!1),d.input=null})}}return{restrict:"E",require:["^?mdInputContainer","?ngModel"],link:r}}function o(e){function n(n,i,r,l){function o(e){return c.text((i.val()||e||"").length+"/"+a),e}var a,u=l[0],s=l[1],c=t.element('<div class="md-char-counter">');r.$set("ngTrim","false"),s.element.append(c),u.$formatters.push(o),u.$viewChangeListeners.push(o),i.on("input keydown",function(){o()}),n.$watch(r.mdMaxlength,function(n){a=n,t.isNumber(n)&&n>0?(c.parent().length||e.enter(c,s.element,t.element(s.element[0].lastElementChild)),o()):e.leave(c)}),u.$validators["md-maxlength"]=function(e,n){return!t.isNumber(a)||0>a?!0:(e||i.val()||n||"").length<=a}}return{restrict:"A",require:["ngModel","^mdInputContainer"],link:n}}function a(e){function n(n,r,l,o){if(o&&-1==i.indexOf(r[0].nodeName)&&!t.isDefined(o.element.attr("md-no-float"))){var a=l.placeholder;if(r.removeAttr("placeholder"),0==o.element.find("label").length){var u='<label ng-click="delegateClick()">'+a+"</label>";o.element.addClass("md-icon-float"),o.element.prepend(u)}else e.warn("The placeholder='"+a+"' will be ignored since this md-input-container has a child label element.")}}var i=["MD-SELECT"];return{restrict:"A",require:"^^?mdInputContainer",priority:200,link:n}}t.module("material.components.input",["material.core"]).directive("mdInputContainer",i).directive("label",r).directive("input",l).directive("textarea",l).directive("mdMaxlength",o).directive("placeholder",a),i.$inject=["$mdTheming","$parse"],l.$inject=["$mdUtil","$window","$mdAria"],o.$inject=["$animate"],a.$inject=["$log"]}(window,window.angular);