2014-04-30 09:35:20 -07:00
/*! jQuery v2.1.1-beta1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
! function ( a , b ) { "object" == typeof module && "object" == typeof module . exports ? module . exports = a . document ? b ( a , ! 0 ) : function ( a ) { if ( ! a . document ) throw new Error ( "jQuery requires a window with a document" ) ; return b ( a ) } : b ( a ) } ( "undefined" != typeof window ? window : this , function ( a , b ) { var c = [ ] , d = c . slice , e = c . concat , f = c . push , g = c . indexOf , h = { } , i = h . toString , j = h . hasOwnProperty , k = { } , l = a . document , m = "2.1.1-beta1" , n = function ( a , b ) { return new n . fn . init ( a , b ) } , o = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g , p = /^-ms-/ , q = /-([\da-z])/gi , r = function ( a , b ) { return b . toUpperCase ( ) } ; n . fn = n . prototype = { jquery : m , constructor : n , selector : "" , length : 0 , toArray : function ( ) { return d . call ( this ) } , get : function ( a ) { return null != a ? 0 > a ? this [ a + this . length ] : this [ a ] : d . call ( this ) } , pushStack : function ( a ) { var b = n . merge ( this . constructor ( ) , a ) ; return b . prevObject = this , b . context = this . context , b } , each : function ( a , b ) { return n . each ( this , a , b ) } , map : function ( a ) { return this . pushStack ( n . map ( this , function ( b , c ) { return a . call ( b , c , b ) } ) ) } , slice : function ( ) { return this . pushStack ( d . apply ( this , arguments ) ) } , first : function ( ) { return this . eq ( 0 ) } , last : function ( ) { return this . eq ( - 1 ) } , eq : function ( a ) { var b = this . length , c = + a + ( 0 > a ? b : 0 ) ; return this . pushStack ( c >= 0 && b > c ? [ this [ c ] ] : [ ] ) } , end : function ( ) { return this . prevObject || this . constructor ( null ) } , push : f , sort : c . sort , splice : c . splice } , n . extend = n . fn . extend = function ( ) { var a , b , c , d , e , f , g = arguments [ 0 ] || { } , h = 1 , i = arguments . length , j = ! 1 ; for ( "boolean" == typeof g && ( j = g , g = arguments [ h ] || { } , h ++ ) , "object" == typeof g || n . isFunction ( g ) || ( g = { } ) , h === i && ( g = this , h -- ) ; i > h ; h ++ ) if ( null != ( a = arguments [ h ] ) ) for ( b in a ) c = g [ b ] , d = a [ b ] , g !== d && ( j && d && ( n . isPlainObject ( d ) || ( e = n . isArray ( d ) ) ) ? ( e ? ( e = ! 1 , f = c && n . isArray ( c ) ? c : [ ] ) : f = c && n . isPlainObject ( c ) ? c : { } , g [ b ] = n . extend ( j , f , d ) ) : void 0 !== d && ( g [ b ] = d ) ) ; return g } , n . extend ( { expando : "jQuery" + ( m + Math . random ( ) ) . replace ( /\D/g , "" ) , isReady : ! 0 , error : function ( a ) { throw new Error ( a ) } , noop : function ( ) { } , isFunction : function ( a ) { return "function" === n . type ( a ) } , isArray : Array . isArray , isWindow : function ( a ) { return null != a && a === a . window } , isNumeric : function ( a ) { return ! n . isArray ( a ) && a - parseFloat ( a ) >= 0 } , isPlainObject : function ( a ) { return "object" !== n . type ( a ) || a . nodeType || n . isWindow ( a ) ? ! 1 : a . constructor && ! j . call ( a . constructor . prototype , "isPrototypeOf" ) ? ! 1 : ! 0 } , isEmptyObject : function ( a ) { var b ; for ( b in a ) return ! 1 ; return ! 0 } , type : function ( a ) { return null == a ? a + "" : "object" == typeof a || "function" == typeof a ? h [ i . call ( a ) ] || "object" : typeof a } , globalEval : function ( a ) { var b , c = eval ; a = n . trim ( a ) , a && ( 1 === a . indexOf ( "use strict" ) ? ( b = l . createElement ( "script" ) , b . text = a , l . head . appendChild ( b ) . parentNode . removeChild ( b ) ) : c ( a ) ) } , camelCase : function ( a ) { return a . replace ( p , "ms-" ) . replace ( q , r ) } , nodeName : function ( a , b ) { return a . nodeName && a . nodeName . toLowerCase ( ) === b . toLowerCase ( ) } , each : function ( a , b , c ) { var d , e = 0 , f = a . length , g = s ( a ) ; if ( c ) { if ( g ) { for ( ; f > e ; e ++ ) if ( d = b . apply ( a [ e ] , c ) , d === ! 1 ) break } else for ( e in a ) if ( d = b . apply ( a [ e ] , c ) , d === ! 1 ) break } else if ( g ) { for ( ; f > e ; e ++ ) if ( d = b . call ( a [ e ] , e , a [ e ] ) , d === ! 1 ) break } else for ( e in a ) if ( d = b . call ( a [ e ] , e , a [ e ] ) , d === ! 1 ) break ; return a } , trim : function ( a ) { return null == a ? "" : ( a + "" ) . replace ( o , "" ) } , makeArray : function ( a , b ) { var c = b || [ ] ; return null != a && ( s ( Object ( a ) ) ? n . merge ( c , "string" == typeof a ? [ a ] : a ) : f . call ( c , a ) ) , c } , inArray : function ( a , b , c ) { return null == b ? - 1 : g . call ( b , a , c ) } , merge : function ( a , b ) { for ( var c = + b . length , d = 0 , e = a . length ; c > d ; d ++ ) a [ e ++ ] = b [ d ] ; return a . length = e , a } , grep : function ( a , b , c ) { for ( var d , e = [ ] , f = 0 , g = a . length , h = ! c ; g > f ; f ++ ) d = ! b ( a [ f ] , f ) , d !== h && e . push ( a [ f ] ) ; return e } , map : function ( a , b , c ) { var d , f = 0 , g = a . length , h = s ( a ) , i = [ ] ; if ( h ) for ( ; g > f ; f ++ ) d = b ( a [ f ] , f , c ) , null != d && i . push ( d ) ; else for ( f in a ) d = b ( a [ f ] , f , c ) , null != d && i . push ( d ) ; return e . apply ( [ ] , i ) } , guid : 1 , proxy : function ( a , b ) { var c , e , f ; return "string" == typeof b && ( c = a [ b ] , b = a , a = c ) , n . isFunction ( a ) ? ( e = d . call ( arguments , 2 ) , f = function ( ) { return a . apply ( b || this , e . concat ( d . call ( arguments ) ) ) } , f . guid = a . guid = a . guid || n . guid ++ , f ) : void 0 } , now : Date . now , support : k } ) , n . each ( "Boolean Number String Function Array Date RegExp Object Error" . split ( " " ) , function ( a , b ) { h [ "[object " + b + "]" ] = b . toLowerCase ( ) } ) ; function s ( a ) { var b = a . length , c = n . type ( a ) ; return "function" === c || n . isWindow ( a ) ? ! 1 : 1 === a . nodeType && b ? ! 0 : "array" === c || 0 === b
} } ) , n . fn . extend ( { data : function ( a , b ) { var c , d , e , f = this [ 0 ] , g = f && f . attributes ; if ( void 0 === a ) { if ( this . length && ( e = M . get ( f ) , 1 === f . nodeType && ! L . get ( f , "hasDataAttrs" ) ) ) { c = g . length ; while ( c -- ) d = g [ c ] . name , 0 === d . indexOf ( "data-" ) && ( d = n . camelCase ( d . slice ( 5 ) ) , P ( f , d , e [ d ] ) ) ; L . set ( f , "hasDataAttrs" , ! 0 ) } return e } return "object" == typeof a ? this . each ( function ( ) { M . set ( this , a ) } ) : J ( this , function ( b ) { var c , d = n . camelCase ( a ) ; if ( f && void 0 === b ) { if ( c = M . get ( f , a ) , void 0 !== c ) return c ; if ( c = M . get ( f , d ) , void 0 !== c ) return c ; if ( c = P ( f , d , void 0 ) , void 0 !== c ) return c } else this . each ( function ( ) { var c = M . get ( this , d ) ; M . set ( this , d , b ) , - 1 !== a . indexOf ( "-" ) && void 0 !== c && M . set ( this , a , b ) } ) } , null , b , arguments . length > 1 , null , ! 0 ) } , removeData : function ( a ) { return this . each ( function ( ) { M . remove ( this , a ) } ) } } ) , n . extend ( { queue : function ( a , b , c ) { var d ; return a ? ( b = ( b || "fx" ) + "queue" , d = L . get ( a , b ) , c && ( ! d || n . isArray ( c ) ? d = L . access ( a , b , n . makeArray ( c ) ) : d . push ( c ) ) , d || [ ] ) : void 0 } , dequeue : function ( a , b ) { b = b || "fx" ; var c = n . queue ( a , b ) , d = c . length , e = c . shift ( ) , f = n . _queueHooks ( a , b ) , g = function ( ) { n . dequeue ( a , b ) } ; "inprogress" === e && ( e = c . shift ( ) , d -- ) , e && ( "fx" === b && c . unshift ( "inprogress" ) , delete f . stop , e . call ( a , g , f ) ) , ! d && f && f . empty . fire ( ) } , _queueHooks : function ( a , b ) { var c = b + "queueHooks" ; return L . get ( a , c ) || L . access ( a , c , { empty : n . Callbacks ( "once memory" ) . add ( function ( ) { L . remove ( a , [ b + "queue" , c ] ) } ) } ) } } ) , n . fn . extend ( { queue : function ( a , b ) { var c = 2 ; return "string" != typeof a && ( b = a , a = "fx" , c -- ) , arguments . length < c ? n . queue ( this [ 0 ] , a ) : void 0 === b ? this : this . each ( function ( ) { var c = n . queue ( this , a , b ) ; n . _queueHooks ( this , a ) , "fx" === a && "inprogress" !== c [ 0 ] && n . dequeue ( this , a ) } ) } , dequeue : function ( a ) { return this . each ( function ( ) { n . dequeue ( this , a ) } ) } , clearQueue : function ( a ) { return this . queue ( a || "fx" , [ ] ) } , promise : function ( a , b ) { var c , d = 1 , e = n . Deferred ( ) , f = this , g = this . length , h = function ( ) { -- d || e . resolveWith ( f , [ f ] ) } ; "string" != typeof a && ( b = a , a = void 0 ) , a = a || "fx" ; while ( g -- ) c = L . get ( f [ g ] , a + "queueHooks" ) , c && c . empty && ( d ++ , c . empty . add ( h ) ) ; return h ( ) , e . promise ( b ) } } ) ; var Q = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ . source , R = [ "Top" , "Right" , "Bottom" , "Left" ] , S = function ( a , b ) { return a = b || a , "none" === n . css ( a , "display" ) || ! n . contains ( a . ownerDocument , a ) } , T = /^(?:checkbox|radio)$/i ; ! function ( ) { var a = l . createDocumentFragment ( ) , b = a . appendChild ( l . createElement ( "div" ) ) , c = l . createElement ( "input" ) ; c . setAttribute ( "type" , "radio" ) , c . setAttribute ( "checked" , "checked" ) , c . setAttribute ( "name" , "t" ) , b . appendChild ( c ) , k . checkClone = b . cloneNode ( ! 0 ) . cloneNode ( ! 0 ) . lastChild . checked , b . innerHTML = "<textarea>x</textarea>" , k . noCloneChecked = ! ! b . cloneNode ( ! 0 ) . lastChild . defaultValue } ( ) ; var U = "undefined" ; k . focusinBubbles = "onfocusin" in a ; var V = /^key/ , W = /^(?:mouse|pointer|contextmenu)|click/ , X = /^(?:focusinfocus|focusoutblur)$/ , Y = /^([^.]*)(?:\.(.+)|)$/ ; function Z ( ) { return ! 0 } function $ ( ) { return ! 1 } function _ ( ) { try { return l . activeElement } catch ( a ) { } } n . event = { global : { } , add : function ( a , b , c , d , e ) { var f , g , h , i , j , k , l , m , o , p , q , r = L . get ( a ) ; if ( r ) { c . handler && ( f = c , c = f . handler , e = f . selector ) , c . guid || ( c . guid = n . guid ++ ) , ( i = r . events ) || ( i = r . events = { } ) , ( g = r . handle ) || ( g = r . handle = function ( b ) { return typeof n !== U && n . event . triggered !== b . type ? n . event . dispatch . apply ( a , arguments ) : void 0 } ) , b = ( b || "" ) . match ( E ) || [ "" ] , j = b . length ; while ( j -- ) h = Y . exec ( b [ j ] ) || [ ] , o = q = h [ 1 ] , p = ( h [ 2 ] || "" ) . split ( "." ) . sort ( ) , o && ( l = n . event . special [ o ] || { } , o = ( e ? l . delegateType : l . bindType ) || o , l = n . event . special [ o ] || { } , k = n . extend ( { type : o , origType : q , data : d , handler : c , guid : c . guid , selector : e , needsContext : e && n . expr . match . needsContext . test ( e ) , namespace : p . join ( "." ) } , f ) , ( m = i [ o ] ) || ( m = i [ o ] = [ ] , m . delegateCount = 0 , l . setup && l . setup . call ( a , d , p , g ) !== ! 1 || a . addEventListener && a . addEventListener ( o , g , ! 1 ) ) , l . add && ( l . add . call ( a , k ) , k . handler . guid || ( k . handler . guid = c . guid ) ) , e ? m . splice ( m . delegateCount ++ , 0 , k ) : m . push ( k ) , n . event . global [ o ] = ! 0 ) } } , remove : function ( a , b , c , d , e ) { var f , g , h , i , j , k , l , m , o , p , q , r = L . hasData ( a ) && L . get ( a ) ; if ( r && ( i = r . events ) ) { b = ( b || "" ) . match ( E ) || [ "" ] , j = b . length ; while ( j -- ) if ( h = Y . exec ( b [ j ] ) || [ ] , o = q = h [ 1 ] , p = ( h [ 2 ] || "" ) . split ( "." ) . sort ( ) , o ) { l = n . event . special [ o ] || { } , o = ( d ? l . delegateType : l . bindType ) || o , m = i [ o ] || [ ] , h = h [ 2 ] && new RegExp ( "(^|\\.)" + p . join ( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) , g = f = m . length ; while ( f -- ) k = m [ f ] , ! e && q !== k . ori
} , attrHooks : { type : { set : function ( a , b ) { if ( ! k . radioValue && "radio" === b && n . nodeName ( a , "input" ) ) { var c = a . value ; return a . setAttribute ( "type" , b ) , c && ( a . value = c ) , b } } } } } ) , Zb = { set : function ( a , b , c ) { return b === ! 1 ? n . removeAttr ( a , c ) : a . setAttribute ( c , c ) , c } } , n . each ( n . expr . match . bool . source . match ( /\w+/g ) , function ( a , b ) { var c = $b [ b ] || n . find . attr ; $b [ b ] = function ( a , b , d ) { var e , f ; return d || ( f = $b [ b ] , $b [ b ] = e , e = null != c ( a , b , d ) ? b . toLowerCase ( ) : null , $b [ b ] = f ) , e } } ) ; var _b = /^(?:input|select|textarea|button)$/i ; n . fn . extend ( { prop : function ( a , b ) { return J ( this , n . prop , a , b , arguments . length > 1 ) } , removeProp : function ( a ) { return this . each ( function ( ) { delete this [ n . propFix [ a ] || a ] } ) } } ) , n . extend ( { propFix : { "for" : "htmlFor" , "class" : "className" } , prop : function ( a , b , c ) { var d , e , f , g = a . nodeType ; if ( a && 3 !== g && 8 !== g && 2 !== g ) return f = 1 !== g || ! n . isXMLDoc ( a ) , f && ( b = n . propFix [ b ] || b , e = n . propHooks [ b ] ) , void 0 !== c ? e && "set" in e && void 0 !== ( d = e . set ( a , c , b ) ) ? d : a [ b ] = c : e && "get" in e && null !== ( d = e . get ( a , b ) ) ? d : a [ b ] } , propHooks : { tabIndex : { get : function ( a ) { return a . hasAttribute ( "tabindex" ) || _b . test ( a . nodeName ) || a . href ? a . tabIndex : - 1 } } } } ) , k . optSelected || ( n . propHooks . selected = { get : function ( a ) { var b = a . parentNode ; return b && b . parentNode && b . parentNode . selectedIndex , null } } ) , n . each ( [ "tabIndex" , "readOnly" , "maxLength" , "cellSpacing" , "cellPadding" , "rowSpan" , "colSpan" , "useMap" , "frameBorder" , "contentEditable" ] , function ( ) { n . propFix [ this . toLowerCase ( ) ] = this } ) ; var ac = /[\t\r\n\f]/g ; n . fn . extend ( { addClass : function ( a ) { var b , c , d , e , f , g , h = "string" == typeof a && a , i = 0 , j = this . length ; if ( n . isFunction ( a ) ) return this . each ( function ( b ) { n ( this ) . addClass ( a . call ( this , b , this . className ) ) } ) ; if ( h ) for ( b = ( a || "" ) . match ( E ) || [ ] ; j > i ; i ++ ) if ( c = this [ i ] , d = 1 === c . nodeType && ( c . className ? ( " " + c . className + " " ) . replace ( ac , " " ) : " " ) ) { f = 0 ; while ( e = b [ f ++ ] ) d . indexOf ( " " + e + " " ) < 0 && ( d += e + " " ) ; g = n . trim ( d ) , c . className !== g && ( c . className = g ) } return this } , removeClass : function ( a ) { var b , c , d , e , f , g , h = 0 === arguments . length || "string" == typeof a && a , i = 0 , j = this . length ; if ( n . isFunction ( a ) ) return this . each ( function ( b ) { n ( this ) . removeClass ( a . call ( this , b , this . className ) ) } ) ; if ( h ) for ( b = ( a || "" ) . match ( E ) || [ ] ; j > i ; i ++ ) if ( c = this [ i ] , d = 1 === c . nodeType && ( c . className ? ( " " + c . className + " " ) . replace ( ac , " " ) : "" ) ) { f = 0 ; while ( e = b [ f ++ ] ) while ( d . indexOf ( " " + e + " " ) >= 0 ) d = d . replace ( " " + e + " " , " " ) ; g = a ? n . trim ( d ) : "" , c . className !== g && ( c . className = g ) } return this } , toggleClass : function ( a , b ) { var c = typeof a ; return "boolean" == typeof b && "string" === c ? b ? this . addClass ( a ) : this . removeClass ( a ) : this . each ( n . isFunction ( a ) ? function ( c ) { n ( this ) . toggleClass ( a . call ( this , c , this . className , b ) , b ) } : function ( ) { if ( "string" === c ) { var b , d = 0 , e = n ( this ) , f = a . match ( E ) || [ ] ; while ( b = f [ d ++ ] ) e . hasClass ( b ) ? e . removeClass ( b ) : e . addClass ( b ) } else ( c === U || "boolean" === c ) && ( this . className && L . set ( this , "__className__" , this . className ) , this . className = this . className || a === ! 1 ? "" : L . get ( this , "__className__" ) || "" ) } ) } , hasClass : function ( a ) { for ( var b = " " + a + " " , c = 0 , d = this . length ; d > c ; c ++ ) if ( 1 === this [ c ] . nodeType && ( " " + this [ c ] . className + " " ) . replace ( ac , " " ) . indexOf ( b ) >= 0 ) return ! 0 ; return ! 1 } } ) ; var bc = /\r/g ; n . fn . extend ( { val : function ( a ) { var b , c , d , e = this [ 0 ] ; { if ( arguments . length ) return d = n . isFunction ( a ) , this . each ( function ( c ) { var e ; 1 === this . nodeType && ( e = d ? a . call ( this , c , n ( this ) . val ( ) ) : a , null == e ? e = "" : "number" == typeof e ? e += "" : n . isArray ( e ) && ( e = n . map ( e , function ( a ) { return null == a ? "" : a + "" } ) ) , b = n . valHooks [ this . type ] || n . valHooks [ this . nodeName . toLowerCase ( ) ] , b && "set" in b && void 0 !== b . set ( this , e , "value" ) || ( this . value = e ) ) } ) ; if ( e ) return b = n . valHooks [ e . type ] || n . valHooks [ e . nodeName . toLowerCase ( ) ] , b && "get" in b && void 0 !== ( c = b . get ( e , "value" ) ) ? c : ( c = e . value , "string" == typeof c ? c . replace ( bc , "" ) : null == c ? "" : c ) } } } ) , n . extend ( { valHooks : { option : { get : function ( a ) { var b = n . find . attr ( a , "value" ) ; return null != b ? b : n . trim ( n . text ( a ) ) } } , select : { get : function ( a ) { for ( var b , c , d = a . options , e = a . selectedIndex , f = "select-one" === a . type || 0 > e , g = f ? null : [ ] , h = f ? e + 1 : d . length , i = 0 > e ? h : f ? e : 0 ; h > i ; i ++ ) if ( c = d [ i ] , ! ( ! c . selected && i !== e || ( k . optDisabled ? c . disabled : null !== c . getAttribute ( "disabled" ) ) || c . parentNode . disabled && n . nodeName ( c . parentNode , "optgroup" ) ) ) { if ( b = n ( c ) . val ( ) , f ) return b ; g . push ( b ) } return g } , set : function ( a , b ) { var c , d , e = a . options , f = n . makeArray ( b ) , g = e . leng
2014-04-30 09:38:30 -07:00
/ * ! j Q u e r y U I - v 1 . 1 0 . 3 - 2 0 1 3 - 0 5 - 0 3
2014-04-30 09:35:20 -07:00
* http : //jqueryui.com
* Includes : jquery . ui . core . js , jquery . ui . widget . js , jquery . ui . mouse . js , jquery . ui . draggable . js , jquery . ui . droppable . js , jquery . ui . resizable . js , jquery . ui . selectable . js , jquery . ui . sortable . js , jquery . ui . effect . js , jquery . ui . accordion . js , jquery . ui . autocomplete . js , jquery . ui . button . js , jquery . ui . datepicker . js , jquery . ui . dialog . js , jquery . ui . effect - blind . js , jquery . ui . effect - bounce . js , jquery . ui . effect - clip . js , jquery . ui . effect - drop . js , jquery . ui . effect - explode . js , jquery . ui . effect - fade . js , jquery . ui . effect - fold . js , jquery . ui . effect - highlight . js , jquery . ui . effect - pulsate . js , jquery . ui . effect - scale . js , jquery . ui . effect - shake . js , jquery . ui . effect - slide . js , jquery . ui . effect - transfer . js , jquery . ui . menu . js , jquery . ui . position . js , jquery . ui . progressbar . js , jquery . ui . slider . js , jquery . ui . spinner . js , jquery . ui . tabs . js , jquery . ui . tooltip . js
* Copyright 2013 jQuery Foundation and other contributors ; Licensed MIT * /
( function ( t , e ) { function i ( e , i ) { var n , o , a , r = e . nodeName . toLowerCase ( ) ; return "area" === r ? ( n = e . parentNode , o = n . name , e . href && o && "map" === n . nodeName . toLowerCase ( ) ? ( a = t ( "img[usemap=#" + o + "]" ) [ 0 ] , ! ! a && s ( a ) ) : ! 1 ) : ( /input|select|textarea|button|object/ . test ( r ) ? ! e . disabled : "a" === r ? e . href || i : i ) && s ( e ) } function s ( e ) { return t . expr . filters . visible ( e ) && ! t ( e ) . parents ( ) . addBack ( ) . filter ( function ( ) { return "hidden" === t . css ( this , "visibility" ) } ) . length } var n = 0 , o = /^ui-id-\d+$/ ; t . ui = t . ui || { } , t . extend ( t . ui , { version : "1.10.3" , keyCode : { BACKSPACE : 8 , COMMA : 188 , DELETE : 46 , DOWN : 40 , END : 35 , ENTER : 13 , ESCAPE : 27 , HOME : 36 , LEFT : 37 , NUMPAD _ADD : 107 , NUMPAD _DECIMAL : 110 , NUMPAD _DIVIDE : 111 , NUMPAD _ENTER : 108 , NUMPAD _MULTIPLY : 106 , NUMPAD _SUBTRACT : 109 , PAGE _DOWN : 34 , PAGE _UP : 33 , PERIOD : 190 , RIGHT : 39 , SPACE : 32 , TAB : 9 , UP : 38 } } ) , t . fn . extend ( { focus : function ( e ) { return function ( i , s ) { return "number" == typeof i ? this . each ( function ( ) { var e = this ; setTimeout ( function ( ) { t ( e ) . focus ( ) , s && s . call ( e ) } , i ) } ) : e . apply ( this , arguments ) } } ( t . fn . focus ) , scrollParent : function ( ) { var e ; return e = t . ui . ie && /(static|relative)/ . test ( this . css ( "position" ) ) || /absolute/ . test ( this . css ( "position" ) ) ? this . parents ( ) . filter ( function ( ) { return /(relative|absolute|fixed)/ . test ( t . css ( this , "position" ) ) && /(auto|scroll)/ . test ( t . css ( this , "overflow" ) + t . css ( this , "overflow-y" ) + t . css ( this , "overflow-x" ) ) } ) . eq ( 0 ) : this . parents ( ) . filter ( function ( ) { return /(auto|scroll)/ . test ( t . css ( this , "overflow" ) + t . css ( this , "overflow-y" ) + t . css ( this , "overflow-x" ) ) } ) . eq ( 0 ) , /fixed/ . test ( this . css ( "position" ) ) || ! e . length ? t ( document ) : e } , zIndex : function ( i ) { if ( i !== e ) return this . css ( "zIndex" , i ) ; if ( this . length ) for ( var s , n , o = t ( this [ 0 ] ) ; o . length && o [ 0 ] !== document ; ) { if ( s = o . css ( "position" ) , ( "absolute" === s || "relative" === s || "fixed" === s ) && ( n = parseInt ( o . css ( "zIndex" ) , 10 ) , ! isNaN ( n ) && 0 !== n ) ) return n ; o = o . parent ( ) } return 0 } , uniqueId : function ( ) { return this . each ( function ( ) { this . id || ( this . id = "ui-id-" + ++ n ) } ) } , removeUniqueId : function ( ) { return this . each ( function ( ) { o . test ( this . id ) && t ( this ) . removeAttr ( "id" ) } ) } } ) , t . extend ( t . expr [ ":" ] , { data : t . expr . createPseudo ? t . expr . createPseudo ( function ( e ) { return function ( i ) { return ! ! t . data ( i , e ) } } ) : function ( e , i , s ) { return ! ! t . data ( e , s [ 3 ] ) } , focusable : function ( e ) { return i ( e , ! isNaN ( t . attr ( e , "tabindex" ) ) ) } , tabbable : function ( e ) { var s = t . attr ( e , "tabindex" ) , n = isNaN ( s ) ; return ( n || s >= 0 ) && i ( e , ! n ) } } ) , t ( "<a>" ) . outerWidth ( 1 ) . jquery || t . each ( [ "Width" , "Height" ] , function ( i , s ) { function n ( e , i , s , n ) { return t . each ( o , function ( ) { i -= parseFloat ( t . css ( e , "padding" + this ) ) || 0 , s && ( i -= parseFloat ( t . css ( e , "border" + this + "Width" ) ) || 0 ) , n && ( i -= parseFloat ( t . css ( e , "margin" + this ) ) || 0 ) } ) , i } var o = "Width" === s ? [ "Left" , "Right" ] : [ "Top" , "Bottom" ] , a = s . toLowerCase ( ) , r = { innerWidth : t . fn . innerWidth , innerHeight : t . fn . innerHeight , outerWidth : t . fn . outerWidth , outerHeight : t . fn . outerHeight } ; t . fn [ "inner" + s ] = function ( i ) { return i === e ? r [ "inner" + s ] . call ( this ) : this . each ( function ( ) { t ( this ) . css ( a , n ( this , i ) + "px" ) } ) } , t . fn [ "outer" + s ] = function ( e , i ) { return "number" != typeof e ? r [ "outer" + s ] . call ( this , e ) : this . each ( function ( ) { t ( this ) . css ( a , n ( this , e , ! 0 , i ) + "px" ) } ) } } ) , t . fn . addBack || ( t . fn . addBack = function ( t ) { return this . add ( null == t ? this . prevObject : this . prevObject . filter ( t ) ) } ) , t ( "<a>" ) . data ( "a-b" , "a" ) . removeData ( "a-b" ) . data ( "a-b" ) && ( t . fn . removeData = function ( e ) { return function ( i ) { return arguments . length ? e . call ( this , t . camelCase ( i ) ) : e . call ( this ) } } ( t . fn . removeData ) ) , t . ui . ie = ! ! /msie [\w.]+/ . exec ( navigator . userAgent . toLowerCase ( ) ) , t . support . selectstart = "onselectstart" in document . createElement ( "div" ) , t . fn . extend ( { disableSelection : function ( ) { return this . bind ( ( t . support . selectstart ? "selectstart" : "mousedown" ) + ".ui-disableSelection" , function ( t ) { t . preventDefault ( ) } ) } , enableSelection : function ( ) { return this . unbind ( ".ui-disableSelection" ) } } ) , t . extend ( t . ui , { plugin : { add : function ( e , i , s ) { var n , o = t . ui [ e ] . prototype ; for ( n in s ) o . plugins [ n ] = o . plugins [ n ] || [ ] , o . plugins [ n ] . push ( [ i , s [ n ] ] ) } , call : function ( t , e , i ) { var s , n = t . plugins [ e ] ; if ( n && t . element [ 0 ] . parentNode && 11 !== t . element [ 0 ] . parentNode . nodeType ) for ( s = 0 ; n . length > s ; s ++ ) t . options [ n [ s ] [ 0 ] ] && n [ s ] [ 1 ] . apply ( t . element , i ) } } , hasScroll : function ( e , i ) { if ( "hidden" === t ( e ) . css ( "overflow" ) ) return ! 1 ; var s = i && "left" === i ? "scrollLeft" : "scrollTop" , n =
} , this . proportions = { width : this . element [ 0 ] . offsetWidth , height : this . element [ 0 ] . offsetHeight } , t . ui . ddmanager . droppables [ e . scope ] = t . ui . ddmanager . droppables [ e . scope ] || [ ] , t . ui . ddmanager . droppables [ e . scope ] . push ( this ) , e . addClasses && this . element . addClass ( "ui-droppable" ) } , _destroy : function ( ) { for ( var e = 0 , i = t . ui . ddmanager . droppables [ this . options . scope ] ; i . length > e ; e ++ ) i [ e ] === this && i . splice ( e , 1 ) ; this . element . removeClass ( "ui-droppable ui-droppable-disabled" ) } , _setOption : function ( e , i ) { "accept" === e && ( this . accept = t . isFunction ( i ) ? i : function ( t ) { return t . is ( i ) } ) , t . Widget . prototype . _setOption . apply ( this , arguments ) } , _activate : function ( e ) { var i = t . ui . ddmanager . current ; this . options . activeClass && this . element . addClass ( this . options . activeClass ) , i && this . _trigger ( "activate" , e , this . ui ( i ) ) } , _deactivate : function ( e ) { var i = t . ui . ddmanager . current ; this . options . activeClass && this . element . removeClass ( this . options . activeClass ) , i && this . _trigger ( "deactivate" , e , this . ui ( i ) ) } , _over : function ( e ) { var i = t . ui . ddmanager . current ; i && ( i . currentItem || i . element ) [ 0 ] !== this . element [ 0 ] && this . accept . call ( this . element [ 0 ] , i . currentItem || i . element ) && ( this . options . hoverClass && this . element . addClass ( this . options . hoverClass ) , this . _trigger ( "over" , e , this . ui ( i ) ) ) } , _out : function ( e ) { var i = t . ui . ddmanager . current ; i && ( i . currentItem || i . element ) [ 0 ] !== this . element [ 0 ] && this . accept . call ( this . element [ 0 ] , i . currentItem || i . element ) && ( this . options . hoverClass && this . element . removeClass ( this . options . hoverClass ) , this . _trigger ( "out" , e , this . ui ( i ) ) ) } , _drop : function ( e , i ) { var s = i || t . ui . ddmanager . current , n = ! 1 ; return s && ( s . currentItem || s . element ) [ 0 ] !== this . element [ 0 ] ? ( this . element . find ( ":data(ui-droppable)" ) . not ( ".ui-draggable-dragging" ) . each ( function ( ) { var e = t . data ( this , "ui-droppable" ) ; return e . options . greedy && ! e . options . disabled && e . options . scope === s . options . scope && e . accept . call ( e . element [ 0 ] , s . currentItem || s . element ) && t . ui . intersect ( s , t . extend ( e , { offset : e . element . offset ( ) } ) , e . options . tolerance ) ? ( n = ! 0 , ! 1 ) : undefined } ) , n ? ! 1 : this . accept . call ( this . element [ 0 ] , s . currentItem || s . element ) ? ( this . options . activeClass && this . element . removeClass ( this . options . activeClass ) , this . options . hoverClass && this . element . removeClass ( this . options . hoverClass ) , this . _trigger ( "drop" , e , this . ui ( s ) ) , this . element ) : ! 1 ) : ! 1 } , ui : function ( t ) { return { draggable : t . currentItem || t . element , helper : t . helper , position : t . position , offset : t . positionAbs } } } ) , t . ui . intersect = function ( t , i , s ) { if ( ! i . offset ) return ! 1 ; var n , o , a = ( t . positionAbs || t . position . absolute ) . left , r = a + t . helperProportions . width , h = ( t . positionAbs || t . position . absolute ) . top , l = h + t . helperProportions . height , c = i . offset . left , u = c + i . proportions . width , d = i . offset . top , p = d + i . proportions . height ; switch ( s ) { case "fit" : return a >= c && u >= r && h >= d && p >= l ; case "intersect" : return a + t . helperProportions . width / 2 > c && u > r - t . helperProportions . width / 2 && h + t . helperProportions . height / 2 > d && p > l - t . helperProportions . height / 2 ; case "pointer" : return n = ( t . positionAbs || t . position . absolute ) . left + ( t . clickOffset || t . offset . click ) . left , o = ( t . positionAbs || t . position . absolute ) . top + ( t . clickOffset || t . offset . click ) . top , e ( o , d , i . proportions . height ) && e ( n , c , i . proportions . width ) ; case "touch" : return ( h >= d && p >= h || l >= d && p >= l || d > h && l > p ) && ( a >= c && u >= a || r >= c && u >= r || c > a && r > u ) ; default : return ! 1 } } , t . ui . ddmanager = { current : null , droppables : { "default" : [ ] } , prepareOffsets : function ( e , i ) { var s , n , o = t . ui . ddmanager . droppables [ e . options . scope ] || [ ] , a = i ? i . type : null , r = ( e . currentItem || e . element ) . find ( ":data(ui-droppable)" ) . addBack ( ) ; t : for ( s = 0 ; o . length > s ; s ++ ) if ( ! ( o [ s ] . options . disabled || e && ! o [ s ] . accept . call ( o [ s ] . element [ 0 ] , e . currentItem || e . element ) ) ) { for ( n = 0 ; r . length > n ; n ++ ) if ( r [ n ] === o [ s ] . element [ 0 ] ) { o [ s ] . proportions . height = 0 ; continue t } o [ s ] . visible = "none" !== o [ s ] . element . css ( "display" ) , o [ s ] . visible && ( "mousedown" === a && o [ s ] . _activate . call ( o [ s ] , i ) , o [ s ] . offset = o [ s ] . element . offset ( ) , o [ s ] . proportions = { width : o [ s ] . element [ 0 ] . offsetWidth , height : o [ s ] . element [ 0 ] . offsetHeight } ) } } , drop : function ( e , i ) { var s = ! 1 ; return t . each ( ( t . ui . ddmanager . droppables [ e . options . scope ] || [ ] ) . slice ( ) , function ( ) { this . options && ( ! this . options . disabled && this . visible && t . ui . intersect ( e , this , this . options . tolerance ) && ( s = this . _drop . call ( this , i ) || s ) , !
this . _rearrange ( e , s ) , this . _trigger ( "change" , e , this . _uiHash ( ) ) ; break } return this . _contactContainers ( e ) , t . ui . ddmanager && t . ui . ddmanager . drag ( this , e ) , this . _trigger ( "sort" , e , this . _uiHash ( ) ) , this . lastPositionAbs = this . positionAbs , ! 1 } , _mouseStop : function ( e , i ) { if ( e ) { if ( t . ui . ddmanager && ! this . options . dropBehaviour && t . ui . ddmanager . drop ( this , e ) , this . options . revert ) { var s = this , n = this . placeholder . offset ( ) , o = this . options . axis , a = { } ; o && "x" !== o || ( a . left = n . left - this . offset . parent . left - this . margins . left + ( this . offsetParent [ 0 ] === document . body ? 0 : this . offsetParent [ 0 ] . scrollLeft ) ) , o && "y" !== o || ( a . top = n . top - this . offset . parent . top - this . margins . top + ( this . offsetParent [ 0 ] === document . body ? 0 : this . offsetParent [ 0 ] . scrollTop ) ) , this . reverting = ! 0 , t ( this . helper ) . animate ( a , parseInt ( this . options . revert , 10 ) || 500 , function ( ) { s . _clear ( e ) } ) } else this . _clear ( e , i ) ; return ! 1 } } , cancel : function ( ) { if ( this . dragging ) { this . _mouseUp ( { target : null } ) , "original" === this . options . helper ? this . currentItem . css ( this . _storedCSS ) . removeClass ( "ui-sortable-helper" ) : this . currentItem . show ( ) ; for ( var e = this . containers . length - 1 ; e >= 0 ; e -- ) this . containers [ e ] . _trigger ( "deactivate" , null , this . _uiHash ( this ) ) , this . containers [ e ] . containerCache . over && ( this . containers [ e ] . _trigger ( "out" , null , this . _uiHash ( this ) ) , this . containers [ e ] . containerCache . over = 0 ) } return this . placeholder && ( this . placeholder [ 0 ] . parentNode && this . placeholder [ 0 ] . parentNode . removeChild ( this . placeholder [ 0 ] ) , "original" !== this . options . helper && this . helper && this . helper [ 0 ] . parentNode && this . helper . remove ( ) , t . extend ( this , { helper : null , dragging : ! 1 , reverting : ! 1 , _noFinalSort : null } ) , this . domPosition . prev ? t ( this . domPosition . prev ) . after ( this . currentItem ) : t ( this . domPosition . parent ) . prepend ( this . currentItem ) ) , this } , serialize : function ( e ) { var i = this . _getItemsAsjQuery ( e && e . connected ) , s = [ ] ; return e = e || { } , t ( i ) . each ( function ( ) { var i = ( t ( e . item || this ) . attr ( e . attribute || "id" ) || "" ) . match ( e . expression || /(.+)[\-=_](.+)/ ) ; i && s . push ( ( e . key || i [ 1 ] + "[]" ) + "=" + ( e . key && e . expression ? i [ 1 ] : i [ 2 ] ) ) } ) , ! s . length && e . key && s . push ( e . key + "=" ) , s . join ( "&" ) } , toArray : function ( e ) { var i = this . _getItemsAsjQuery ( e && e . connected ) , s = [ ] ; return e = e || { } , i . each ( function ( ) { s . push ( t ( e . item || this ) . attr ( e . attribute || "id" ) || "" ) } ) , s } , _intersectsWith : function ( t ) { var e = this . positionAbs . left , i = e + this . helperProportions . width , s = this . positionAbs . top , n = s + this . helperProportions . height , o = t . left , a = o + t . width , r = t . top , h = r + t . height , l = this . offset . click . top , c = this . offset . click . left , u = "x" === this . options . axis || s + l > r && h > s + l , d = "y" === this . options . axis || e + c > o && a > e + c , p = u && d ; return "pointer" === this . options . tolerance || this . options . forcePointerForContainers || "pointer" !== this . options . tolerance && this . helperProportions [ this . floating ? "width" : "height" ] > t [ this . floating ? "width" : "height" ] ? p : e + this . helperProportions . width / 2 > o && a > i - this . helperProportions . width / 2 && s + this . helperProportions . height / 2 > r && h > n - this . helperProportions . height / 2 } , _intersectsWithPointer : function ( t ) { var i = "x" === this . options . axis || e ( this . positionAbs . top + this . offset . click . top , t . top , t . height ) , s = "y" === this . options . axis || e ( this . positionAbs . left + this . offset . click . left , t . left , t . width ) , n = i && s , o = this . _getDragVerticalDirection ( ) , a = this . _getDragHorizontalDirection ( ) ; return n ? this . floating ? a && "right" === a || "down" === o ? 2 : 1 : o && ( "down" === o ? 2 : 1 ) : ! 1 } , _intersectsWithSides : function ( t ) { var i = e ( this . positionAbs . top + this . offset . click . top , t . top + t . height / 2 , t . height ) , s = e ( this . positionAbs . left + this . offset . click . left , t . left + t . width / 2 , t . width ) , n = this . _getDragVerticalDirection ( ) , o = this . _getDragHorizontalDirection ( ) ; return this . floating && o ? "right" === o && s || "left" === o && ! s : n && ( "down" === n && i || "up" === n && ! i ) } , _getDragVerticalDirection : function ( ) { var t = this . positionAbs . top - this . lastPositionAbs . top ; return 0 !== t && ( t > 0 ? "down" : "up" ) } , _getDragHorizontalDirection : function ( ) { var t = this . positionAbs . left - this . lastPositionAbs . left ; return 0 !== t && ( t > 0 ? "right" : "left" ) } , refresh : function ( t ) { return this . _refreshItems ( t ) , this . refreshPositions ( ) , this } , _connectWith : function ( ) { var t = this . options ; return t . connectWith . constructor === String ? [ t . connectWith ] : t . connectWith } , _getItemsAsjQuery : function ( e ) { var i , s , n , o , a = [ ] , r = [ ] , h = this . _connectWi
} , _destroyIcons : function ( ) { this . headers . removeClass ( "ui-accordion-icons" ) . children ( ".ui-accordion-header-icon" ) . remove ( ) } , _destroy : function ( ) { var t ; this . element . removeClass ( "ui-accordion ui-widget ui-helper-reset" ) . removeAttr ( "role" ) , this . headers . removeClass ( "ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" ) . removeAttr ( "role" ) . removeAttr ( "aria-selected" ) . removeAttr ( "aria-controls" ) . removeAttr ( "tabIndex" ) . each ( function ( ) { /^ui-accordion/ . test ( this . id ) && this . removeAttribute ( "id" ) } ) , this . _destroyIcons ( ) , t = this . headers . next ( ) . css ( "display" , "" ) . removeAttr ( "role" ) . removeAttr ( "aria-expanded" ) . removeAttr ( "aria-hidden" ) . removeAttr ( "aria-labelledby" ) . removeClass ( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled" ) . each ( function ( ) { /^ui-accordion/ . test ( this . id ) && this . removeAttribute ( "id" ) } ) , "content" !== this . options . heightStyle && t . css ( "height" , "" ) } , _setOption : function ( t , e ) { return "active" === t ? ( this . _activate ( e ) , undefined ) : ( "event" === t && ( this . options . event && this . _off ( this . headers , this . options . event ) , this . _setupEvents ( e ) ) , this . _super ( t , e ) , "collapsible" !== t || e || this . options . active !== ! 1 || this . _activate ( 0 ) , "icons" === t && ( this . _destroyIcons ( ) , e && this . _createIcons ( ) ) , "disabled" === t && this . headers . add ( this . headers . next ( ) ) . toggleClass ( "ui-state-disabled" , ! ! e ) , undefined ) } , _keydown : function ( e ) { if ( ! e . altKey && ! e . ctrlKey ) { var i = t . ui . keyCode , s = this . headers . length , n = this . headers . index ( e . target ) , o = ! 1 ; switch ( e . keyCode ) { case i . RIGHT : case i . DOWN : o = this . headers [ ( n + 1 ) % s ] ; break ; case i . LEFT : case i . UP : o = this . headers [ ( n - 1 + s ) % s ] ; break ; case i . SPACE : case i . ENTER : this . _eventHandler ( e ) ; break ; case i . HOME : o = this . headers [ 0 ] ; break ; case i . END : o = this . headers [ s - 1 ] } o && ( t ( e . target ) . attr ( "tabIndex" , - 1 ) , t ( o ) . attr ( "tabIndex" , 0 ) , o . focus ( ) , e . preventDefault ( ) ) } } , _panelKeyDown : function ( e ) { e . keyCode === t . ui . keyCode . UP && e . ctrlKey && t ( e . currentTarget ) . prev ( ) . focus ( ) } , refresh : function ( ) { var e = this . options ; this . _processPanels ( ) , e . active === ! 1 && e . collapsible === ! 0 || ! this . headers . length ? ( e . active = ! 1 , this . active = t ( ) ) : e . active === ! 1 ? this . _activate ( 0 ) : this . active . length && ! t . contains ( this . element [ 0 ] , this . active [ 0 ] ) ? this . headers . length === this . headers . find ( ".ui-state-disabled" ) . length ? ( e . active = ! 1 , this . active = t ( ) ) : this . _activate ( Math . max ( 0 , e . active - 1 ) ) : e . active = this . headers . index ( this . active ) , this . _destroyIcons ( ) , this . _refresh ( ) } , _processPanels : function ( ) { this . headers = this . element . find ( this . options . header ) . addClass ( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" ) , this . headers . next ( ) . addClass ( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" ) . filter ( ":not(.ui-accordion-content-active)" ) . hide ( ) } , _refresh : function ( ) { var i , s = this . options , n = s . heightStyle , o = this . element . parent ( ) , a = this . accordionId = "ui-accordion-" + ( this . element . attr ( "id" ) || ++ e ) ; this . active = this . _findActive ( s . active ) . addClass ( "ui-accordion-header-active ui-state-active ui-corner-top" ) . removeClass ( "ui-corner-all" ) , this . active . next ( ) . addClass ( "ui-accordion-content-active" ) . show ( ) , this . headers . attr ( "role" , "tab" ) . each ( function ( e ) { var i = t ( this ) , s = i . attr ( "id" ) , n = i . next ( ) , o = n . attr ( "id" ) ; s || ( s = a + "-header-" + e , i . attr ( "id" , s ) ) , o || ( o = a + "-panel-" + e , n . attr ( "id" , o ) ) , i . attr ( "aria-controls" , o ) , n . attr ( "aria-labelledby" , s ) } ) . next ( ) . attr ( "role" , "tabpanel" ) , this . headers . not ( this . active ) . attr ( { "aria-selected" : "false" , tabIndex : - 1 } ) . next ( ) . attr ( { "aria-expanded" : "false" , "aria-hidden" : "true" } ) . hide ( ) , this . active . length ? this . active . attr ( { "aria-selected" : "true" , tabIndex : 0 } ) . next ( ) . attr ( { "aria-expanded" : "true" , "aria-hidden" : "false" } ) : this . headers . eq ( 0 ) . attr ( "tabIndex" , 0 ) , this . _createIcons ( ) , this . _setupEvents ( s . event ) , "fill" === n ? ( i = o . height ( ) , this . element . siblings ( ":visible" ) . each ( function ( ) { var e = t ( this ) , s = e . css ( "position" ) ; "absolute" !== s && "fixed" !== s && ( i -= e . outerHeight ( ! 0 ) ) } ) , this . headers . each ( function ( ) { i -= t ( this ) . outerHeight ( ! 0 ) } ) , this . headers . next ( ) . each ( function ( ) { t ( this ) . height ( Math . max ( 0 , i - t ( this ) . innerHeight ( ) + t ( this ) . height ( ) ) ) } ) . css ( "overflow" , "auto" ) ) : " aut
case 27 : t . datepicker . _hideDatepicker ( ) ; break ; case 33 : t . datepicker . _adjustDate ( e . target , e . ctrlKey ? - t . datepicker . _get ( o , "stepBigMonths" ) : - t . datepicker . _get ( o , "stepMonths" ) , "M" ) ; break ; case 34 : t . datepicker . _adjustDate ( e . target , e . ctrlKey ? + t . datepicker . _get ( o , "stepBigMonths" ) : + t . datepicker . _get ( o , "stepMonths" ) , "M" ) ; break ; case 35 : ( e . ctrlKey || e . metaKey ) && t . datepicker . _clearDate ( e . target ) , a = e . ctrlKey || e . metaKey ; break ; case 36 : ( e . ctrlKey || e . metaKey ) && t . datepicker . _gotoToday ( e . target ) , a = e . ctrlKey || e . metaKey ; break ; case 37 : ( e . ctrlKey || e . metaKey ) && t . datepicker . _adjustDate ( e . target , r ? 1 : - 1 , "D" ) , a = e . ctrlKey || e . metaKey , e . originalEvent . altKey && t . datepicker . _adjustDate ( e . target , e . ctrlKey ? - t . datepicker . _get ( o , "stepBigMonths" ) : - t . datepicker . _get ( o , "stepMonths" ) , "M" ) ; break ; case 38 : ( e . ctrlKey || e . metaKey ) && t . datepicker . _adjustDate ( e . target , - 7 , "D" ) , a = e . ctrlKey || e . metaKey ; break ; case 39 : ( e . ctrlKey || e . metaKey ) && t . datepicker . _adjustDate ( e . target , r ? - 1 : 1 , "D" ) , a = e . ctrlKey || e . metaKey , e . originalEvent . altKey && t . datepicker . _adjustDate ( e . target , e . ctrlKey ? + t . datepicker . _get ( o , "stepBigMonths" ) : + t . datepicker . _get ( o , "stepMonths" ) , "M" ) ; break ; case 40 : ( e . ctrlKey || e . metaKey ) && t . datepicker . _adjustDate ( e . target , 7 , "D" ) , a = e . ctrlKey || e . metaKey ; break ; default : a = ! 1 } else 36 === e . keyCode && e . ctrlKey ? t . datepicker . _showDatepicker ( this ) : a = ! 1 ; a && ( e . preventDefault ( ) , e . stopPropagation ( ) ) } , _doKeyPress : function ( i ) { var s , n , o = t . datepicker . _getInst ( i . target ) ; return t . datepicker . _get ( o , "constrainInput" ) ? ( s = t . datepicker . _possibleChars ( t . datepicker . _get ( o , "dateFormat" ) ) , n = String . fromCharCode ( null == i . charCode ? i . keyCode : i . charCode ) , i . ctrlKey || i . metaKey || " " > n || ! s || s . indexOf ( n ) > - 1 ) : e } , _doKeyUp : function ( e ) { var i , s = t . datepicker . _getInst ( e . target ) ; if ( s . input . val ( ) !== s . lastVal ) try { i = t . datepicker . parseDate ( t . datepicker . _get ( s , "dateFormat" ) , s . input ? s . input . val ( ) : null , t . datepicker . _getFormatConfig ( s ) ) , i && ( t . datepicker . _setDateFromField ( s ) , t . datepicker . _updateAlternate ( s ) , t . datepicker . _updateDatepicker ( s ) ) } catch ( n ) { } return ! 0 } , _showDatepicker : function ( e ) { if ( e = e . target || e , "input" !== e . nodeName . toLowerCase ( ) && ( e = t ( "input" , e . parentNode ) [ 0 ] ) , ! t . datepicker . _isDisabledDatepicker ( e ) && t . datepicker . _lastInput !== e ) { var i , s , o , a , r , h , l ; i = t . datepicker . _getInst ( e ) , t . datepicker . _curInst && t . datepicker . _curInst !== i && ( t . datepicker . _curInst . dpDiv . stop ( ! 0 , ! 0 ) , i && t . datepicker . _datepickerShowing && t . datepicker . _hideDatepicker ( t . datepicker . _curInst . input [ 0 ] ) ) , s = t . datepicker . _get ( i , "beforeShow" ) , o = s ? s . apply ( e , [ e , i ] ) : { } , o !== ! 1 && ( n ( i . settings , o ) , i . lastVal = null , t . datepicker . _lastInput = e , t . datepicker . _setDateFromField ( i ) , t . datepicker . _inDialog && ( e . value = "" ) , t . datepicker . _pos || ( t . datepicker . _pos = t . datepicker . _findPos ( e ) , t . datepicker . _pos [ 1 ] += e . offsetHeight ) , a = ! 1 , t ( e ) . parents ( ) . each ( function ( ) { return a |= "fixed" === t ( this ) . css ( "position" ) , ! a } ) , r = { left : t . datepicker . _pos [ 0 ] , top : t . datepicker . _pos [ 1 ] } , t . datepicker . _pos = null , i . dpDiv . empty ( ) , i . dpDiv . css ( { position : "absolute" , display : "block" , top : "-1000px" } ) , t . datepicker . _updateDatepicker ( i ) , r = t . datepicker . _checkOffset ( i , r , a ) , i . dpDiv . css ( { position : t . datepicker . _inDialog && t . blockUI ? "static" : a ? "fixed" : "absolute" , display : "none" , left : r . left + "px" , top : r . top + "px" } ) , i . inline || ( h = t . datepicker . _get ( i , "showAnim" ) , l = t . datepicker . _get ( i , "duration" ) , i . dpDiv . zIndex ( t ( e ) . zIndex ( ) + 1 ) , t . datepicker . _datepickerShowing = ! 0 , t . effects && t . effects . effect [ h ] ? i . dpDiv . show ( h , t . datepicker . _get ( i , "showOptions" ) , l ) : i . dpDiv [ h || "show" ] ( h ? l : null ) , t . datepicker . _shouldFocusInput ( i ) && i . input . focus ( ) , t . datepicker . _curInst = i ) ) } } , _updateDatepicker : function ( e ) { this . maxRows = 4 , o = e , e . dpDiv . empty ( ) . append ( this . _generateHTML ( e ) ) , this . _attachHandlers ( e ) , e . dpDiv . find ( "." + this . _dayOverClass + " a" ) . mouseover ( ) ; var i , s = this . _getNumberOfMonths ( e ) , n = s [ 1 ] , a = 17 ; e . dpDiv . removeClass ( "ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4" ) . width ( "" ) , n > 1 && e . dpDiv . addClass ( "ui-datepicker-multi-" + n ) . css ( "width" , a * n + "em" ) , e . dpDiv [ ( 1 !== s [ 0 ] || 1 !== s [ 1 ] ? "add" : "remove" ) + "Class" ] ( "ui-datepicker-multi" ) , e . dpDiv [ ( this . _get ( e , "isRTL" ) ? "add" : "remove" ) + "Class" ] ( "ui-datepicker-rtl" ) , e === t . datepicker . _curInst && t . datepicker . _datepickerShowing && t . datepicker . _sho
} var i = this , s = this . options , n = s . resizable , o = this . uiDialog . css ( "position" ) , a = "string" == typeof n ? n : "n,e,s,w,se,sw,ne,nw" ; this . uiDialog . resizable ( { cancel : ".ui-dialog-content" , containment : "document" , alsoResize : this . element , maxWidth : s . maxWidth , maxHeight : s . maxHeight , minWidth : s . minWidth , minHeight : this . _minHeight ( ) , handles : a , start : function ( s , n ) { t ( this ) . addClass ( "ui-dialog-resizing" ) , i . _blockFrames ( ) , i . _trigger ( "resizeStart" , s , e ( n ) ) } , resize : function ( t , s ) { i . _trigger ( "resize" , t , e ( s ) ) } , stop : function ( n , o ) { s . height = t ( this ) . height ( ) , s . width = t ( this ) . width ( ) , t ( this ) . removeClass ( "ui-dialog-resizing" ) , i . _unblockFrames ( ) , i . _trigger ( "resizeStop" , n , e ( o ) ) } } ) . css ( "position" , o ) } , _minHeight : function ( ) { var t = this . options ; return "auto" === t . height ? t . minHeight : Math . min ( t . minHeight , t . height ) } , _position : function ( ) { var t = this . uiDialog . is ( ":visible" ) ; t || this . uiDialog . show ( ) , this . uiDialog . position ( this . options . position ) , t || this . uiDialog . hide ( ) } , _setOptions : function ( s ) { var n = this , o = ! 1 , a = { } ; t . each ( s , function ( t , s ) { n . _setOption ( t , s ) , t in e && ( o = ! 0 ) , t in i && ( a [ t ] = s ) } ) , o && ( this . _size ( ) , this . _position ( ) ) , this . uiDialog . is ( ":data(ui-resizable)" ) && this . uiDialog . resizable ( "option" , a ) } , _setOption : function ( t , e ) { var i , s , n = this . uiDialog ; "dialogClass" === t && n . removeClass ( this . options . dialogClass ) . addClass ( e ) , "disabled" !== t && ( this . _super ( t , e ) , "appendTo" === t && this . uiDialog . appendTo ( this . _appendTo ( ) ) , "buttons" === t && this . _createButtons ( ) , "closeText" === t && this . uiDialogTitlebarClose . button ( { label : "" + e } ) , "draggable" === t && ( i = n . is ( ":data(ui-draggable)" ) , i && ! e && n . draggable ( "destroy" ) , ! i && e && this . _makeDraggable ( ) ) , "position" === t && this . _position ( ) , "resizable" === t && ( s = n . is ( ":data(ui-resizable)" ) , s && ! e && n . resizable ( "destroy" ) , s && "string" == typeof e && n . resizable ( "option" , "handles" , e ) , s || e === ! 1 || this . _makeResizable ( ) ) , "title" === t && this . _title ( this . uiDialogTitlebar . find ( ".ui-dialog-title" ) ) ) } , _size : function ( ) { var t , e , i , s = this . options ; this . element . show ( ) . css ( { width : "auto" , minHeight : 0 , maxHeight : "none" , height : 0 } ) , s . minWidth > s . width && ( s . width = s . minWidth ) , t = this . uiDialog . css ( { height : "auto" , width : s . width } ) . outerHeight ( ) , e = Math . max ( 0 , s . minHeight - t ) , i = "number" == typeof s . maxHeight ? Math . max ( 0 , s . maxHeight - t ) : "none" , "auto" === s . height ? this . element . css ( { minHeight : e , maxHeight : i , height : "auto" } ) : this . element . height ( Math . max ( 0 , s . height - t ) ) , this . uiDialog . is ( ":data(ui-resizable)" ) && this . uiDialog . resizable ( "option" , "minHeight" , this . _minHeight ( ) ) } , _blockFrames : function ( ) { this . iframeBlocks = this . document . find ( "iframe" ) . map ( function ( ) { var e = t ( this ) ; return t ( "<div>" ) . css ( { position : "absolute" , width : e . outerWidth ( ) , height : e . outerHeight ( ) } ) . appendTo ( e . parent ( ) ) . offset ( e . offset ( ) ) [ 0 ] } ) } , _unblockFrames : function ( ) { this . iframeBlocks && ( this . iframeBlocks . remove ( ) , delete this . iframeBlocks ) } , _allowInteraction : function ( e ) { return t ( e . target ) . closest ( ".ui-dialog" ) . length ? ! 0 : ! ! t ( e . target ) . closest ( ".ui-datepicker" ) . length } , _createOverlay : function ( ) { if ( this . options . modal ) { var e = this , i = this . widgetFullName ; t . ui . dialog . overlayInstances || this . _delay ( function ( ) { t . ui . dialog . overlayInstances && this . document . bind ( "focusin.dialog" , function ( s ) { e . _allowInteraction ( s ) || ( s . preventDefault ( ) , t ( ".ui-dialog:visible:last .ui-dialog-content" ) . data ( i ) . _focusTabbable ( ) ) } ) } ) , this . overlay = t ( "<div>" ) . addClass ( "ui-widget-overlay ui-front" ) . appendTo ( this . _appendTo ( ) ) , this . _on ( this . overlay , { mousedown : "_keepFocus" } ) , t . ui . dialog . overlayInstances ++ } } , _destroyOverlay : function ( ) { this . options . modal && this . overlay && ( t . ui . dialog . overlayInstances -- , t . ui . dialog . overlayInstances || this . document . unbind ( "focusin.dialog" ) , this . overlay . remove ( ) , this . overlay = null ) } } ) , t . ui . dialog . overlayInstances = 0 , t . uiBackCompat !== ! 1 && t . widget ( "ui.dialog" , t . ui . dialog , { _position : function ( ) { var e , i = this . options . position , s = [ ] , n = [ 0 , 0 ] ; i ? ( ( "string" == typeof i || "object" == typeof i && "0" in i ) && ( s = i . split ? i . split ( " " ) : [ i [ 0 ] , i [ 1 ] ] , 1 === s . length && ( s [ 1 ] = s [ 0 ] ) , t . each ( [ "left" , "top" ] , function ( t , e ) { + s [ t ] === s [ t ] && ( n [ t ] = s [ t ] , s [ t ] = e ) } ) , i = { my : s [ 0 ] + ( 0 > n [ 0 ] ? n [ 0 ] : "+" + n [ 0 ] ) + " " + s [ 1 ] + ( 0 > n [ 1 ] ? n [ 1 ] : "+" + n [ 1 ] ) , at : s . join ( " " ) } ) , i = t . extend ( { } , t . ui . dialog . prototype . options . position , i ) ) : i = t . ui . dialog . prototype . options . position , e = th
} , value : function ( t ) { return t === e ? this . options . value : ( this . options . value = this . _constrainedValue ( t ) , this . _refreshValue ( ) , e ) } , _constrainedValue : function ( t ) { return t === e && ( t = this . options . value ) , this . indeterminate = t === ! 1 , "number" != typeof t && ( t = 0 ) , this . indeterminate ? ! 1 : Math . min ( this . options . max , Math . max ( this . min , t ) ) } , _setOptions : function ( t ) { var e = t . value ; delete t . value , this . _super ( t ) , this . options . value = this . _constrainedValue ( e ) , this . _refreshValue ( ) } , _setOption : function ( t , e ) { "max" === t && ( e = Math . max ( this . min , e ) ) , this . _super ( t , e ) } , _percentage : function ( ) { return this . indeterminate ? 100 : 100 * ( this . options . value - this . min ) / ( this . options . max - this . min ) } , _refreshValue : function ( ) { var e = this . options . value , i = this . _percentage ( ) ; this . valueDiv . toggle ( this . indeterminate || e > this . min ) . toggleClass ( "ui-corner-right" , e === this . options . max ) . width ( i . toFixed ( 0 ) + "%" ) , this . element . toggleClass ( "ui-progressbar-indeterminate" , this . indeterminate ) , this . indeterminate ? ( this . element . removeAttr ( "aria-valuenow" ) , this . overlayDiv || ( this . overlayDiv = t ( "<div class='ui-progressbar-overlay'></div>" ) . appendTo ( this . valueDiv ) ) ) : ( this . element . attr ( { "aria-valuemax" : this . options . max , "aria-valuenow" : e } ) , this . overlayDiv && ( this . overlayDiv . remove ( ) , this . overlayDiv = null ) ) , this . oldValue !== e && ( this . oldValue = e , this . _trigger ( "change" ) ) , e === this . options . max && this . _trigger ( "complete" ) } } ) } ( jQuery ) , function ( t ) { var e = 5 ; t . widget ( "ui.slider" , t . ui . mouse , { version : "1.10.3" , widgetEventPrefix : "slide" , options : { animate : ! 1 , distance : 0 , max : 100 , min : 0 , orientation : "horizontal" , range : ! 1 , step : 1 , value : 0 , values : null , change : null , slide : null , start : null , stop : null } , _create : function ( ) { this . _keySliding = ! 1 , this . _mouseSliding = ! 1 , this . _animateOff = ! 0 , this . _handleIndex = null , this . _detectOrientation ( ) , this . _mouseInit ( ) , this . element . addClass ( "ui-slider ui-slider-" + this . orientation + " ui-widget" + " ui-widget-content" + " ui-corner-all" ) , this . _refresh ( ) , this . _setOption ( "disabled" , this . options . disabled ) , this . _animateOff = ! 1 } , _refresh : function ( ) { this . _createRange ( ) , this . _createHandles ( ) , this . _setupEvents ( ) , this . _refreshValue ( ) } , _createHandles : function ( ) { var e , i , s = this . options , n = this . element . find ( ".ui-slider-handle" ) . addClass ( "ui-state-default ui-corner-all" ) , o = "<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>" , a = [ ] ; for ( i = s . values && s . values . length || 1 , n . length > i && ( n . slice ( i ) . remove ( ) , n = n . slice ( 0 , i ) ) , e = n . length ; i > e ; e ++ ) a . push ( o ) ; this . handles = n . add ( t ( a . join ( "" ) ) . appendTo ( this . element ) ) , this . handle = this . handles . eq ( 0 ) , this . handles . each ( function ( e ) { t ( this ) . data ( "ui-slider-handle-index" , e ) } ) } , _createRange : function ( ) { var e = this . options , i = "" ; e . range ? ( e . range === ! 0 && ( e . values ? e . values . length && 2 !== e . values . length ? e . values = [ e . values [ 0 ] , e . values [ 0 ] ] : t . isArray ( e . values ) && ( e . values = e . values . slice ( 0 ) ) : e . values = [ this . _valueMin ( ) , this . _valueMin ( ) ] ) , this . range && this . range . length ? this . range . removeClass ( "ui-slider-range-min ui-slider-range-max" ) . css ( { left : "" , bottom : "" } ) : ( this . range = t ( "<div></div>" ) . appendTo ( this . element ) , i = "ui-slider-range ui-widget-header ui-corner-all" ) , this . range . addClass ( i + ( "min" === e . range || "max" === e . range ? " ui-slider-range-" + e . range : "" ) ) ) : this . range = t ( [ ] ) } , _setupEvents : function ( ) { var t = this . handles . add ( this . range ) . filter ( "a" ) ; this . _off ( t ) , this . _on ( t , this . _handleEvents ) , this . _hoverable ( t ) , this . _focusable ( t ) } , _destroy : function ( ) { this . handles . remove ( ) , this . range . remove ( ) , this . element . removeClass ( "ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all" ) , this . _mouseDestroy ( ) } , _mouseCapture : function ( e ) { var i , s , n , o , a , r , h , l , c = this , u = this . options ; return u . disabled ? ! 1 : ( this . elementSize = { width : this . element . outerWidth ( ) , height : this . element . outerHeight ( ) } , this . elementOffset = this . element . offset ( ) , i = { x : e . pageX , y : e . pageY } , s = this . _normValueFromMouse ( i ) , n = this . _valueMax ( ) - this . _valueMin ( ) + 1 , this . handles . each ( function ( e ) { var i = Math . abs ( s - c . values ( e ) ) ; ( n > i || n === i && ( e === c . _lastChangedValue || c . values ( e ) === u . min ) ) && ( n = i , o = t ( this ) , a = e ) } ) , r = this . _start ( e , a ) , r === ! 1 ? ! 1 : ( this . _mouseSliding = ! 0 , this . _handleIndex = a , o . addClass ( "ui-state-active" ) . focus ( ) , h = o . offset ( ) , l = ! t ( e . target ) . parents ( ) . addBack ( ) . is ( " . ui
if ( n ) { if ( a = this . _find ( s ) , a . length ) return a . find ( ".ui-tooltip-content" ) . html ( n ) , void 0 ; s . is ( "[title]" ) && ( i && "mouseover" === i . type ? s . attr ( "title" , "" ) : s . removeAttr ( "title" ) ) , a = this . _tooltip ( s ) , e ( s , a . attr ( "id" ) ) , a . find ( ".ui-tooltip-content" ) . html ( n ) , this . options . track && i && /^mouse/ . test ( i . type ) ? ( this . _on ( this . document , { mousemove : o } ) , o ( i ) ) : a . position ( t . extend ( { of : s } , this . options . position ) ) , a . hide ( ) , this . _show ( a , this . options . show ) , this . options . show && this . options . show . delay && ( h = this . delayedShow = setInterval ( function ( ) { a . is ( ":visible" ) && ( o ( l . of ) , clearInterval ( h ) ) } , t . fx . interval ) ) , this . _trigger ( "open" , i , { tooltip : a } ) , r = { keyup : function ( e ) { if ( e . keyCode === t . ui . keyCode . ESCAPE ) { var i = t . Event ( e ) ; i . currentTarget = s [ 0 ] , this . close ( i , ! 0 ) } } , remove : function ( ) { this . _removeTooltip ( a ) } } , i && "mouseover" !== i . type || ( r . mouseleave = "close" ) , i && "focusin" !== i . type || ( r . focusout = "close" ) , this . _on ( ! 0 , s , r ) } } , close : function ( e ) { var s = this , n = t ( e ? e . currentTarget : this . element ) , o = this . _find ( n ) ; this . closing || ( clearInterval ( this . delayedShow ) , n . data ( "ui-tooltip-title" ) && n . attr ( "title" , n . data ( "ui-tooltip-title" ) ) , i ( n ) , o . stop ( ! 0 ) , this . _hide ( o , this . options . hide , function ( ) { s . _removeTooltip ( t ( this ) ) } ) , n . removeData ( "ui-tooltip-open" ) , this . _off ( n , "mouseleave focusout keyup" ) , n [ 0 ] !== this . element [ 0 ] && this . _off ( n , "remove" ) , this . _off ( this . document , "mousemove" ) , e && "mouseleave" === e . type && t . each ( this . parents , function ( e , i ) { t ( i . element ) . attr ( "title" , i . title ) , delete s . parents [ e ] } ) , this . closing = ! 0 , this . _trigger ( "close" , e , { tooltip : o } ) , this . closing = ! 1 ) } , _tooltip : function ( e ) { var i = "ui-tooltip-" + s ++ , n = t ( "<div>" ) . attr ( { id : i , role : "tooltip" } ) . addClass ( "ui-tooltip ui-widget ui-corner-all ui-widget-content " + ( this . options . tooltipClass || "" ) ) ; return t ( "<div>" ) . addClass ( "ui-tooltip-content" ) . appendTo ( n ) , n . appendTo ( this . document [ 0 ] . body ) , this . tooltips [ i ] = e , n } , _find : function ( e ) { var i = e . data ( "ui-tooltip-id" ) ; return i ? t ( "#" + i ) : t ( ) } , _removeTooltip : function ( t ) { t . remove ( ) , delete this . tooltips [ t . attr ( "id" ) ] } , _destroy : function ( ) { var e = this ; t . each ( this . tooltips , function ( i , s ) { var n = t . Event ( "blur" ) ; n . target = n . currentTarget = s [ 0 ] , e . close ( n , ! 0 ) , t ( "#" + i ) . remove ( ) , s . data ( "ui-tooltip-title" ) && ( s . attr ( "title" , s . data ( "ui-tooltip-title" ) ) , s . removeData ( "ui-tooltip-title" ) ) } ) } } ) } ( jQuery ) ; / *
AngularJS v1 . 2.16 - build . 29 + sha . a275d53
( c ) 2010 - 2014 Google , Inc . http : //angularjs.org
License : MIT
* /
( function ( Q , T , s ) { 'use strict' ; function z ( b ) { return function ( ) { var a = arguments [ 0 ] , c , a = "[" + ( b ? b + ":" : "" ) + a + "] http://errors.angularjs.org/1.2.16-build.29+sha.a275d53/" + ( b ? b + "/" : "" ) + a ; for ( c = 1 ; c < arguments . length ; c ++ ) a = a + ( 1 == c ? "?" : "&" ) + "p" + ( c - 1 ) + "=" + encodeURIComponent ( "function" == typeof arguments [ c ] ? arguments [ c ] . toString ( ) . replace ( / \{[\s\S]*$/ , "" ) : "undefined" == typeof arguments [ c ] ? "undefined" : "string" != typeof arguments [ c ] ? JSON . stringify ( arguments [ c ] ) : arguments [ c ] ) ; return Error ( a ) } } function $a ( b ) { if ( null ==
b || Aa ( b ) ) return ! 1 ; var a = b . length ; return 1 === b . nodeType && a ? ! 0 : x ( b ) || M ( b ) || 0 === a || "number" === typeof a && 0 < a && a - 1 in b } function r ( b , a , c ) { var d ; if ( b ) if ( D ( b ) ) for ( d in b ) "prototype" == d || ( "length" == d || "name" == d || b . hasOwnProperty && ! b . hasOwnProperty ( d ) ) || a . call ( c , b [ d ] , d ) ; else if ( b . forEach && b . forEach !== r ) b . forEach ( a , c ) ; else if ( $a ( b ) ) 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 Ob ( b ) { var a = [ ] , c ; for ( c in b ) b . hasOwnProperty ( c ) && a . push ( c ) ; return a . sort ( ) }
function Qc ( b , a , c ) { for ( var d = Ob ( b ) , e = 0 ; e < d . length ; e ++ ) a . call ( c , b [ d [ e ] ] , d [ e ] ) ; return d } function Pb ( b ) { return function ( a , c ) { b ( c , a ) } } function ab ( ) { for ( var b = ia . length , a ; b ; ) { b -- ; a = ia [ b ] . charCodeAt ( 0 ) ; if ( 57 == a ) return ia [ b ] = "A" , ia . join ( "" ) ; if ( 90 == a ) ia [ b ] = "0" ; else return ia [ b ] = String . fromCharCode ( a + 1 ) , ia . join ( "" ) } ia . unshift ( "0" ) ; return ia . join ( "" ) } function Qb ( b , a ) { a ? b . $$hashKey = a : delete b . $$hashKey } function v ( b ) { var a = b . $$hashKey ; r ( arguments , function ( a ) { a !== b && r ( a , function ( a , c ) { b [ c ] = a } ) } ) ; Qb ( b , a ) ; return b }
function R ( b ) { return parseInt ( b , 10 ) } function Rb ( b , a ) { return v ( new ( v ( function ( ) { } , { prototype : b } ) ) , a ) } function B ( ) { } function Ba ( b ) { return b } function Y ( b ) { return function ( ) { return b } } function E ( b ) { return "undefined" === typeof b } function u ( b ) { return "undefined" !== typeof b } function W ( b ) { return null != b && "object" === typeof b } function x ( b ) { return "string" === typeof b } function ub ( b ) { return "number" === typeof b } function Ma ( b ) { return "[object Date]" === ta . call ( b ) } function M ( b ) { return "[object Array]" === ta . call ( b ) } function D ( b ) { return "function" ===
typeof b } function bb ( b ) { return "[object RegExp]" === ta . call ( b ) } function Aa ( b ) { return b && b . document && b . location && b . alert && b . setInterval } function Rc ( b ) { return ! ( ! b || ! ( b . nodeName || b . prop && b . attr && b . find ) ) } function Sc ( b , a , c ) { var d = [ ] ; r ( b , function ( b , f , g ) { d . push ( a . call ( c , b , f , g ) ) } ) ; return d } function cb ( 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 Na ( b , a ) { var c = cb ( b , a ) ; 0 <= c && b . splice ( c , 1 ) ; return a } function $ ( b , a ) { if ( Aa ( b ) || b && b . $evalAsync && b . $watch ) throw Oa ( "cpws" ) ;
if ( a ) { if ( b === a ) throw Oa ( "cpi" ) ; if ( M ( b ) ) for ( var c = a . length = 0 ; c < b . length ; c ++ ) a . push ( $ ( b [ c ] ) ) ; else { c = a . $$hashKey ; r ( a , function ( b , c ) { delete a [ c ] } ) ; for ( var d in b ) a [ d ] = $ ( b [ d ] ) ; Qb ( a , c ) } } else ( a = b ) && ( M ( b ) ? a = $ ( b , [ ] ) : Ma ( b ) ? a = new Date ( b . getTime ( ) ) : bb ( b ) ? a = RegExp ( b . source ) : W ( b ) && ( a = $ ( b , { } ) ) ) ; return a } function Sb ( b , a ) { a = a || { } ; for ( var c in b ) ! b . hasOwnProperty ( c ) || "$" === c . charAt ( 0 ) && "$" === c . charAt ( 1 ) || ( a [ c ] = b [ c ] ) ; return a } function ua ( b , a ) { if ( b === a ) return ! 0 ; if ( null === b || null === a ) return ! 1 ; if ( b !== b && a !== a ) return ! 0 ;
var c = typeof b , d ; if ( c == typeof a && "object" == c ) if ( M ( b ) ) { if ( ! M ( a ) ) return ! 1 ; if ( ( c = b . length ) == a . length ) { for ( d = 0 ; d < c ; d ++ ) if ( ! ua ( b [ d ] , a [ d ] ) ) return ! 1 ; return ! 0 } } else { if ( Ma ( b ) ) return Ma ( a ) && b . getTime ( ) == a . getTime ( ) ; if ( bb ( b ) && bb ( a ) ) return b . toString ( ) == a . toString ( ) ; if ( b && b . $evalAsync && b . $watch || a && a . $evalAsync && a . $watch || Aa ( b ) || Aa ( a ) || M ( a ) ) return ! 1 ; c = { } ; for ( d in b ) if ( "$" !== d . charAt ( 0 ) && ! D ( b [ d ] ) ) { if ( ! ua ( b [ d ] , a [ d ] ) ) return ! 1 ; c [ d ] = ! 0 } for ( d in a ) if ( ! c . hasOwnProperty ( d ) && "$" !== d . charAt ( 0 ) && a [ d ] !== s && ! D ( a [ d ] ) ) return ! 1 ;
return ! 0 } return ! 1 } function Tb ( ) { return T . securityPolicy && T . securityPolicy . isActive || T . querySelector && ! ( ! T . querySelector ( "[ng-csp]" ) && ! T . querySelector ( "[data-ng-csp]" ) ) } function db ( b , a ) { var c = 2 < arguments . length ? va . call ( arguments , 2 ) : [ ] ; return ! D ( a ) || a instanceof RegExp ? a : c . length ? function ( ) { return arguments . length ? a . apply ( b , c . concat ( va . call ( arguments , 0 ) ) ) : a . apply ( b , c ) } : function ( ) { return arguments . length ? a . apply ( b , arguments ) : a . call ( b ) } } function Tc ( b , a ) { var c = a ; "string" === typeof b && "$" === b . charAt ( 0 ) ? c =
s : Aa ( a ) ? c = "$WINDOW" : a && T === a ? c = "$DOCUMENT" : a && ( a . $evalAsync && a . $watch ) && ( c = "$SCOPE" ) ; return c } function oa ( b , a ) { return "undefined" === typeof b ? s : JSON . stringify ( b , Tc , a ? " " : null ) } function Ub ( b ) { return x ( b ) ? JSON . parse ( b ) : b } function Pa ( b ) { "function" === typeof b ? b = ! 0 : b && 0 !== b . length ? ( b = O ( "" + b ) , b = ! ( "f" == b || "0" == b || "false" == b || "no" == b || "n" == b || "[]" == b ) ) : b = ! 1 ; return b } function fa ( b ) { b = w ( b ) . clone ( ) ; try { b . empty ( ) } catch ( a ) { } var c = w ( "<div>" ) . append ( b ) . html ( ) ; try { return 3 === b [ 0 ] . nodeType ? O ( c ) : c . match ( /^(<[^>]+>)/ ) [ 1 ] . replace ( /^<([\w\-]+)/ ,
function ( a , b ) { return "<" + O ( b ) } ) } catch ( d ) { return O ( c ) } } function Vb ( b ) { try { return decodeURIComponent ( b ) } catch ( a ) { } } function Wb ( b ) { var a = { } , c , d ; r ( ( b || "" ) . split ( "&" ) , function ( b ) { b && ( c = b . split ( "=" ) , d = Vb ( c [ 0 ] ) , u ( d ) && ( b = u ( c [ 1 ] ) ? Vb ( c [ 1 ] ) : ! 0 , a [ d ] ? M ( a [ d ] ) ? a [ d ] . push ( b ) : a [ d ] = [ a [ d ] , b ] : a [ d ] = b ) ) } ) ; return a } function Xb ( b ) { var a = [ ] ; r ( b , function ( b , d ) { M ( b ) ? r ( b , function ( b ) { a . push ( wa ( d , ! 0 ) + ( ! 0 === b ? "" : "=" + wa ( b , ! 0 ) ) ) } ) : a . push ( wa ( d , ! 0 ) + ( ! 0 === b ? "" : "=" + wa ( b , ! 0 ) ) ) } ) ; return a . length ? a . join ( "&" ) : "" } function vb ( b ) { return wa ( b ,
! 0 ) . replace ( /%26/gi , "&" ) . replace ( /%3D/gi , "=" ) . replace ( /%2B/gi , "+" ) } function wa ( b , a ) { return encodeURIComponent ( b ) . replace ( /%40/gi , "@" ) . replace ( /%3A/gi , ":" ) . replace ( /%24/g , "$" ) . replace ( /%2C/gi , "," ) . replace ( /%20/g , a ? "%20" : "+" ) } function Uc ( b , a ) { function c ( a ) { a && d . push ( a ) } var d = [ b ] , e , f , g = [ "ng:app" , "ng-app" , "x-ng-app" , "data-ng-app" ] , h = /\sng[:\-]app(:\s*([\w\d_]+);?)?\s/ ; r ( g , function ( a ) { g [ a ] = ! 0 ; c ( T . getElementById ( a ) ) ; a = a . replace ( ":" , "\\:" ) ; b . querySelectorAll && ( r ( b . querySelectorAll ( "." + a ) , c ) , r ( b . querySelectorAll ( "." +
a + "\\:" ) , c ) , r ( b . querySelectorAll ( "[" + a + "]" ) , c ) ) } ) ; r ( d , function ( a ) { if ( ! e ) { var b = h . exec ( " " + a . className + " " ) ; b ? ( e = a , f = ( b [ 2 ] || "" ) . replace ( /\s+/g , "," ) ) : r ( a . attributes , function ( b ) { ! e && g [ b . name ] && ( e = a , f = b . value ) } ) } } ) ; e && a ( e , f ? [ f ] : [ ] ) } function Yb ( b , a ) { var c = function ( ) { b = w ( b ) ; if ( b . injector ( ) ) { var c = b [ 0 ] === T ? "document" : fa ( b ) ; throw Oa ( "btstrpd" , c ) ; } a = a || [ ] ; a . unshift ( [ "$provide" , function ( a ) { a . value ( "$rootElement" , b ) } ] ) ; a . unshift ( "ng" ) ; c = Zb ( a ) ; c . invoke ( [ "$rootScope" , "$rootElement" , "$compile" , "$injector" , "$animate" ,
function ( a , b , c , d , e ) { a . $apply ( function ( ) { b . data ( "$injector" , d ) ; c ( b ) ( a ) } ) } ] ) ; return c } , d = /^NG_DEFER_BOOTSTRAP!/ ; if ( Q && ! d . test ( Q . name ) ) return c ( ) ; Q . name = Q . name . replace ( d , "" ) ; Ca . resumeBootstrap = function ( b ) { r ( b , function ( b ) { a . push ( b ) } ) ; c ( ) } } function eb ( b , a ) { a = a || "_" ; return b . replace ( Vc , function ( b , d ) { return ( d ? a : "" ) + b . toLowerCase ( ) } ) } function wb ( b , a , c ) { if ( ! b ) throw Oa ( "areq" , a || "?" , c || "required" ) ; return b } function Qa ( b , a , c ) { c && M ( b ) && ( b = b [ b . length - 1 ] ) ; wb ( D ( b ) , a , "not a function, got " + ( b && "object" == typeof b ?
b . constructor . name || "Object" : typeof b ) ) ; return b } function xa ( b , a ) { if ( "hasOwnProperty" === b ) throw Oa ( "badname" , a ) ; } function $b ( b , a , c ) { if ( ! a ) return b ; a = a . split ( "." ) ; for ( var d , e = b , f = a . length , g = 0 ; g < f ; g ++ ) d = a [ g ] , b && ( b = ( e = b ) [ d ] ) ; return ! c && D ( b ) ? db ( e , b ) : b } function xb ( b ) { var a = b [ 0 ] ; b = b [ b . length - 1 ] ; if ( a === b ) return w ( a ) ; var c = [ a ] ; do { a = a . nextSibling ; if ( ! a ) break ; c . push ( a ) } while ( a !== b ) ; return w ( c ) } function Wc ( b ) { var a = z ( "$injector" ) , c = z ( "ng" ) ; b = b . angular || ( b . angular = { } ) ; b . $$minErr = b . $$minErr || z ; return b . module ||
( b . module = function ( ) { var b = { } ; return function ( e , f , g ) { if ( "hasOwnProperty" === e ) throw c ( "badname" , "module" ) ; f && b . hasOwnProperty ( e ) && ( b [ e ] = null ) ; return b [ e ] || ( b [ e ] = function ( ) { function b ( a , d , e ) { return function ( ) { c [ e || "push" ] ( [ a , d , arguments ] ) ; return n } } if ( ! f ) throw a ( "nomod" , e ) ; var c = [ ] , d = [ ] , l = b ( "$injector" , "invoke" ) , n = { _invokeQueue : c , _runBlocks : d , requires : f , name : e , provider : b ( "$provide" , "provider" ) , factory : b ( "$provide" , "factory" ) , service : b ( "$provide" , "service" ) , value : b ( "$provide" , "value" ) , constant : b ( "$provide" ,
"constant" , "unshift" ) , animation : b ( "$animateProvider" , "register" ) , filter : b ( "$filterProvider" , "register" ) , controller : b ( "$controllerProvider" , "register" ) , directive : b ( "$compileProvider" , "directive" ) , config : l , run : function ( a ) { d . push ( a ) ; return this } } ; g && l ( g ) ; return n } ( ) ) } } ( ) ) } function Xc ( b ) { v ( b , { bootstrap : Yb , copy : $ , extend : v , equals : ua , element : w , forEach : r , injector : Zb , noop : B , bind : db , toJson : oa , fromJson : Ub , identity : Ba , isUndefined : E , isDefined : u , isString : x , isFunction : D , isObject : W , isNumber : ub , isElement : Rc , isArray : M ,
version : Yc , isDate : Ma , lowercase : O , uppercase : Da , callbacks : { counter : 0 } , $$minErr : z , $$csp : Tb } ) ; Ra = Wc ( Q ) ; try { Ra ( "ngLocale" ) } catch ( a ) { Ra ( "ngLocale" , [ ] ) . provider ( "$locale" , Zc ) } Ra ( "ng" , [ "ngLocale" ] , [ "$provide" , function ( a ) { a . provider ( { $$sanitizeUri : $c } ) ; a . provider ( "$compile" , ac ) . directive ( { a : ad , input : bc , textarea : bc , form : bd , script : cd , select : dd , style : ed , option : fd , ngBind : gd , ngBindHtml : hd , ngBindTemplate : id , ngClass : jd , ngClassEven : kd , ngClassOdd : ld , ngCloak : md , ngController : nd , ngForm : od , ngHide : pd , ngIf : qd , ngInclude : rd ,
ngInit : sd , ngNonBindable : td , ngPluralize : ud , ngRepeat : vd , ngShow : wd , ngStyle : xd , ngSwitch : yd , ngSwitchWhen : zd , ngSwitchDefault : Ad , ngOptions : Bd , ngTransclude : Cd , ngModel : Dd , ngList : Ed , ngChange : Fd , required : cc , ngRequired : cc , ngValue : Gd } ) . directive ( { ngInclude : Hd } ) . directive ( yb ) . directive ( dc ) ; a . provider ( { $anchorScroll : Id , $animate : Jd , $browser : Kd , $cacheFactory : Ld , $controller : Md , $document : Nd , $exceptionHandler : Od , $filter : ec , $interpolate : Pd , $interval : Qd , $http : Rd , $httpBackend : Sd , $location : Td , $log : Ud , $parse : Vd , $rootScope : Wd ,
$q : Xd , $sce : Yd , $sceDelegate : Zd , $sniffer : $d , $templateCache : ae , $timeout : be , $window : ce , $$rAF : de , $$asyncCallback : ee } ) } ] ) } function Sa ( b ) { return b . replace ( fe , function ( a , b , d , e ) { return e ? d . toUpperCase ( ) : d } ) . replace ( ge , "Moz$1" ) } function zb ( b , a , c , d ) { function e ( b ) { var e = c && b ? [ this . filter ( b ) ] : [ this ] , m = a , k , l , n , q , p , t ; if ( ! d || null != b ) for ( ; e . length ; ) for ( k = e . shift ( ) , l = 0 , n = k . length ; l < n ; l ++ ) for ( q = w ( k [ l ] ) , m ? q . triggerHandler ( "$destroy" ) : m = ! m , p = 0 , q = ( t = q . children ( ) ) . length ; p < q ; p ++ ) e . push ( Ea ( t [ p ] ) ) ; return f . apply ( this , arguments ) }
var f = Ea . fn [ b ] , f = f . $original || f ; e . $original = f ; Ea . fn [ b ] = e } function L ( b ) { if ( b instanceof L ) return b ; x ( b ) && ( b = aa ( b ) ) ; if ( ! ( this instanceof L ) ) { if ( x ( b ) && "<" != b . charAt ( 0 ) ) throw Ab ( "nosel" ) ; return new L ( b ) } if ( x ( b ) ) { var a = T . createElement ( "div" ) ; a . innerHTML = "<div> </div>" + b ; a . removeChild ( a . firstChild ) ; Bb ( this , a . childNodes ) ; w ( T . createDocumentFragment ( ) ) . append ( this ) } else Bb ( this , b ) } function Cb ( b ) { return b . cloneNode ( ! 0 ) } function Fa ( b ) { fc ( b ) ; var a = 0 ; for ( b = b . childNodes || [ ] ; a < b . length ; a ++ ) Fa ( b [ a ] ) } function gc ( b ,
a , c , d ) { if ( u ( d ) ) throw Ab ( "offargs" ) ; var e = ja ( b , "events" ) ; ja ( b , "handle" ) && ( E ( a ) ? r ( e , function ( a , c ) { Db ( b , c , a ) ; delete e [ c ] } ) : r ( a . split ( " " ) , function ( a ) { E ( c ) ? ( Db ( b , a , e [ a ] ) , delete e [ a ] ) : Na ( e [ a ] || [ ] , c ) } ) ) } function fc ( b , a ) { var c = b [ fb ] , d = Ta [ c ] ; d && ( a ? delete Ta [ c ] . data [ a ] : ( d . handle && ( d . events . $destroy && d . handle ( { } , "$destroy" ) , gc ( b ) ) , delete Ta [ c ] , b [ fb ] = s ) ) } function ja ( b , a , c ) { var d = b [ fb ] , d = Ta [ d || - 1 ] ; if ( u ( c ) ) d || ( b [ fb ] = d = ++ he , d = Ta [ d ] = { } ) , d [ a ] = c ; else return d && d [ a ] } function hc ( b , a , c ) { var d = ja ( b , "data" ) , e = u ( c ) , f = ! e &&
u ( a ) , g = f && ! W ( a ) ; d || g || ja ( b , "data" , d = { } ) ; if ( e ) d [ a ] = c ; else if ( f ) { if ( g ) return d && d [ a ] ; v ( d , a ) } else return d } function Eb ( b , a ) { return b . getAttribute ? - 1 < ( " " + ( b . getAttribute ( "class" ) || "" ) + " " ) . replace ( /[\n\t]/g , " " ) . indexOf ( " " + a + " " ) : ! 1 } function gb ( b , a ) { a && b . setAttribute && r ( a . split ( " " ) , function ( a ) { b . setAttribute ( "class" , aa ( ( " " + ( b . getAttribute ( "class" ) || "" ) + " " ) . replace ( /[\n\t]/g , " " ) . replace ( " " + aa ( a ) + " " , " " ) ) ) } ) } function hb ( b , a ) { if ( a && b . setAttribute ) { var c = ( " " + ( b . getAttribute ( "class" ) || "" ) + " " ) . replace ( /[\n\t]/g ,
" " ) ; r ( a . split ( " " ) , function ( a ) { a = aa ( a ) ; - 1 === c . indexOf ( " " + a + " " ) && ( c += a + " " ) } ) ; b . setAttribute ( "class" , aa ( c ) ) } } function Bb ( b , a ) { if ( a ) { a = a . nodeName || ! u ( a . length ) || Aa ( a ) ? [ a ] : a ; for ( var c = 0 ; c < a . length ; c ++ ) b . push ( a [ c ] ) } } function ic ( b , a ) { return ib ( b , "$" + ( a || "ngController" ) + "Controller" ) } function ib ( b , a , c ) { b = w ( b ) ; 9 == b [ 0 ] . nodeType && ( b = b . find ( "html" ) ) ; for ( a = M ( a ) ? a : [ a ] ; b . length ; ) { for ( var d = b [ 0 ] , e = 0 , f = a . length ; e < f ; e ++ ) if ( ( c = b . data ( a [ e ] ) ) !== s ) return c ; b = w ( d . parentNode || 11 === d . nodeType && d . host ) } } function jc ( b ) { for ( var a =
0 , c = b . childNodes ; a < c . length ; a ++ ) Fa ( c [ a ] ) ; for ( ; b . firstChild ; ) b . removeChild ( b . firstChild ) } function kc ( b , a ) { var c = jb [ a . toLowerCase ( ) ] ; return c && lc [ b . nodeName ] && c } function ie ( b , a ) { var c = function ( c , e ) { c . preventDefault || ( c . preventDefault = function ( ) { c . returnValue = ! 1 } ) ; c . stopPropagation || ( c . stopPropagation = function ( ) { c . cancelBubble = ! 0 } ) ; c . target || ( c . target = c . srcElement || T ) ; if ( E ( c . defaultPrevented ) ) { var f = c . preventDefault ; c . preventDefault = function ( ) { c . defaultPrevented = ! 0 ; f . call ( c ) } ; c . defaultPrevented = ! 1 } c . isDefaultPrevented =
function ( ) { return c . defaultPrevented || ! 1 === c . returnValue } ; var g = Sb ( a [ e || c . type ] || [ ] ) ; r ( g , function ( a ) { a . call ( b , c ) } ) ; 8 >= P ? ( c . preventDefault = null , c . stopPropagation = null , c . isDefaultPrevented = null ) : ( delete c . preventDefault , delete c . stopPropagation , delete c . isDefaultPrevented ) } ; c . elem = b ; return c } function Ga ( b ) { var a = typeof b , c ; "object" == a && null !== b ? "function" == typeof ( c = b . $$hashKey ) ? c = b . $$hashKey ( ) : c === s && ( c = b . $$hashKey = ab ( ) ) : c = b ; return a + ":" + c } function Ua ( b ) { r ( b , this . put , this ) } function mc ( b ) { var a , c ; "function" ==
typeof b ? ( a = b . $inject ) || ( a = [ ] , b . length && ( c = b . toString ( ) . replace ( je , "" ) , c = c . match ( ke ) , r ( c [ 1 ] . split ( le ) , function ( b ) { b . replace ( me , function ( b , c , d ) { a . push ( d ) } ) } ) ) , b . $inject = a ) : M ( b ) ? ( c = b . length - 1 , Qa ( b [ c ] , "fn" ) , a = b . slice ( 0 , c ) ) : Qa ( b , "fn" , ! 0 ) ; return a } function Zb ( b ) { function a ( a ) { return function ( b , c ) { if ( W ( b ) ) r ( b , Pb ( a ) ) ; else return a ( b , c ) } } function c ( a , b ) { xa ( a , "service" ) ; if ( D ( b ) || M ( b ) ) b = n . instantiate ( b ) ; if ( ! b . $get ) throw Va ( "pget" , a ) ; return l [ a + h ] = b } function d ( a , b ) { return c ( a , { $get : b } ) } function e ( a ) { var b = [ ] ,
c , d , f , h ; r ( a , function ( a ) { if ( ! k . get ( a ) ) { k . put ( a , ! 0 ) ; try { if ( x ( a ) ) for ( c = Ra ( a ) , b = b . concat ( e ( c . requires ) ) . concat ( c . _runBlocks ) , d = c . _invokeQueue , f = 0 , h = d . length ; f < h ; f ++ ) { var g = d [ f ] , m = n . get ( g [ 0 ] ) ; m [ g [ 1 ] ] . apply ( m , g [ 2 ] ) } else D ( a ) ? b . push ( n . invoke ( a ) ) : M ( a ) ? b . push ( n . invoke ( a ) ) : Qa ( a , "module" ) } catch ( l ) { throw M ( a ) && ( a = a [ a . length - 1 ] ) , l . message && ( l . stack && - 1 == l . stack . indexOf ( l . message ) ) && ( l = l . message + "\n" + l . stack ) , Va ( "modulerr" , a , l . stack || l . message || l ) ; } } } ) ; return b } function f ( a , b ) { function c ( d ) { if ( a . hasOwnProperty ( d ) ) { if ( a [ d ] ===
g ) throw Va ( "cdep" , m . join ( " <- " ) ) ; return a [ d ] } try { return m . unshift ( d ) , a [ d ] = g , a [ d ] = b ( d ) } catch ( e ) { throw a [ d ] === g && delete a [ d ] , e ; } finally { m . shift ( ) } } function d ( a , b , e ) { var f = [ ] , h = mc ( a ) , g , k , m ; k = 0 ; for ( g = h . length ; k < g ; k ++ ) { m = h [ k ] ; if ( "string" !== typeof m ) throw Va ( "itkn" , m ) ; f . push ( e && e . hasOwnProperty ( m ) ? e [ m ] : c ( m ) ) } a . $inject || ( a = a [ g ] ) ; return a . apply ( b , f ) } return { invoke : d , instantiate : function ( a , b ) { var c = function ( ) { } , e ; c . prototype = ( M ( a ) ? a [ a . length - 1 ] : a ) . prototype ; c = new c ; e = d ( a , c , b ) ; return W ( e ) || D ( e ) ? e : c } , get : c ,
annotate : mc , has : function ( b ) { return l . hasOwnProperty ( b + h ) || a . hasOwnProperty ( b ) } } } var g = { } , h = "Provider" , m = [ ] , k = new Ua , l = { $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 , Y ( b ) ) } ) , constant : a ( function ( a , b ) { xa ( a , "constant" ) ; l [ a ] = b ; q [ a ] = b } ) , decorator : function ( a , b ) { var c = n . get ( a + h ) , d = c . $get ; c . $get = function ( ) { var a = p . invoke ( d , c ) ; return p . invoke ( b , null , { $delegate : a } ) } } } } , n = l . $injector = f ( l , function ( ) { throw Va ( "unpr" ,
m . join ( " <- " ) ) ; } ) , q = { } , p = q . $injector = f ( q , function ( a ) { a = n . get ( a + h ) ; return p . invoke ( a . $get , a ) } ) ; r ( e ( b ) , function ( a ) { p . invoke ( a || B ) } ) ; return p } function Id ( ) { var b = ! 0 ; this . disableAutoScrolling = function ( ) { b = ! 1 } ; this . $get = [ "$window" , "$location" , "$rootScope" , function ( a , c , d ) { function e ( a ) { var b = null ; r ( a , function ( a ) { b || "a" !== O ( a . nodeName ) || ( b = a ) } ) ; return b } function f ( ) { var b = c . hash ( ) , d ; b ? ( d = g . getElementById ( b ) ) ? d . scrollIntoView ( ) : ( d = e ( g . getElementsByName ( b ) ) ) ? d . scrollIntoView ( ) : "top" === b && a . scrollTo ( 0 , 0 ) :
a . scrollTo ( 0 , 0 ) } var g = a . document ; b && d . $watch ( function ( ) { return c . hash ( ) } , function ( ) { d . $evalAsync ( f ) } ) ; return f } ] } function ee ( ) { this . $get = [ "$$rAF" , "$timeout" , function ( b , a ) { return b . supported ? function ( a ) { return b ( a ) } : function ( b ) { return a ( b , 0 , ! 1 ) } } ] } function ne ( b , a , c , d ) { function e ( a ) { try { a . apply ( null , va . call ( arguments , 1 ) ) } finally { if ( t -- , 0 === t ) for ( ; H . length ; ) try { H . pop ( ) ( ) } catch ( b ) { c . error ( b ) } } } function f ( a , b ) { ( function kb ( ) { r ( C , function ( a ) { a ( ) } ) ; A = b ( kb , a ) } ) ( ) } function g ( ) { y = null ; J != h . url ( ) && ( J = h . url ( ) ,
r ( ba , function ( a ) { a ( h . url ( ) ) } ) ) } var h = this , m = a [ 0 ] , k = b . location , l = b . history , n = b . setTimeout , q = b . clearTimeout , p = { } ; h . isMock = ! 1 ; var t = 0 , H = [ ] ; h . $$completeOutstandingRequest = e ; h . $$incOutstandingRequestCount = function ( ) { t ++ } ; h . notifyWhenNoOutstandingRequests = function ( a ) { r ( C , function ( a ) { a ( ) } ) ; 0 === t ? a ( ) : H . push ( a ) } ; var C = [ ] , A ; h . addPollFn = function ( a ) { E ( A ) && f ( 100 , n ) ; C . push ( a ) ; return a } ; var J = k . href , F = a . find ( "base" ) , y = null ; h . url = function ( a , c ) { k !== b . location && ( k = b . location ) ; l !== b . history && ( l = b . history ) ; if ( a ) { if ( J !=
a ) return J = a , d . history ? c ? l . replaceState ( null , "" , a ) : ( l . pushState ( null , "" , a ) , F . attr ( "href" , F . attr ( "href" ) ) ) : ( y = a , c ? k . replace ( a ) : k . href = a ) , h } else return y || k . href . replace ( /%27/g , "'" ) } ; var ba = [ ] , S = ! 1 ; h . onUrlChange = function ( a ) { if ( ! S ) { if ( d . history ) w ( b ) . on ( "popstate" , g ) ; if ( d . hashchange ) w ( b ) . on ( "hashchange" , g ) ; else h . addPollFn ( g ) ; S = ! 0 } ba . push ( a ) ; return a } ; h . baseHref = function ( ) { var a = F . attr ( "href" ) ; return a ? a . replace ( /^(https?\:)?\/\/[^\/]*/ , "" ) : "" } ; var N = { } , Z = "" , U = h . baseHref ( ) ; h . cookies = function ( a , b ) { var d ,
e , f , h ; if ( a ) b === s ? m . cookie = escape ( a ) + "=;path=" + U + ";expires=Thu, 01 Jan 1970 00:00:00 GMT" : x ( b ) && ( d = ( m . cookie = escape ( a ) + "=" + escape ( b ) + ";path=" + U ) . length + 1 , 4096 < d && c . warn ( "Cookie '" + a + "' possibly not set or overflowed because it was too large (" + d + " > 4096 bytes)!" ) ) ; else { if ( m . cookie !== Z ) for ( Z = m . cookie , d = Z . split ( "; " ) , N = { } , f = 0 ; f < d . length ; f ++ ) e = d [ f ] , h = e . indexOf ( "=" ) , 0 < h && ( a = unescape ( e . substring ( 0 , h ) ) , N [ a ] === s && ( N [ a ] = unescape ( e . substring ( h + 1 ) ) ) ) ; return N } } ; h . defer = function ( a , b ) { var c ; t ++ ; c = n ( function ( ) { delete p [ c ] ;
e ( a ) } , b || 0 ) ; p [ c ] = ! 0 ; return c } ; h . defer . cancel = function ( a ) { return p [ a ] ? ( delete p [ a ] , q ( a ) , e ( B ) , ! 0 ) : ! 1 } } function Kd ( ) { this . $get = [ "$window" , "$log" , "$sniffer" , "$document" , function ( b , a , c , d ) { return new ne ( b , d , a , c ) } ] } function Ld ( ) { this . $get = function ( ) { function b ( b , d ) { function e ( a ) { a != n && ( q ? q == a && ( q = a . n ) : q = a , f ( a . n , a . p ) , f ( a , n ) , n = a , n . n = null ) } function f ( a , b ) { a != b && ( a && ( a . p = b ) , b && ( b . n = a ) ) } if ( b in a ) throw z ( "$cacheFactory" ) ( "iid" , b ) ; var g = 0 , h = v ( { } , d , { id : b } ) , m = { } , k = d && d . capacity || Number . MAX _VALUE , l = { } , n = null , q = null ;
return a [ b ] = { put : function ( a , b ) { if ( k < Number . MAX _VALUE ) { var c = l [ a ] || ( l [ a ] = { key : a } ) ; e ( c ) } if ( ! E ( b ) ) return a in m || g ++ , m [ a ] = b , g > k && this . remove ( q . key ) , b } , get : function ( a ) { if ( k < Number . MAX _VALUE ) { var b = l [ a ] ; if ( ! b ) return ; e ( b ) } return m [ a ] } , remove : function ( a ) { if ( k < Number . MAX _VALUE ) { var b = l [ a ] ; if ( ! b ) return ; b == n && ( n = b . p ) ; b == q && ( q = b . n ) ; f ( b . n , b . p ) ; delete l [ a ] } delete m [ a ] ; g -- } , removeAll : function ( ) { m = { } ; g = 0 ; l = { } ; n = q = null } , destroy : function ( ) { l = h = m = null ; delete a [ b ] } , info : function ( ) { return v ( { } , h , { size : g } ) } } } var a = { } ;
b . info = function ( ) { var b = { } ; r ( a , function ( a , e ) { b [ e ] = a . info ( ) } ) ; return b } ; b . get = function ( b ) { return a [ b ] } ; return b } } function ae ( ) { this . $get = [ "$cacheFactory" , function ( b ) { return b ( "templates" ) } ] } function ac ( b , a ) { var c = { } , d = "Directive" , e = /^\s*directive\:\s*([\d\w\-_]+)\s+(.*)$/ , f = /(([\d\w\-_]+)(?:\:([^;]+))?;?)/ , g = /^<\s*(tr|th|td|thead|tbody|tfoot)(\s+[^>]*)?>/i , h = /^(on[a-z]+|formaction)$/ ; this . directive = function k ( a , e ) { xa ( a , "directive" ) ; x ( a ) ? ( wb ( e , "directiveFactory" ) , c . hasOwnProperty ( a ) || ( c [ a ] = [ ] , b . factory ( a +
d , [ "$injector" , "$exceptionHandler" , function ( b , d ) { var e = [ ] ; r ( c [ a ] , function ( c , f ) { try { var h = b . invoke ( c ) ; D ( h ) ? h = { compile : Y ( h ) } : ! h . compile && h . link && ( h . compile = Y ( h . link ) ) ; h . priority = h . priority || 0 ; h . index = f ; h . name = h . name || a ; h . require = h . require || h . controller && h . name ; h . restrict = h . restrict || "A" ; e . push ( h ) } catch ( g ) { d ( g ) } } ) ; return e } ] ) ) , c [ a ] . push ( e ) ) : r ( a , Pb ( k ) ) ; return this } ; this . aHrefSanitizationWhitelist = function ( b ) { return u ( b ) ? ( a . aHrefSanitizationWhitelist ( b ) , this ) : a . aHrefSanitizationWhitelist ( ) } ; this . imgSrcSanitizationWhitelist =
function ( b ) { return u ( b ) ? ( a . imgSrcSanitizationWhitelist ( b ) , this ) : a . imgSrcSanitizationWhitelist ( ) } ; this . $get = [ "$injector" , "$interpolate" , "$exceptionHandler" , "$http" , "$templateCache" , "$parse" , "$controller" , "$rootScope" , "$document" , "$sce" , "$animate" , "$$sanitizeUri" , function ( a , b , n , q , p , t , H , C , A , J , F , y ) { function ba ( a , b , c , d , e ) { a instanceof w || ( a = w ( a ) ) ; r ( a , function ( b , c ) { 3 == b . nodeType && b . nodeValue . match ( /\S+/ ) && ( a [ c ] = w ( b ) . wrap ( "<span></span>" ) . parent ( ) [ 0 ] ) } ) ; var f = N ( a , b , a , c , d , e ) ; S ( a , "ng-scope" ) ; return function ( b ,
c , d ) { wb ( b , "scope" ) ; var e = c ? Ha . clone . call ( a ) : a ; r ( d , function ( a , b ) { e . data ( "$" + b + "Controller" , a ) } ) ; d = 0 ; for ( var h = e . length ; d < h ; d ++ ) { var g = e [ d ] . nodeType ; 1 !== g && 9 !== g || e . eq ( d ) . data ( "$scope" , b ) } c && c ( e , b ) ; f && f ( b , e , e ) ; return e } } function S ( a , b ) { try { a . addClass ( b ) } catch ( c ) { } } function N ( a , b , c , d , e , f ) { function h ( a , c , d , e ) { var f , k , l , n , p , t , q ; f = c . length ; var ca = Array ( f ) ; for ( p = 0 ; p < f ; p ++ ) ca [ p ] = c [ p ] ; q = p = 0 ; for ( t = g . length ; p < t ; q ++ ) k = ca [ q ] , c = g [ p ++ ] , f = g [ p ++ ] , l = w ( k ) , c ? ( c . scope ? ( n = a . $new ( ) , l . data ( "$scope" , n ) ) : n = a , ( l = c . transclude ) ||
! e && b ? c ( f , n , k , d , Z ( a , l || b ) ) : c ( f , n , k , d , e ) ) : f && f ( a , k . childNodes , s , e ) } for ( var g = [ ] , k , l , n , p , t = 0 ; t < a . length ; t ++ ) k = new Fb , l = U ( a [ t ] , [ ] , k , 0 === t ? d : s , e ) , ( f = l . length ? Wa ( l , a [ t ] , k , b , c , null , [ ] , [ ] , f ) : null ) && f . scope && S ( w ( a [ t ] ) , "ng-scope" ) , k = f && f . terminal || ! ( n = a [ t ] . childNodes ) || ! n . length ? null : N ( n , f ? f . transclude : b ) , g . push ( f , k ) , p = p || f || k , f = null ; return p ? h : null } function Z ( a , b ) { return function ( c , d , e ) { var f = ! 1 ; c || ( c = a . $new ( ) , f = c . $$transcluded = ! 0 ) ; d = b ( c , d , e ) ; if ( f ) d . on ( "$destroy" , db ( c , c . $destroy ) ) ; return d } } function U ( a ,
b , c , d , h ) { var g = c . $attr , k ; switch ( a . nodeType ) { case 1 : u ( b , ka ( Ia ( a ) . toLowerCase ( ) ) , "E" , d , h ) ; var l , n , p ; k = a . attributes ; for ( var t = 0 , q = k && k . length ; t < q ; t ++ ) { var H = ! 1 , C = ! 1 ; l = k [ t ] ; if ( ! P || 8 <= P || l . specified ) { n = l . name ; p = ka ( n ) ; la . test ( p ) && ( n = eb ( p . substr ( 6 ) , "-" ) ) ; var J = p . replace ( /(Start|End)$/ , "" ) ; p === J + "Start" && ( H = n , C = n . substr ( 0 , n . length - 5 ) + "end" , n = n . substr ( 0 , n . length - 6 ) ) ; p = ka ( n . toLowerCase ( ) ) ; g [ p ] = n ; c [ p ] = l = aa ( l . value ) ; kc ( a , p ) && ( c [ p ] = ! 0 ) ; ga ( a , b , l , p ) ; u ( b , p , "A" , d , h , H , C ) } } a = a . className ; if ( x ( a ) && "" !== a ) for ( ; k = f . exec ( a ) ; ) p =
ka ( k [ 2 ] ) , u ( b , p , "C" , d , h ) && ( c [ p ] = aa ( k [ 3 ] ) ) , a = a . substr ( k . index + k [ 0 ] . length ) ; break ; case 3 : L ( b , a . nodeValue ) ; break ; case 8 : try { if ( k = e . exec ( a . nodeValue ) ) p = ka ( k [ 1 ] ) , u ( b , p , "M" , d , h ) && ( c [ p ] = aa ( k [ 2 ] ) ) } catch ( y ) { } } b . sort ( z ) ; return b } function I ( a , b , c ) { var d = [ ] , e = 0 ; if ( b && a . hasAttribute && a . hasAttribute ( b ) ) { do { if ( ! a ) throw ha ( "uterdir" , b , c ) ; 1 == a . nodeType && ( a . hasAttribute ( b ) && e ++ , a . hasAttribute ( c ) && e -- ) ; d . push ( a ) ; a = a . nextSibling } while ( 0 < e ) } else d . push ( a ) ; return w ( d ) } function ya ( a , b , c ) { return function ( d , e , f , h , g ) { e = I ( e [ 0 ] ,
b , c ) ; return a ( d , e , f , h , g ) } } function Wa ( a , c , d , e , f , h , g , k , p ) { function q ( a , b , c , d ) { if ( a ) { c && ( a = ya ( a , c , d ) ) ; a . require = G . require ; if ( N === G || G . $$isolateScope ) a = nc ( a , { isolateScope : ! 0 } ) ; g . push ( a ) } if ( b ) { c && ( b = ya ( b , c , d ) ) ; b . require = G . require ; if ( N === G || G . $$isolateScope ) b = nc ( b , { isolateScope : ! 0 } ) ; k . push ( b ) } } function C ( a , b , c ) { var d , e = "data" , f = ! 1 ; if ( x ( a ) ) { for ( ; "^" == ( d = a . charAt ( 0 ) ) || "?" == d ; ) a = a . substr ( 1 ) , "^" == d && ( e = "inheritedData" ) , f = f || "?" == d ; d = null ; c && "data" === e && ( d = c [ a ] ) ; d = d || b [ e ] ( "$" + a + "Controller" ) ; if ( ! d && ! f ) throw ha ( "ctreq" ,
a , ga ) ; } else M ( a ) && ( d = [ ] , r ( a , function ( a ) { d . push ( C ( a , b , c ) ) } ) ) ; return d } function J ( a , e , f , h , p ) { function q ( a , b ) { var c ; 2 > arguments . length && ( b = a , a = s ) ; Ja && ( c = ya ) ; return p ( a , b , c ) } var y , ca , A , I , ba , U , ya = { } , u ; y = c === f ? d : Sb ( d , new Fb ( w ( f ) , d . $attr ) ) ; ca = y . $$element ; if ( N ) { var oe = /^\s*([@=&])(\??)\s*(\w*)\s*$/ ; h = w ( f ) ; U = e . $new ( ! 0 ) ; Z && Z === N . $$originalDirective ? h . data ( "$isolateScope" , U ) : h . data ( "$isolateScopeNoTemplate" , U ) ; S ( h , "ng-isolate-scope" ) ; r ( N . scope , function ( a , c ) { var d = a . match ( oe ) || [ ] , f = d [ 3 ] || c , h = "?" == d [ 2 ] , d = d [ 1 ] ,
g , k , p , n ; U . $$isolateBindings [ c ] = d + f ; switch ( d ) { case "@" : y . $observe ( f , function ( a ) { U [ c ] = a } ) ; y . $$observers [ f ] . $$scope = e ; y [ f ] && ( U [ c ] = b ( y [ f ] ) ( e ) ) ; break ; case "=" : if ( h && ! y [ f ] ) break ; k = t ( y [ f ] ) ; n = k . literal ? ua : function ( a , b ) { return a === b } ; p = k . assign || function ( ) { g = U [ c ] = k ( e ) ; throw ha ( "nonassign" , y [ f ] , N . name ) ; } ; g = U [ c ] = k ( e ) ; U . $watch ( function ( ) { var a = k ( e ) ; n ( a , U [ c ] ) || ( n ( a , g ) ? p ( e , a = U [ c ] ) : U [ c ] = a ) ; return g = a } , null , k . literal ) ; break ; case "&" : k = t ( y [ f ] ) ; U [ c ] = function ( a ) { return k ( e , a ) } ; break ; default : throw ha ( "iscp" , N . name , c ,
a ) ; } } ) } u = p && q ; F && r ( F , function ( a ) { var b = { $scope : a === N || a . $$isolateScope ? U : e , $element : ca , $attrs : y , $transclude : u } , c ; ba = a . controller ; "@" == ba && ( ba = y [ a . name ] ) ; c = H ( ba , b ) ; ya [ a . name ] = c ; Ja || ca . data ( "$" + a . name + "Controller" , c ) ; a . controllerAs && ( b . $scope [ a . controllerAs ] = c ) } ) ; h = 0 ; for ( A = g . length ; h < A ; h ++ ) try { I = g [ h ] , I ( I . isolateScope ? U : e , ca , y , I . require && C ( I . require , ca , ya ) , u ) } catch ( v ) { n ( v , fa ( ca ) ) } h = e ; N && ( N . template || null === N . templateUrl ) && ( h = U ) ; a && a ( h , f . childNodes , s , p ) ; for ( h = k . length - 1 ; 0 <= h ; h -- ) try { I = k [ h ] , I ( I . isolateScope ?
U : e , ca , y , I . require && C ( I . require , ca , ya ) , u ) } catch ( K ) { n ( K , fa ( ca ) ) } } p = p || { } ; for ( var y = - Number . MAX _VALUE , A , F = p . controllerDirectives , N = p . newIsolateScopeDirective , Z = p . templateDirective , u = p . nonTlbTranscludeDirective , Wa = ! 1 , Ja = p . hasElementTranscludeDirective , K = d . $$element = w ( c ) , G , ga , v , z = e , L , la = 0 , P = a . length ; la < P ; la ++ ) { G = a [ la ] ; var R = G . $$start , V = G . $$end ; R && ( K = I ( c , R , V ) ) ; v = s ; if ( y > G . priority ) break ; if ( v = G . scope ) A = A || G , G . templateUrl || ( Q ( "new/isolated scope" , N , G , K ) , W ( v ) && ( N = G ) ) ; ga = G . name ; ! G . templateUrl && G . controller &&
( v = G . controller , F = F || { } , Q ( "'" + ga + "' controller" , F [ ga ] , G , K ) , F [ ga ] = G ) ; if ( v = G . transclude ) Wa = ! 0 , G . $$tlb || ( Q ( "transclusion" , u , G , K ) , u = G ) , "element" == v ? ( Ja = ! 0 , y = G . priority , v = I ( c , R , V ) , K = d . $$element = w ( T . createComment ( " " + ga + ": " + d [ ga ] + " " ) ) , c = K [ 0 ] , lb ( f , w ( va . call ( v , 0 ) ) , c ) , z = ba ( v , e , y , h && h . name , { nonTlbTranscludeDirective : u } ) ) : ( v = w ( Cb ( c ) ) . contents ( ) , K . empty ( ) , z = ba ( v , e ) ) ; if ( G . template ) if ( Q ( "template" , Z , G , K ) , Z = G , v = D ( G . template ) ? G . template ( K , d ) : G . template , v = oc ( v ) , G . replace ) { h = G ; v = E ( v ) ; c = v [ 0 ] ; if ( 1 != v . length || 1 !== c . nodeType ) throw ha ( "tplrt" ,
ga , "" ) ; lb ( f , K , c ) ; P = { $attr : { } } ; v = U ( c , [ ] , P ) ; var X = a . splice ( la + 1 , a . length - ( la + 1 ) ) ; N && kb ( v ) ; a = a . concat ( v ) . concat ( X ) ; B ( d , P ) ; P = a . length } else K . html ( v ) ; if ( G . templateUrl ) Q ( "template" , Z , G , K ) , Z = G , G . replace && ( h = G ) , J = O ( a . splice ( la , a . length - la ) , K , d , f , z , g , k , { controllerDirectives : F , newIsolateScopeDirective : N , templateDirective : Z , nonTlbTranscludeDirective : u } ) , P = a . length ; else if ( G . compile ) try { L = G . compile ( K , d , z ) , D ( L ) ? q ( null , L , R , V ) : L && q ( L . pre , L . post , R , V ) } catch ( Y ) { n ( Y , fa ( K ) ) } G . terminal && ( J . terminal = ! 0 , y = Math . max ( y , G . priority ) ) } J . scope =
A && ! 0 === A . scope ; J . transclude = Wa && z ; p . hasElementTranscludeDirective = Ja ; return J } function kb ( a ) { for ( var b = 0 , c = a . length ; b < c ; b ++ ) a [ b ] = Rb ( a [ b ] , { $$isolateScope : ! 0 } ) } function u ( b , e , f , h , g , l , p ) { if ( e === g ) return null ; g = null ; if ( c . hasOwnProperty ( e ) ) { var t ; e = a . get ( e + d ) ; for ( var q = 0 , H = e . length ; q < H ; q ++ ) try { t = e [ q ] , ( h === s || h > t . priority ) && - 1 != t . restrict . indexOf ( f ) && ( l && ( t = Rb ( t , { $$start : l , $$end : p } ) ) , b . push ( t ) , g = t ) } catch ( y ) { n ( y ) } } return g } function B ( a , b ) { var c = b . $attr , d = a . $attr , e = a . $$element ; r ( a , function ( d , e ) { "$" != e . charAt ( 0 ) &&
( b [ e ] && ( d += ( "style" === e ? ";" : " " ) + b [ e ] ) , a . $set ( e , d , ! 0 , c [ e ] ) ) } ) ; r ( b , function ( b , f ) { "class" == f ? ( S ( e , b ) , a [ "class" ] = ( a [ "class" ] ? a [ "class" ] + " " : "" ) + b ) : "style" == f ? ( e . attr ( "style" , e . attr ( "style" ) + ";" + b ) , a . style = ( a . style ? a . style + ";" : "" ) + b ) : "$" == f . charAt ( 0 ) || a . hasOwnProperty ( f ) || ( a [ f ] = b , d [ f ] = c [ f ] ) } ) } function E ( a ) { var b ; a = aa ( a ) ; if ( b = g . exec ( a ) ) { b = b [ 1 ] . toLowerCase ( ) ; a = w ( "<table>" + a + "</table>" ) ; if ( /(thead|tbody|tfoot)/ . test ( b ) ) return a . children ( b ) ; a = a . children ( "tbody" ) ; return "tr" === b ? a . children ( "tr" ) : a . children ( "tr" ) . contents ( ) } return w ( "<div>" +
a + "</div>" ) . contents ( ) } function O ( a , b , c , d , e , f , h , g ) { var k = [ ] , l , n , t = b [ 0 ] , H = a . shift ( ) , y = v ( { } , H , { templateUrl : null , transclude : null , replace : null , $$originalDirective : H } ) , C = D ( H . templateUrl ) ? H . templateUrl ( b , c ) : H . templateUrl ; b . empty ( ) ; q . get ( J . getTrustedResourceUrl ( C ) , { cache : p } ) . success ( function ( p ) { var q , J ; p = oc ( p ) ; if ( H . replace ) { p = E ( p ) ; q = p [ 0 ] ; if ( 1 != p . length || 1 !== q . nodeType ) throw ha ( "tplrt" , H . name , C ) ; p = { $attr : { } } ; lb ( d , b , q ) ; var A = U ( q , [ ] , p ) ; W ( H . scope ) && kb ( A ) ; a = A . concat ( a ) ; B ( c , p ) } else q = t , b . html ( p ) ; a . unshift ( y ) ;
l = Wa ( a , q , c , e , b , H , f , h , g ) ; r ( d , function ( a , c ) { a == q && ( d [ c ] = b [ 0 ] ) } ) ; for ( n = N ( b [ 0 ] . childNodes , e ) ; k . length ; ) { p = k . shift ( ) ; J = k . shift ( ) ; var I = k . shift ( ) , F = k . shift ( ) , A = b [ 0 ] ; if ( J !== t ) { var ba = J . className ; g . hasElementTranscludeDirective && H . replace || ( A = Cb ( q ) ) ; lb ( I , w ( J ) , A ) ; S ( w ( A ) , ba ) } J = l . transclude ? Z ( p , l . transclude ) : F ; l ( n , p , A , d , J ) } k = null } ) . error ( function ( a , b , c , d ) { throw ha ( "tpload" , d . url ) ; } ) ; return function ( a , b , c , d , e ) { k ? ( k . push ( b ) , k . push ( c ) , k . push ( d ) , k . push ( e ) ) : l ( n , b , c , d , e ) } } function z ( a , b ) { var c = b . priority - a . priority ;
return 0 !== c ? c : a . name !== b . name ? a . name < b . name ? - 1 : 1 : a . index - b . index } function Q ( a , b , c , d ) { if ( b ) throw ha ( "multidir" , b . name , c . name , a , fa ( d ) ) ; } function L ( a , c ) { var d = b ( c , ! 0 ) ; d && a . push ( { priority : 0 , compile : Y ( function ( a , b ) { var c = b . parent ( ) , e = c . data ( "$binding" ) || [ ] ; e . push ( d ) ; S ( c . data ( "$binding" , e ) , "ng-binding" ) ; a . $watch ( d , function ( a ) { b [ 0 ] . nodeValue = a } ) } ) } ) } function Ja ( a , b ) { if ( "srcdoc" == b ) return J . HTML ; var c = Ia ( a ) ; if ( "xlinkHref" == b || "FORM" == c && "action" == b || "IMG" != c && ( "src" == b || "ngSrc" == b ) ) return J . RESOURCE _URL }
function ga ( a , c , d , e ) { var f = b ( d , ! 0 ) ; if ( f ) { if ( "multiple" === e && "SELECT" === Ia ( a ) ) throw ha ( "selmulti" , fa ( a ) ) ; c . push ( { priority : 100 , compile : function ( ) { return { pre : function ( c , d , g ) { d = g . $$observers || ( g . $$observers = { } ) ; if ( h . test ( e ) ) throw ha ( "nodomevents" ) ; if ( f = b ( g [ e ] , ! 0 , Ja ( a , e ) ) ) g [ e ] = f ( c ) , ( d [ e ] || ( d [ e ] = [ ] ) ) . $$inter = ! 0 , ( g . $$observers && g . $$observers [ e ] . $$scope || c ) . $watch ( f , function ( a , b ) { "class" === e && a != b ? g . $updateClass ( a , b ) : g . $set ( e , a ) } ) } } } } ) } } function lb ( a , b , c ) { var d = b [ 0 ] , e = b . length , f = d . parentNode , h , g ; if ( a ) for ( h =
0 , g = a . length ; h < g ; h ++ ) if ( a [ h ] == d ) { a [ h ++ ] = c ; g = h + e - 1 ; for ( var k = a . length ; h < k ; h ++ , g ++ ) g < k ? a [ h ] = a [ g ] : delete a [ h ] ; a . length -= e - 1 ; break } f && f . replaceChild ( c , d ) ; a = T . createDocumentFragment ( ) ; a . appendChild ( d ) ; c [ w . expando ] = d [ w . expando ] ; d = 1 ; for ( e = b . length ; d < e ; d ++ ) f = b [ d ] , w ( f ) . remove ( ) , a . appendChild ( f ) , delete b [ d ] ; b [ 0 ] = c ; b . length = 1 } function nc ( a , b ) { return v ( function ( ) { return a . apply ( null , arguments ) } , a , b ) } var Fb = function ( a , b ) { this . $$element = a ; this . $attr = b || { } } ; Fb . prototype = { $normalize : ka , $addClass : function ( a ) { a && 0 <
a . length && F . addClass ( this . $$element , a ) } , $removeClass : function ( a ) { a && 0 < a . length && F . removeClass ( this . $$element , a ) } , $updateClass : function ( a , b ) { var c = pc ( a , b ) , d = pc ( b , a ) ; 0 === c . length ? F . removeClass ( this . $$element , d ) : 0 === d . length ? F . addClass ( this . $$element , c ) : F . setClass ( this . $$element , c , d ) } , $set : function ( a , b , c , d ) { var e = kc ( this . $$element [ 0 ] , a ) ; e && ( this . $$element . prop ( a , b ) , d = e ) ; this [ a ] = b ; d ? this . $attr [ a ] = d : ( d = this . $attr [ a ] ) || ( this . $attr [ a ] = d = eb ( a , "-" ) ) ; e = Ia ( this . $$element ) ; if ( "A" === e && "href" === a || "IMG" === e &&
"src" === a ) this [ a ] = b = y ( b , "src" === a ) ; ! 1 !== c && ( null === b || b === s ? this . $$element . removeAttr ( d ) : this . $$element . attr ( d , b ) ) ; ( c = this . $$observers ) && r ( c [ a ] , function ( a ) { try { a ( b ) } catch ( c ) { n ( c ) } } ) } , $observe : function ( a , b ) { var c = this , d = c . $$observers || ( c . $$observers = { } ) , e = d [ a ] || ( d [ a ] = [ ] ) ; e . push ( b ) ; C . $evalAsync ( function ( ) { e . $$inter || b ( c [ a ] ) } ) ; return b } } ; var R = b . startSymbol ( ) , V = b . endSymbol ( ) , oc = "{{" == R || "}}" == V ? Ba : function ( a ) { return a . replace ( /\{\{/g , R ) . replace ( /}}/g , V ) } , la = /^ngAttr[A-Z]/ ; return ba } ] } function ka ( b ) { return Sa ( b . replace ( pe ,
"" ) ) } function pc ( b , a ) { var c = "" , d = b . split ( /\s+/ ) , e = a . split ( /\s+/ ) , f = 0 ; a : for ( ; f < d . length ; f ++ ) { for ( var g = d [ f ] , h = 0 ; h < e . length ; h ++ ) if ( g == e [ h ] ) continue a ; c += ( 0 < c . length ? " " : "" ) + g } return c } function Md ( ) { var b = { } , a = /^(\S+)(\s+as\s+(\w+))?$/ ; this . register = function ( a , d ) { xa ( a , "controller" ) ; W ( a ) ? v ( b , a ) : b [ a ] = d } ; this . $get = [ "$injector" , "$window" , function ( c , d ) { return function ( e , f ) { var g , h , m ; x ( e ) && ( g = e . match ( a ) , h = g [ 1 ] , m = g [ 3 ] , e = b . hasOwnProperty ( h ) ? b [ h ] : $b ( f . $scope , h , ! 0 ) || $b ( d , h , ! 0 ) , Qa ( e , h , ! 0 ) ) ; g = c . instantiate ( e , f ) ;
if ( m ) { if ( ! f || "object" != typeof f . $scope ) throw z ( "$controller" ) ( "noscp" , h || e . name , m ) ; f . $scope [ m ] = g } return g } } ] } function Nd ( ) { this . $get = [ "$window" , function ( b ) { return w ( b . document ) } ] } function Od ( ) { this . $get = [ "$log" , function ( b ) { return function ( a , c ) { b . error . apply ( b , arguments ) } } ] } function qc ( b ) { var a = { } , c , d , e ; if ( ! b ) return a ; r ( b . split ( "\n" ) , function ( b ) { e = b . indexOf ( ":" ) ; c = O ( aa ( b . substr ( 0 , e ) ) ) ; d = aa ( b . substr ( e + 1 ) ) ; c && ( a [ c ] = a [ c ] ? a [ c ] + ( ", " + d ) : d ) } ) ; return a } function rc ( b ) { var a = W ( b ) ? b : s ; return function ( c ) { a ||
( a = qc ( b ) ) ; return c ? a [ O ( c ) ] || null : a } } function sc ( b , a , c ) { if ( D ( c ) ) return c ( b , a ) ; r ( c , function ( c ) { b = c ( b , a ) } ) ; return b } function Rd ( ) { var b = /^\s*(\[|\{[^\{])/ , a = /[\}\]]\s*$/ , c = /^\)\]\}',?\n/ , d = { "Content-Type" : "application/json;charset=utf-8" } , e = this . defaults = { transformResponse : [ function ( d ) { x ( d ) && ( d = d . replace ( c , "" ) , b . test ( d ) && a . test ( d ) && ( d = Ub ( d ) ) ) ; return d } ] , transformRequest : [ function ( a ) { return W ( a ) && "[object File]" !== ta . call ( a ) && "[object Blob]" !== ta . call ( a ) ? oa ( a ) : a } ] , headers : { common : { Accept : "application/json, text/plain, */*" } ,
post : $ ( d ) , put : $ ( d ) , patch : $ ( d ) } , xsrfCookieName : "XSRF-TOKEN" , xsrfHeaderName : "X-XSRF-TOKEN" } , f = this . interceptors = [ ] , g = this . responseInterceptors = [ ] ; this . $get = [ "$httpBackend" , "$browser" , "$cacheFactory" , "$rootScope" , "$q" , "$injector" , function ( a , b , c , d , n , q ) { function p ( a ) { function c ( a ) { var b = v ( { } , a , { data : sc ( a . data , a . headers , d . transformResponse ) } ) ; return 200 <= a . status && 300 > a . status ? b : n . reject ( b ) } var d = { method : "get" , transformRequest : e . transformRequest , transformResponse : e . transformResponse } , f = function ( a ) { function b ( a ) { var c ;
r ( a , function ( b , d ) { D ( b ) && ( c = b ( ) , null != c ? a [ d ] = c : delete a [ d ] ) } ) } var c = e . headers , d = v ( { } , a . headers ) , f , h , c = v ( { } , c . common , c [ O ( a . method ) ] ) ; b ( c ) ; b ( d ) ; a : for ( f in c ) { a = O ( f ) ; for ( h in d ) if ( O ( h ) === a ) continue a ; d [ f ] = c [ f ] } return d } ( a ) ; v ( d , a ) ; d . headers = f ; d . method = Da ( d . method ) ; ( a = Gb ( d . url ) ? b . cookies ( ) [ d . xsrfCookieName || e . xsrfCookieName ] : s ) && ( f [ d . xsrfHeaderName || e . xsrfHeaderName ] = a ) ; var h = [ function ( a ) { f = a . headers ; var b = sc ( a . data , rc ( f ) , a . transformRequest ) ; E ( a . data ) && r ( f , function ( a , b ) { "content-type" === O ( b ) && delete f [ b ] } ) ;
E ( a . withCredentials ) && ! E ( e . withCredentials ) && ( a . withCredentials = e . withCredentials ) ; return t ( a , b , f ) . then ( c , c ) } , s ] , g = n . when ( d ) ; for ( r ( A , function ( a ) { ( a . request || a . requestError ) && h . unshift ( a . request , a . requestError ) ; ( a . response || a . responseError ) && h . push ( a . response , a . responseError ) } ) ; h . length ; ) { a = h . shift ( ) ; var k = h . shift ( ) , g = g . then ( a , k ) } g . success = function ( a ) { g . then ( function ( b ) { a ( b . data , b . status , b . headers , d ) } ) ; return g } ; g . error = function ( a ) { g . then ( null , function ( b ) { a ( b . data , b . status , b . headers , d ) } ) ; return g } ;
return g } function t ( b , c , f ) { function g ( a , b , c ) { A && ( 200 <= a && 300 > a ? A . put ( s , [ a , b , qc ( c ) ] ) : A . remove ( s ) ) ; k ( b , a , c ) ; d . $$phase || d . $apply ( ) } function k ( a , c , d ) { c = Math . max ( c , 0 ) ; ( 200 <= c && 300 > c ? t . resolve : t . reject ) ( { data : a , status : c , headers : rc ( d ) , config : b } ) } function m ( ) { var a = cb ( p . pendingRequests , b ) ; - 1 !== a && p . pendingRequests . splice ( a , 1 ) } var t = n . defer ( ) , q = t . promise , A , r , s = H ( b . url , b . params ) ; p . pendingRequests . push ( b ) ; q . then ( m , m ) ; ( b . cache || e . cache ) && ( ! 1 !== b . cache && "GET" == b . method ) && ( A = W ( b . cache ) ? b . cache : W ( e . cache ) ? e . cache :
C ) ; if ( A ) if ( r = A . get ( s ) , u ( r ) ) { if ( r . then ) return r . then ( m , m ) , r ; M ( r ) ? k ( r [ 1 ] , r [ 0 ] , $ ( r [ 2 ] ) ) : k ( r , 200 , { } ) } else A . put ( s , q ) ; E ( r ) && a ( b . method , s , c , g , f , b . timeout , b . withCredentials , b . responseType ) ; return q } function H ( a , b ) { if ( ! b ) return a ; var c = [ ] ; Qc ( b , function ( a , b ) { null === a || E ( a ) || ( M ( a ) || ( a = [ a ] ) , r ( a , function ( a ) { W ( a ) && ( a = oa ( a ) ) ; c . push ( wa ( b ) + "=" + wa ( a ) ) } ) ) } ) ; 0 < c . length && ( a += ( - 1 == a . indexOf ( "?" ) ? "?" : "&" ) + c . join ( "&" ) ) ; return a } var C = c ( "$http" ) , A = [ ] ; r ( f , function ( a ) { A . unshift ( x ( a ) ? q . get ( a ) : q . invoke ( a ) ) } ) ; r ( g , function ( a ,
b ) { var c = x ( a ) ? q . get ( a ) : q . invoke ( a ) ; A . splice ( b , 0 , { response : function ( a ) { return c ( n . when ( a ) ) } , responseError : function ( a ) { return c ( n . reject ( a ) ) } } ) } ) ; p . pendingRequests = [ ] ; ( function ( a ) { r ( arguments , function ( a ) { p [ a ] = function ( b , c ) { return p ( v ( c || { } , { method : a , url : b } ) ) } } ) } ) ( "get" , "delete" , "head" , "jsonp" ) ; ( function ( a ) { r ( arguments , function ( a ) { p [ a ] = function ( b , c , d ) { return p ( v ( d || { } , { method : a , url : b , data : c } ) ) } } ) } ) ( "post" , "put" ) ; p . defaults = e ; return p } ] } function qe ( b ) { if ( 8 >= P && ( ! b . match ( /^(get|post|head|put|delete|options)$/i ) ||
! Q . XMLHttpRequest ) ) return new Q . ActiveXObject ( "Microsoft.XMLHTTP" ) ; if ( Q . XMLHttpRequest ) return new Q . XMLHttpRequest ; throw z ( "$httpBackend" ) ( "noxhr" ) ; } function Sd ( ) { this . $get = [ "$browser" , "$window" , "$document" , function ( b , a , c ) { return re ( b , qe , b . defer , a . angular . callbacks , c [ 0 ] ) } ] } function re ( b , a , c , d , e ) { function f ( a , b ) { var c = e . createElement ( "script" ) , d = function ( ) { c . onreadystatechange = c . onload = c . onerror = null ; e . body . removeChild ( c ) ; b && b ( ) } ; c . type = "text/javascript" ; c . src = a ; P && 8 >= P ? c . onreadystatechange = function ( ) { /loaded|complete/ . test ( c . readyState ) &&
d ( ) } : c . onload = c . onerror = function ( ) { d ( ) } ; e . body . appendChild ( c ) ; return d } var g = - 1 ; return function ( e , m , k , l , n , q , p , t ) { function H ( ) { A = g ; F && F ( ) ; y && y . abort ( ) } function C ( a , d , e , f ) { S && c . cancel ( S ) ; F = y = null ; 0 === d && ( d = e ? 200 : "file" == pa ( m ) . protocol ? 404 : 0 ) ; a ( 1223 == d ? 204 : d , e , f ) ; b . $$completeOutstandingRequest ( B ) } var A ; b . $$incOutstandingRequestCount ( ) ; m = m || b . url ( ) ; if ( "jsonp" == O ( e ) ) { var J = "_" + ( d . counter ++ ) . toString ( 36 ) ; d [ J ] = function ( a ) { d [ J ] . data = a } ; var F = f ( m . replace ( "JSON_CALLBACK" , "angular.callbacks." + J ) , function ( ) { d [ J ] . data ?
C ( l , 200 , d [ J ] . data ) : C ( l , A || - 2 ) ; d [ J ] = Ca . noop } ) } else { var y = a ( e ) ; y . open ( e , m , ! 0 ) ; r ( n , function ( a , b ) { u ( a ) && y . setRequestHeader ( b , a ) } ) ; y . onreadystatechange = function ( ) { if ( y && 4 == y . readyState ) { var a = null , b = null ; A !== g && ( a = y . getAllResponseHeaders ( ) , b = "response" in y ? y . response : y . responseText ) ; C ( l , A || y . status , b , a ) } } ; p && ( y . withCredentials = ! 0 ) ; if ( t ) try { y . responseType = t } catch ( s ) { if ( "json" !== t ) throw s ; } y . send ( k || null ) } if ( 0 < q ) var S = c ( H , q ) ; else q && q . then && q . then ( H ) } } function Pd ( ) { 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" , "$exceptionHandler" , "$sce" , function ( c , d , e ) { function f ( f , k , l ) { for ( var n , q , p = 0 , t = [ ] , H = f . length , C = ! 1 , A = [ ] ; p < H ; ) - 1 != ( n = f . indexOf ( b , p ) ) && - 1 != ( q = f . indexOf ( a , n + g ) ) ? ( p != n && t . push ( f . substring ( p , n ) ) , t . push ( p = c ( C = f . substring ( n + g , q ) ) ) , p . exp = C , p = q + h , C = ! 0 ) : ( p != H && t . push ( f . substring ( p ) ) , p = H ) ; ( H = t . length ) || ( t . push ( "" ) , H = 1 ) ; if ( l && 1 < t . length ) throw tc ( "noconcat" , f ) ; if ( ! k || C ) return A . length = H , p = function ( a ) { try { for ( var b = 0 , c = H , h ; b < c ; b ++ ) "function" ==
typeof ( h = t [ b ] ) && ( h = h ( a ) , h = l ? e . getTrusted ( l , h ) : e . valueOf ( h ) , null === h || E ( h ) ? h = "" : "string" != typeof h && ( h = oa ( h ) ) ) , A [ b ] = h ; return A . join ( "" ) } catch ( g ) { a = tc ( "interr" , f , g . toString ( ) ) , d ( a ) } } , p . exp = f , p . parts = t , p } var g = b . length , h = a . length ; f . startSymbol = function ( ) { return b } ; f . endSymbol = function ( ) { return a } ; return f } ] } function Qd ( ) { this . $get = [ "$rootScope" , "$window" , "$q" , function ( b , a , c ) { function d ( d , g , h , m ) { var k = a . setInterval , l = a . clearInterval , n = c . defer ( ) , q = n . promise , p = 0 , t = u ( m ) && ! m ; h = u ( h ) ? h : 0 ; q . then ( null , null , d ) ;
q . $$intervalId = k ( function ( ) { n . notify ( p ++ ) ; 0 < h && p >= h && ( n . resolve ( p ) , l ( q . $$intervalId ) , delete e [ q . $$intervalId ] ) ; t || b . $apply ( ) } , g ) ; e [ q . $$intervalId ] = n ; return q } var e = { } ; d . cancel = function ( a ) { return a && a . $$intervalId in e ? ( e [ a . $$intervalId ] . reject ( "canceled" ) , clearInterval ( a . $$intervalId ) , delete e [ a . $$intervalId ] , ! 0 ) : ! 1 } ; return d } ] } function Zc ( ) { this . $get = function ( ) { return { id : "en-us" , 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 ( " " ) , 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 1 === b ? "one" : "other" } } } } function uc ( b ) { b = b . split ( "/" ) ; for ( var a = b . length ; a -- ; ) b [ a ] = vb ( b [ a ] ) ; return b . join ( "/" ) } function vc ( b , a , c ) { b = pa ( b , c ) ; a . $$protocol = b . protocol ; a . $$host = b . hostname ; a . $$port = R ( b . port ) || se [ b . protocol ] || null } function wc ( b , a , c ) { var d = "/" !== b . charAt ( 0 ) ; d && ( b = "/" + b ) ; b = pa ( b , c ) ; a . $$path = decodeURIComponent ( d &&
"/" === b . pathname . charAt ( 0 ) ? b . pathname . substring ( 1 ) : b . pathname ) ; a . $$search = Wb ( b . search ) ; a . $$hash = decodeURIComponent ( b . hash ) ; a . $$path && "/" != a . $$path . charAt ( 0 ) && ( a . $$path = "/" + a . $$path ) } function ma ( b , a ) { if ( 0 === a . indexOf ( b ) ) return a . substr ( b . length ) } function Xa ( b ) { var a = b . indexOf ( "#" ) ; return - 1 == a ? b : b . substr ( 0 , a ) } function Hb ( b ) { return b . substr ( 0 , Xa ( b ) . lastIndexOf ( "/" ) + 1 ) } function xc ( b , a ) { this . $$html5 = ! 0 ; a = a || "" ; var c = Hb ( b ) ; vc ( b , this , b ) ; this . $$parse = function ( a ) { var e = ma ( c , a ) ; if ( ! x ( e ) ) throw Ib ( "ipthprfx" ,
a , c ) ; wc ( e , this , b ) ; this . $$path || ( this . $$path = "/" ) ; this . $$compose ( ) } ; this . $$compose = function ( ) { var a = Xb ( this . $$search ) , b = this . $$hash ? "#" + vb ( this . $$hash ) : "" ; this . $$url = uc ( this . $$path ) + ( a ? "?" + a : "" ) + b ; this . $$absUrl = c + this . $$url . substr ( 1 ) } ; this . $$rewrite = function ( d ) { var e ; if ( ( e = ma ( b , d ) ) !== s ) return d = e , ( e = ma ( a , e ) ) !== s ? c + ( ma ( "/" , e ) || e ) : b + d ; if ( ( e = ma ( c , d ) ) !== s ) return c + e ; if ( c == d + "/" ) return c } } function Jb ( b , a ) { var c = Hb ( b ) ; vc ( b , this , b ) ; this . $$parse = function ( d ) { var e = ma ( b , d ) || ma ( c , d ) , e = "#" == e . charAt ( 0 ) ? ma ( a , e ) :
this . $$html5 ? e : "" ; if ( ! x ( e ) ) throw Ib ( "ihshprfx" , d , a ) ; wc ( e , this , b ) ; d = this . $$path ; var f = /^\/?.*?:(\/.*)/ ; 0 === e . indexOf ( b ) && ( e = e . replace ( b , "" ) ) ; f . exec ( e ) || ( d = ( e = f . exec ( d ) ) ? e [ 1 ] : d ) ; this . $$path = d ; this . $$compose ( ) } ; this . $$compose = function ( ) { var c = Xb ( this . $$search ) , e = this . $$hash ? "#" + vb ( this . $$hash ) : "" ; this . $$url = uc ( this . $$path ) + ( c ? "?" + c : "" ) + e ; this . $$absUrl = b + ( this . $$url ? a + this . $$url : "" ) } ; this . $$rewrite = function ( a ) { if ( Xa ( b ) == Xa ( a ) ) return a } } function yc ( b , a ) { this . $$html5 = ! 0 ; Jb . apply ( this , arguments ) ; var c = Hb ( b ) ;
this . $$rewrite = function ( d ) { var e ; if ( b == Xa ( d ) ) return d ; if ( e = ma ( c , d ) ) return b + a + e ; if ( c === d + "/" ) return c } } function mb ( b ) { return function ( ) { return this [ b ] } } function zc ( b , a ) { return function ( c ) { if ( E ( c ) ) return this [ b ] ; this [ b ] = a ( c ) ; this . $$compose ( ) ; return this } } function Td ( ) { 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 , f ) { function g ( a ) { c . $broadcast ( "$locationChangeSuccess" ,
h . absUrl ( ) , a ) } var h , m = d . baseHref ( ) , k = d . url ( ) ; a ? ( m = k . substring ( 0 , k . indexOf ( "/" , k . indexOf ( "//" ) + 2 ) ) + ( m || "/" ) , e = e . history ? xc : yc ) : ( m = Xa ( k ) , e = Jb ) ; h = new e ( m , "#" + b ) ; h . $$parse ( h . $$rewrite ( k ) ) ; f . on ( "click" , function ( a ) { if ( ! a . ctrlKey && ! a . metaKey && 2 != a . which ) { for ( var b = w ( a . target ) ; "a" !== O ( b [ 0 ] . nodeName ) ; ) if ( b [ 0 ] === f [ 0 ] || ! ( b = b . parent ( ) ) [ 0 ] ) return ; var e = b . prop ( "href" ) ; W ( e ) && "[object SVGAnimatedString]" === e . toString ( ) && ( e = pa ( e . animVal ) . href ) ; var g = h . $$rewrite ( e ) ; e && ( ! b . attr ( "target" ) && g && ! a . isDefaultPrevented ( ) ) &&
( a . preventDefault ( ) , g != d . url ( ) && ( h . $$parse ( g ) , c . $apply ( ) , Q . angular [ "ff-684208-preventDefault" ] = ! 0 ) ) } } ) ; h . absUrl ( ) != k && d . url ( h . absUrl ( ) , ! 0 ) ; d . onUrlChange ( function ( a ) { h . absUrl ( ) != a && ( c . $evalAsync ( function ( ) { var b = h . absUrl ( ) ; h . $$parse ( a ) ; c . $broadcast ( "$locationChangeStart" , a , b ) . defaultPrevented ? ( h . $$parse ( b ) , d . url ( b ) ) : g ( b ) } ) , c . $$phase || c . $digest ( ) ) } ) ; var l = 0 ; c . $watch ( function ( ) { var a = d . url ( ) , b = h . $$replace ; l && a == h . absUrl ( ) || ( l ++ , c . $evalAsync ( function ( ) { c . $broadcast ( "$locationChangeStart" , h . absUrl ( ) , a ) . defaultPrevented ?
h . $$parse ( a ) : ( d . url ( h . absUrl ( ) , b ) , g ( a ) ) } ) ) ; h . $$replace = ! 1 ; return l } ) ; return h } ] } function Ud ( ) { var b = ! 0 , a = this ; this . debugEnabled = function ( a ) { return u ( a ) ? ( b = a , this ) : b } ; this . $get = [ "$window" , function ( c ) { function d ( a ) { a instanceof Error && ( a . stack ? a = a . message && - 1 === a . stack . indexOf ( a . message ) ? "Error: " + a . message + "\n" + a . stack : a . stack : a . sourceURL && ( a = a . message + "\n" + a . sourceURL + ":" + a . line ) ) ; return a } function e ( a ) { var b = c . console || { } , e = b [ a ] || b . log || B ; a = ! 1 ; try { a = ! ! e . apply } catch ( m ) { } return a ? function ( ) { var a =
[ ] ; r ( arguments , function ( b ) { a . push ( d ( b ) ) } ) ; return e . apply ( b , a ) } : function ( a , b ) { e ( a , null == b ? "" : b ) } } return { log : e ( "log" ) , info : e ( "info" ) , warn : e ( "warn" ) , error : e ( "error" ) , debug : function ( ) { var c = e ( "debug" ) ; return function ( ) { b && c . apply ( a , arguments ) } } ( ) } } ] } function da ( b , a ) { if ( "constructor" === b ) throw za ( "isecfld" , a ) ; return b } function Ya ( b , a ) { if ( b ) { if ( b . constructor === b ) throw za ( "isecfn" , a ) ; if ( b . document && b . location && b . alert && b . setInterval ) throw za ( "isecwindow" , a ) ; if ( b . children && ( b . nodeName || b . prop && b . attr && b . find ) ) throw za ( "isecdom" ,
a ) ; } return b } function nb ( b , a , c , d , e ) { e = e || { } ; a = a . split ( "." ) ; for ( var f , g = 0 ; 1 < a . length ; g ++ ) { f = da ( a . shift ( ) , d ) ; var h = b [ f ] ; h || ( h = { } , b [ f ] = h ) ; b = h ; b . then && e . unwrapPromises && ( qa ( d ) , "$$v" in b || function ( a ) { a . then ( function ( b ) { a . $$v = b } ) } ( b ) , b . $$v === s && ( b . $$v = { } ) , b = b . $$v ) } f = da ( a . shift ( ) , d ) ; return b [ f ] = c } function Ac ( b , a , c , d , e , f , g ) { da ( b , f ) ; da ( a , f ) ; da ( c , f ) ; da ( d , f ) ; da ( e , f ) ; return g . unwrapPromises ? function ( h , g ) { var k = g && g . hasOwnProperty ( b ) ? g : h , l ; if ( null == k ) return k ; ( k = k [ b ] ) && k . then && ( qa ( f ) , "$$v" in k || ( l = k , l . $$v = s , l . then ( function ( a ) { l . $$v =
a } ) ) , k = k . $$v ) ; if ( ! a ) return k ; if ( null == k ) return s ; ( k = k [ a ] ) && k . then && ( qa ( f ) , "$$v" in k || ( l = k , l . $$v = s , l . then ( function ( a ) { l . $$v = a } ) ) , k = k . $$v ) ; if ( ! c ) return k ; if ( null == k ) return s ; ( k = k [ c ] ) && k . then && ( qa ( f ) , "$$v" in k || ( l = k , l . $$v = s , l . then ( function ( a ) { l . $$v = a } ) ) , k = k . $$v ) ; if ( ! d ) return k ; if ( null == k ) return s ; ( k = k [ d ] ) && k . then && ( qa ( f ) , "$$v" in k || ( l = k , l . $$v = s , l . then ( function ( a ) { l . $$v = a } ) ) , k = k . $$v ) ; if ( ! e ) return k ; if ( null == k ) return s ; ( k = k [ e ] ) && k . then && ( qa ( f ) , "$$v" in k || ( l = k , l . $$v = s , l . then ( function ( a ) { l . $$v = a } ) ) , k = k . $$v ) ;
return k } : function ( f , g ) { var k = g && g . hasOwnProperty ( b ) ? g : f ; if ( null == k ) return k ; k = k [ b ] ; if ( ! a ) return k ; if ( null == k ) return s ; k = k [ a ] ; if ( ! c ) return k ; if ( null == k ) return s ; k = k [ c ] ; if ( ! d ) return k ; if ( null == k ) return s ; k = k [ d ] ; return e ? null == k ? s : k = k [ e ] : k } } function te ( b , a ) { da ( b , a ) ; return function ( a , d ) { return null == a ? s : ( d && d . hasOwnProperty ( b ) ? d : a ) [ b ] } } function ue ( b , a , c ) { da ( b , c ) ; da ( a , c ) ; return function ( c , e ) { if ( null == c ) return s ; c = ( e && e . hasOwnProperty ( b ) ? e : c ) [ b ] ; return null == c ? s : c [ a ] } } function Bc ( b , a , c ) { if ( Kb . hasOwnProperty ( b ) ) return Kb [ b ] ;
var d = b . split ( "." ) , e = d . length , f ; if ( a . unwrapPromises || 1 !== e ) if ( a . unwrapPromises || 2 !== e ) if ( a . csp ) f = 6 > e ? Ac ( d [ 0 ] , d [ 1 ] , d [ 2 ] , d [ 3 ] , d [ 4 ] , c , a ) : function ( b , f ) { var h = 0 , g ; do g = Ac ( d [ h ++ ] , d [ h ++ ] , d [ h ++ ] , d [ h ++ ] , d [ h ++ ] , c , a ) ( b , f ) , f = s , b = g ; while ( h < e ) ; return g } ; else { var g = "var p;\n" ; r ( d , function ( b , d ) { da ( b , c ) ; g += "if(s == null) return undefined;\ns=" + ( d ? "s" : '((k&&k.hasOwnProperty("' + b + '"))?k:s)' ) + '["' + b + '"];\n' + ( a . unwrapPromises ? 'if (s && s.then) {\n pw("' + c . replace ( /(["\r\n])/g , "\\$1" ) + '");\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' :
"" ) } ) ; var g = g + "return s;" , h = new Function ( "s" , "k" , "pw" , g ) ; h . toString = Y ( g ) ; f = a . unwrapPromises ? function ( a , b ) { return h ( a , b , qa ) } : h } else f = ue ( d [ 0 ] , d [ 1 ] , c ) ; else f = te ( d [ 0 ] , c ) ; "hasOwnProperty" !== b && ( Kb [ b ] = f ) ; return f } function Vd ( ) { var b = { } , a = { csp : ! 1 , unwrapPromises : ! 1 , logPromiseWarnings : ! 0 } ; this . unwrapPromises = function ( b ) { return u ( b ) ? ( a . unwrapPromises = ! ! b , this ) : a . unwrapPromises } ; this . logPromiseWarnings = function ( b ) { return u ( b ) ? ( a . logPromiseWarnings = b , this ) : a . logPromiseWarnings } ; this . $get = [ "$filter" , "$sniffer" ,
"$log" , function ( c , d , e ) { a . csp = d . csp ; qa = function ( b ) { a . logPromiseWarnings && ! Cc . hasOwnProperty ( b ) && ( Cc [ b ] = ! 0 , e . warn ( "[$parse] Promise found in the expression `" + b + "`. Automatic unwrapping of promises in Angular expressions is deprecated." ) ) } ; return function ( d ) { var e ; switch ( typeof d ) { case "string" : if ( b . hasOwnProperty ( d ) ) return b [ d ] ; e = new Lb ( a ) ; e = ( new Za ( e , c , a ) ) . parse ( d , ! 1 ) ; "hasOwnProperty" !== d && ( b [ d ] = e ) ; return e ; case "function" : return d ; default : return B } } } ] } function Xd ( ) { this . $get = [ "$rootScope" , "$exceptionHandler" ,
function ( b , a ) { return ve ( function ( a ) { b . $evalAsync ( a ) } , a ) } ] } function ve ( b , a ) { function c ( a ) { return a } function d ( a ) { return g ( a ) } var e = function ( ) { var g = [ ] , k , l ; return l = { resolve : function ( a ) { if ( g ) { var c = g ; g = s ; k = f ( a ) ; c . length && b ( function ( ) { for ( var a , b = 0 , d = c . length ; b < d ; b ++ ) a = c [ b ] , k . then ( a [ 0 ] , a [ 1 ] , a [ 2 ] ) } ) } } , reject : function ( a ) { l . resolve ( h ( a ) ) } , notify : function ( a ) { if ( g ) { var c = g ; g . length && b ( function ( ) { for ( var b , d = 0 , e = c . length ; d < e ; d ++ ) b = c [ d ] , b [ 2 ] ( a ) } ) } } , promise : { then : function ( b , f , h ) { var l = e ( ) , H = function ( d ) { try { l . resolve ( ( D ( b ) ?
b : c ) ( d ) ) } catch ( e ) { l . reject ( e ) , a ( e ) } } , C = function ( b ) { try { l . resolve ( ( D ( f ) ? f : d ) ( b ) ) } catch ( c ) { l . reject ( c ) , a ( c ) } } , A = function ( b ) { try { l . notify ( ( D ( h ) ? h : c ) ( b ) ) } catch ( d ) { a ( d ) } } ; g ? g . push ( [ H , C , A ] ) : k . then ( H , C , A ) ; return l . promise } , "catch" : function ( a ) { return this . then ( null , a ) } , "finally" : function ( a ) { function b ( a , c ) { var d = e ( ) ; c ? d . resolve ( a ) : d . reject ( a ) ; return d . promise } function d ( e , f ) { var h = null ; try { h = ( a || c ) ( ) } catch ( g ) { return b ( g , ! 1 ) } return h && D ( h . then ) ? h . then ( function ( ) { return b ( e , f ) } , function ( a ) { return b ( a , ! 1 ) } ) :
b ( e , f ) } return this . then ( function ( a ) { return d ( a , ! 0 ) } , function ( a ) { return d ( a , ! 1 ) } ) } } } } , f = function ( a ) { return a && D ( a . then ) ? a : { then : function ( c ) { var d = e ( ) ; b ( function ( ) { d . resolve ( c ( a ) ) } ) ; return d . promise } } } , g = function ( a ) { var b = e ( ) ; b . reject ( a ) ; return b . promise } , h = function ( c ) { return { then : function ( f , h ) { var g = e ( ) ; b ( function ( ) { try { g . resolve ( ( D ( h ) ? h : d ) ( c ) ) } catch ( b ) { g . reject ( b ) , a ( b ) } } ) ; return g . promise } } } ; return { defer : e , reject : g , when : function ( h , k , l , n ) { var q = e ( ) , p , t = function ( b ) { try { return ( D ( k ) ? k : c ) ( b ) } catch ( d ) { return a ( d ) ,
g ( d ) } } , H = function ( b ) { try { return ( D ( l ) ? l : d ) ( b ) } catch ( c ) { return a ( c ) , g ( c ) } } , C = function ( b ) { try { return ( D ( n ) ? n : c ) ( b ) } catch ( d ) { a ( d ) } } ; b ( function ( ) { f ( h ) . then ( function ( a ) { p || ( p = ! 0 , q . resolve ( f ( a ) . then ( t , H , C ) ) ) } , function ( a ) { p || ( p = ! 0 , q . resolve ( H ( a ) ) ) } , function ( a ) { p || q . notify ( C ( a ) ) } ) } ) ; return q . promise } , all : function ( a ) { var b = e ( ) , c = 0 , d = M ( a ) ? [ ] : { } ; r ( a , function ( a , e ) { c ++ ; f ( a ) . then ( function ( a ) { d . hasOwnProperty ( e ) || ( d [ e ] = a , -- c || b . resolve ( d ) ) } , function ( a ) { d . hasOwnProperty ( e ) || b . reject ( a ) } ) } ) ; 0 === c && b . resolve ( d ) ; return b . promise } } }
function de ( ) { this . $get = [ "$window" , "$timeout" , function ( b , a ) { var c = b . requestAnimationFrame || b . webkitRequestAnimationFrame || b . mozRequestAnimationFrame , d = b . cancelAnimationFrame || b . webkitCancelAnimationFrame || b . mozCancelAnimationFrame || b . webkitCancelRequestAnimationFrame , e = ! ! c , f = e ? function ( a ) { var b = c ( a ) ; return function ( ) { d ( b ) } } : function ( b ) { var c = a ( b , 16.66 , ! 1 ) ; return function ( ) { a . cancel ( c ) } } ; f . supported = e ; return f } ] } function Wd ( ) { var b = 10 , a = z ( "$rootScope" ) , c = null ; this . digestTtl = function ( a ) { arguments . length &&
( b = a ) ; return b } ; this . $get = [ "$injector" , "$exceptionHandler" , "$parse" , "$browser" , function ( d , e , f , g ) { function h ( ) { this . $id = ab ( ) ; this . $$phase = this . $parent = this . $$watchers = this . $$nextSibling = this . $$prevSibling = this . $$childHead = this . $$childTail = null ; this [ "this" ] = this . $root = this ; this . $$destroyed = ! 1 ; this . $$asyncQueue = [ ] ; this . $$postDigestQueue = [ ] ; this . $$listeners = { } ; this . $$listenerCount = { } ; this . $$isolateBindings = { } } function m ( b ) { if ( q . $$phase ) throw a ( "inprog" , q . $$phase ) ; q . $$phase = b } function k ( a , b ) { var c = f ( a ) ;
Qa ( c , b ) ; return c } function l ( a , b , c ) { do a . $$listenerCount [ c ] -= b , 0 === a . $$listenerCount [ c ] && delete a . $$listenerCount [ c ] ; while ( a = a . $parent ) } function n ( ) { } h . prototype = { constructor : h , $new : function ( a ) { a ? ( a = new h , a . $root = this . $root , a . $$asyncQueue = this . $$asyncQueue , a . $$postDigestQueue = this . $$postDigestQueue ) : ( a = function ( ) { } , a . prototype = this , a = new a , a . $id = ab ( ) ) ; a [ "this" ] = a ; a . $$listeners = { } ; a . $$listenerCount = { } ; a . $parent = this ; 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 , d ) { var e = k ( a , "watch" ) , f = this . $$watchers , h = { fn : b , last : n , get : e , exp : a , eq : ! ! d } ; c = null ; if ( ! D ( b ) ) { var g = k ( b || B , "listener" ) ; h . fn = function ( a , b , c ) { g ( c ) } } if ( "string" == typeof a && e . constant ) { var m = h . fn ; h . fn = function ( a , b , c ) { m . call ( this , a , b , c ) ; Na ( f , h ) } } f || ( f = this . $$watchers = [ ] ) ; f . unshift ( h ) ; return function ( ) { Na ( f , h ) ; c = null } } , $watchCollection : function ( a , b ) { var c = this , d , e , h , g = 1 < b . length ,
k = 0 , m = f ( a ) , l = [ ] , n = { } , q = ! 0 , r = 0 ; return this . $watch ( function ( ) { d = m ( c ) ; var a , b ; if ( W ( d ) ) if ( $a ( d ) ) for ( e !== l && ( e = l , r = e . length = 0 , k ++ ) , a = d . length , r !== a && ( k ++ , e . length = r = a ) , b = 0 ; b < a ; b ++ ) e [ b ] !== e [ b ] && d [ b ] !== d [ b ] || e [ b ] === d [ b ] || ( k ++ , e [ b ] = d [ b ] ) ; else { e !== n && ( e = n = { } , r = 0 , k ++ ) ; a = 0 ; for ( b in d ) d . hasOwnProperty ( b ) && ( a ++ , e . hasOwnProperty ( b ) ? e [ b ] !== d [ b ] && ( k ++ , e [ b ] = d [ b ] ) : ( r ++ , e [ b ] = d [ b ] , k ++ ) ) ; if ( r > a ) for ( b in k ++ , e ) e . hasOwnProperty ( b ) && ! d . hasOwnProperty ( b ) && ( r -- , delete e [ b ] ) } else e !== d && ( e = d , k ++ ) ; return k } , function ( ) { q ? ( q =
! 1 , b ( d , d , c ) ) : b ( d , h , c ) ; if ( g ) if ( W ( d ) ) if ( $a ( d ) ) { h = Array ( d . length ) ; for ( var a = 0 ; a < d . length ; a ++ ) h [ a ] = d [ a ] } else for ( a in h = { } , d ) Dc . call ( d , a ) && ( h [ a ] = d [ a ] ) ; else h = d } ) } , $digest : function ( ) { var d , f , h , g , k = this . $$asyncQueue , l = this . $$postDigestQueue , r , y , s = b , S , N = [ ] , u , v , I ; m ( "$digest" ) ; c = null ; do { y = ! 1 ; for ( S = this ; k . length ; ) { try { I = k . shift ( ) , I . scope . $eval ( I . expression ) } catch ( w ) { q . $$phase = null , e ( w ) } c = null } a : do { if ( g = S . $$watchers ) for ( r = g . length ; r -- ; ) try { if ( d = g [ r ] ) if ( ( f = d . get ( S ) ) !== ( h = d . last ) && ! ( d . eq ? ua ( f , h ) : "number" == typeof f &&
"number" == typeof h && isNaN ( f ) && isNaN ( h ) ) ) y = ! 0 , c = d , d . last = d . eq ? $ ( f ) : f , d . fn ( f , h === n ? f : h , S ) , 5 > s && ( u = 4 - s , N [ u ] || ( N [ u ] = [ ] ) , v = D ( d . exp ) ? "fn: " + ( d . exp . name || d . exp . toString ( ) ) : d . exp , v += "; newVal: " + oa ( f ) + "; oldVal: " + oa ( h ) , N [ u ] . push ( v ) ) ; else if ( d === c ) { y = ! 1 ; break a } } catch ( x ) { q . $$phase = null , e ( x ) } if ( ! ( g = S . $$childHead || S !== this && S . $$nextSibling ) ) for ( ; S !== this && ! ( g = S . $$nextSibling ) ; ) S = S . $parent } while ( S = g ) ; if ( ( y || k . length ) && ! s -- ) throw q . $$phase = null , a ( "infdig" , b , oa ( N ) ) ; } while ( y || k . length ) ; for ( q . $$phase = null ; l . length ; ) try { l . shift ( ) ( ) } catch ( B ) { e ( B ) } } ,
$destroy : function ( ) { if ( ! this . $$destroyed ) { var a = this . $parent ; this . $broadcast ( "$destroy" ) ; this . $$destroyed = ! 0 ; this !== q && ( r ( this . $$listenerCount , db ( null , l , this ) ) , a . $$childHead == this && ( a . $$childHead = this . $$nextSibling ) , a . $$childTail == this && ( a . $$childTail = this . $$prevSibling ) , this . $$prevSibling && ( this . $$prevSibling . $$nextSibling = this . $$nextSibling ) , this . $$nextSibling && ( this . $$nextSibling . $$prevSibling = this . $$prevSibling ) , this . $parent = this . $$nextSibling = this . $$prevSibling = this . $$childHead = this . $$childTail =
null ) } } , $eval : function ( a , b ) { return f ( a ) ( this , b ) } , $evalAsync : function ( a ) { q . $$phase || q . $$asyncQueue . length || g . defer ( function ( ) { q . $$asyncQueue . length && q . $digest ( ) } ) ; this . $$asyncQueue . push ( { scope : this , expression : a } ) } , $$postDigest : function ( a ) { this . $$postDigestQueue . push ( a ) } , $apply : function ( a ) { try { return m ( "$apply" ) , this . $eval ( a ) } catch ( b ) { e ( b ) } finally { q . $$phase = null ; try { q . $digest ( ) } catch ( c ) { throw e ( c ) , c ; } } } , $on : function ( a , b ) { var c = this . $$listeners [ a ] ; c || ( this . $$listeners [ a ] = c = [ ] ) ; c . push ( b ) ; var d = this ; do d . $$listenerCount [ a ] ||
( d . $$listenerCount [ a ] = 0 ) , d . $$listenerCount [ a ] ++ ; while ( d = d . $parent ) ; var e = this ; return function ( ) { c [ cb ( c , b ) ] = null ; l ( e , 1 , a ) } } , $emit : function ( a , b ) { var c = [ ] , d , f = this , h = ! 1 , g = { name : a , targetScope : f , stopPropagation : function ( ) { h = ! 0 } , preventDefault : function ( ) { g . defaultPrevented = ! 0 } , defaultPrevented : ! 1 } , k = [ g ] . concat ( va . call ( arguments , 1 ) ) , l , m ; do { d = f . $$listeners [ a ] || c ; g . currentScope = f ; l = 0 ; for ( m = d . length ; l < m ; l ++ ) if ( d [ l ] ) try { d [ l ] . apply ( null , k ) } catch ( n ) { e ( n ) } else d . splice ( l , 1 ) , l -- , m -- ; if ( h ) break ; f = f . $parent } while ( f ) ;
return g } , $broadcast : function ( a , b ) { for ( var c = this , d = this , f = { name : a , targetScope : this , preventDefault : function ( ) { f . defaultPrevented = ! 0 } , defaultPrevented : ! 1 } , h = [ f ] . concat ( va . call ( arguments , 1 ) ) , g , k ; c = d ; ) { f . currentScope = c ; d = c . $$listeners [ a ] || [ ] ; g = 0 ; for ( k = d . length ; g < k ; g ++ ) if ( d [ g ] ) try { d [ g ] . apply ( null , h ) } catch ( l ) { e ( l ) } else d . splice ( g , 1 ) , g -- , k -- ; if ( ! ( d = c . $$listenerCount [ a ] && c . $$childHead || c !== this && c . $$nextSibling ) ) for ( ; c !== this && ! ( d = c . $$nextSibling ) ; ) c = c . $parent } return f } } ; var q = new h ; return q } ] } function $c ( ) { var b =
/^\s*(https?|ftp|mailto|tel|file):/ , a = /^\s*(https?|ftp|file):|data:image\// ; this . aHrefSanitizationWhitelist = function ( a ) { return u ( a ) ? ( b = a , this ) : b } ; this . imgSrcSanitizationWhitelist = function ( b ) { return u ( b ) ? ( a = b , this ) : a } ; this . $get = function ( ) { return function ( c , d ) { var e = d ? a : b , f ; if ( ! P || 8 <= P ) if ( f = pa ( c ) . href , "" !== f && ! f . match ( e ) ) return "unsafe:" + f ; return c } } } function we ( b ) { if ( "self" === b ) return b ; if ( x ( b ) ) { if ( - 1 < b . indexOf ( "***" ) ) throw ra ( "iwcard" , b ) ; b = b . replace ( /([-()\[\]{}+?*.$\^|,:#<!\\])/g , "\\$1" ) . replace ( /\x08/g ,
"\\x08" ) . replace ( "\\*\\*" , ".*" ) . replace ( "\\*" , "[^:/.?&;]*" ) ; return RegExp ( "^" + b + "$" ) } if ( bb ( b ) ) return RegExp ( "^" + b . source + "$" ) ; throw ra ( "imatcher" ) ; } function Ec ( b ) { var a = [ ] ; u ( b ) && r ( b , function ( b ) { a . push ( we ( b ) ) } ) ; return a } function Zd ( ) { this . SCE _CONTEXTS = ea ; var b = [ "self" ] , a = [ ] ; this . resourceUrlWhitelist = function ( a ) { arguments . length && ( b = Ec ( a ) ) ; return b } ; this . resourceUrlBlacklist = function ( b ) { arguments . length && ( a = Ec ( b ) ) ; return a } ; this . $get = [ "$injector" , function ( c ) { function d ( a ) { var b = function ( a ) { this . $$unwrapTrustedValue =
function ( ) { return a } } ; a && ( b . prototype = new a ) ; b . prototype . valueOf = function ( ) { return this . $$unwrapTrustedValue ( ) } ; b . prototype . toString = function ( ) { return this . $$unwrapTrustedValue ( ) . toString ( ) } ; return b } var e = function ( a ) { throw ra ( "unsafe" ) ; } ; c . has ( "$sanitize" ) && ( e = c . get ( "$sanitize" ) ) ; var f = d ( ) , g = { } ; g [ ea . HTML ] = d ( f ) ; g [ ea . CSS ] = d ( f ) ; g [ ea . URL ] = d ( f ) ; g [ ea . JS ] = d ( f ) ; g [ ea . RESOURCE _URL ] = d ( g [ ea . URL ] ) ; return { trustAs : function ( a , b ) { var c = g . hasOwnProperty ( a ) ? g [ a ] : null ; if ( ! c ) throw ra ( "icontext" , a , b ) ; if ( null === b || b ===
s || "" === b ) return b ; if ( "string" !== typeof b ) throw ra ( "itype" , a ) ; return new c ( b ) } , getTrusted : function ( c , d ) { if ( null === d || d === s || "" === d ) return d ; var f = g . hasOwnProperty ( c ) ? g [ c ] : null ; if ( f && d instanceof f ) return d . $$unwrapTrustedValue ( ) ; if ( c === ea . RESOURCE _URL ) { var f = pa ( d . toString ( ) ) , l , n , q = ! 1 ; l = 0 ; for ( n = b . length ; l < n ; l ++ ) if ( "self" === b [ l ] ? Gb ( f ) : b [ l ] . exec ( f . href ) ) { q = ! 0 ; break } if ( q ) for ( l = 0 , n = a . length ; l < n ; l ++ ) if ( "self" === a [ l ] ? Gb ( f ) : a [ l ] . exec ( f . href ) ) { q = ! 1 ; break } if ( q ) return d ; throw ra ( "insecurl" , d . toString ( ) ) ; } if ( c ===
ea . HTML ) return e ( d ) ; throw ra ( "unsafe" ) ; } , valueOf : function ( a ) { return a instanceof f ? a . $$unwrapTrustedValue ( ) : a } } } ] } function Yd ( ) { var b = ! 0 ; this . enabled = function ( a ) { arguments . length && ( b = ! ! a ) ; return b } ; this . $get = [ "$parse" , "$sniffer" , "$sceDelegate" , function ( a , c , d ) { if ( b && c . msie && 8 > c . msieDocumentMode ) throw ra ( "iequirks" ) ; var e = $ ( ea ) ; e . isEnabled = function ( ) { return b } ; e . trustAs = d . trustAs ; e . getTrusted = d . getTrusted ; e . valueOf = d . valueOf ; b || ( e . trustAs = e . getTrusted = function ( a , b ) { return b } , e . valueOf = Ba ) ; e . parseAs =
function ( b , c ) { var d = a ( c ) ; return d . literal && d . constant ? d : function ( a , c ) { return e . getTrusted ( b , d ( a , c ) ) } } ; var f = e . parseAs , g = e . getTrusted , h = e . trustAs ; r ( ea , function ( a , b ) { var c = O ( b ) ; e [ Sa ( "parse_as_" + c ) ] = function ( b ) { return f ( a , b ) } ; e [ Sa ( "get_trusted_" + c ) ] = function ( b ) { return g ( a , b ) } ; e [ Sa ( "trust_as_" + c ) ] = function ( b ) { return h ( a , b ) } } ) ; return e } ] } function $d ( ) { this . $get = [ "$window" , "$document" , function ( b , a ) { var c = { } , d = R ( ( /android (\d+)/ . exec ( O ( ( b . navigator || { } ) . userAgent ) ) || [ ] ) [ 1 ] ) , e = /Boxee/i . test ( ( b . navigator ||
{ } ) . userAgent ) , f = a [ 0 ] || { } , g = f . documentMode , h , m = /^(Moz|webkit|O|ms)(?=[A-Z])/ , k = f . body && f . body . style , l = ! 1 , n = ! 1 ; if ( k ) { for ( var q in k ) if ( l = m . exec ( q ) ) { h = l [ 0 ] ; h = h . substr ( 0 , 1 ) . toUpperCase ( ) + h . substr ( 1 ) ; break } h || ( h = "WebkitOpacity" in k && "webkit" ) ; l = ! ! ( "transition" in k || h + "Transition" in k ) ; n = ! ! ( "animation" in k || h + "Animation" in k ) ; ! d || l && n || ( l = x ( f . body . style . webkitTransition ) , n = x ( f . body . style . webkitAnimation ) ) } return { history : ! ( ! b . history || ! b . history . pushState || 4 > d || e ) , hashchange : "onhashchange" in b && ( ! g || 7 <
g ) , hasEvent : function ( a ) { if ( "input" == a && 9 == P ) return ! 1 ; if ( E ( c [ a ] ) ) { var b = f . createElement ( "div" ) ; c [ a ] = "on" + a in b } return c [ a ] } , csp : Tb ( ) , vendorPrefix : h , transitions : l , animations : n , android : d , msie : P , msieDocumentMode : g } } ] } function be ( ) { this . $get = [ "$rootScope" , "$browser" , "$q" , "$exceptionHandler" , function ( b , a , c , d ) { function e ( e , h , m ) { var k = c . defer ( ) , l = k . promise , n = u ( m ) && ! m ; h = a . defer ( function ( ) { try { k . resolve ( e ( ) ) } catch ( a ) { k . reject ( a ) , d ( a ) } finally { delete f [ l . $$timeoutId ] } n || b . $apply ( ) } , h ) ; l . $$timeoutId = h ; f [ h ] = k ;
return l } var f = { } ; e . cancel = function ( b ) { return b && b . $$timeoutId in f ? ( f [ b . $$timeoutId ] . reject ( "canceled" ) , delete f [ b . $$timeoutId ] , a . defer . cancel ( b . $$timeoutId ) ) : ! 1 } ; return e } ] } function pa ( b , a ) { var c = b ; P && ( V . setAttribute ( "href" , c ) , c = V . href ) ; V . setAttribute ( "href" , c ) ; return { href : V . href , protocol : V . protocol ? V . protocol . replace ( /:$/ , "" ) : "" , host : V . host , search : V . search ? V . search . replace ( /^\?/ , "" ) : "" , hash : V . hash ? V . hash . replace ( /^#/ , "" ) : "" , hostname : V . hostname , port : V . port , pathname : "/" === V . pathname . charAt ( 0 ) ? V . pathname :
"/" + V . pathname } } function Gb ( b ) { b = x ( b ) ? pa ( b ) : b ; return b . protocol === Fc . protocol && b . host === Fc . host } function ce ( ) { this . $get = Y ( Q ) } function ec ( b ) { function a ( d , e ) { if ( W ( d ) ) { var f = { } ; r ( d , function ( b , c ) { f [ c ] = a ( c , b ) } ) ; return f } return b . factory ( d + c , e ) } var c = "Filter" ; this . register = a ; this . $get = [ "$injector" , function ( a ) { return function ( b ) { return a . get ( b + c ) } } ] ; a ( "currency" , Gc ) ; a ( "date" , Hc ) ; a ( "filter" , xe ) ; a ( "json" , ye ) ; a ( "limitTo" , ze ) ; a ( "lowercase" , Ae ) ; a ( "number" , Ic ) ; a ( "orderBy" , Jc ) ; a ( "uppercase" , Be ) } function xe ( ) { return function ( b ,
a , c ) { if ( ! M ( b ) ) return b ; var d = typeof c , e = [ ] ; e . check = function ( a ) { for ( var b = 0 ; b < e . length ; b ++ ) if ( ! e [ b ] ( a ) ) return ! 1 ; return ! 0 } ; "function" !== d && ( c = "boolean" === d && c ? function ( a , b ) { return Ca . equals ( a , b ) } : function ( a , b ) { if ( a && b && "object" === typeof a && "object" === typeof b ) { for ( var d in a ) if ( "$" !== d . charAt ( 0 ) && Dc . call ( a , d ) && c ( a [ d ] , b [ d ] ) ) return ! 0 ; return ! 1 } b = ( "" + b ) . toLowerCase ( ) ; return - 1 < ( "" + a ) . toLowerCase ( ) . indexOf ( b ) } ) ; var f = function ( a , b ) { if ( "string" == typeof b && "!" === b . charAt ( 0 ) ) return ! f ( a , b . substr ( 1 ) ) ; switch ( typeof a ) { case "boolean" : case "number" : case "string" : return c ( a ,
b ) ; case "object" : switch ( typeof b ) { case "object" : return c ( a , b ) ; default : for ( var d in a ) if ( "$" !== d . charAt ( 0 ) && f ( a [ d ] , b ) ) return ! 0 } return ! 1 ; case "array" : for ( d = 0 ; d < a . length ; d ++ ) if ( f ( a [ d ] , b ) ) return ! 0 ; return ! 1 ; default : return ! 1 } } ; switch ( typeof a ) { case "boolean" : case "number" : case "string" : a = { $ : a } ; case "object" : for ( var g in a ) ( function ( b ) { "undefined" != typeof a [ b ] && e . push ( function ( c ) { return f ( "$" == b ? c : c && c [ b ] , a [ b ] ) } ) } ) ( g ) ; break ; case "function" : e . push ( a ) ; break ; default : return b } d = [ ] ; for ( g = 0 ; g < b . length ; g ++ ) { var h =
b [ g ] ; e . check ( h ) && d . push ( h ) } return d } } function Gc ( b ) { var a = b . NUMBER _FORMATS ; return function ( b , d ) { E ( d ) && ( d = a . CURRENCY _SYM ) ; return Kc ( b , a . PATTERNS [ 1 ] , a . GROUP _SEP , a . DECIMAL _SEP , 2 ) . replace ( /\u00A4/g , d ) } } function Ic ( b ) { var a = b . NUMBER _FORMATS ; return function ( b , d ) { return Kc ( b , a . PATTERNS [ 0 ] , a . GROUP _SEP , a . DECIMAL _SEP , d ) } } function Kc ( b , a , c , d , e ) { if ( null == b || ! isFinite ( b ) || W ( b ) ) return "" ; var f = 0 > b ; b = Math . abs ( b ) ; var g = b + "" , h = "" , m = [ ] , k = ! 1 ; if ( - 1 !== g . indexOf ( "e" ) ) { var l = g . match ( /([\d\.]+)e(-?)(\d+)/ ) ; l && "-" == l [ 2 ] &&
l [ 3 ] > e + 1 ? g = "0" : ( h = g , k = ! 0 ) } if ( k ) 0 < e && ( - 1 < b && 1 > b ) && ( h = b . toFixed ( e ) ) ; else { g = ( g . split ( Lc ) [ 1 ] || "" ) . length ; E ( e ) && ( e = Math . min ( Math . max ( a . minFrac , g ) , a . maxFrac ) ) ; g = Math . pow ( 10 , e ) ; b = Math . round ( b * g ) / g ; b = ( "" + b ) . split ( Lc ) ; g = b [ 0 ] ; b = b [ 1 ] || "" ; var l = 0 , n = a . lgSize , q = a . gSize ; if ( g . length >= n + q ) for ( l = g . length - n , k = 0 ; k < l ; k ++ ) 0 === ( l - k ) % q && 0 !== k && ( h += c ) , h += g . charAt ( k ) ; for ( k = l ; k < g . length ; k ++ ) 0 === ( g . length - k ) % n && 0 !== k && ( h += c ) , h += g . charAt ( k ) ; for ( ; b . length < e ; ) b += "0" ; e && "0" !== e && ( h += d + b . substr ( 0 , e ) ) } m . push ( f ? a . negPre : a . posPre ) ;
m . push ( h ) ; m . push ( f ? a . negSuf : a . posSuf ) ; return m . join ( "" ) } function Mb ( b , a , c ) { var d = "" ; 0 > b && ( d = "-" , b = - b ) ; for ( b = "" + b ; b . length < a ; ) b = "0" + b ; c && ( b = b . substr ( b . length - a ) ) ; return d + b } function X ( b , a , c , d ) { c = c || 0 ; return function ( e ) { e = e [ "get" + b ] ( ) ; if ( 0 < c || e > - c ) e += c ; 0 === e && - 12 == c && ( e = 12 ) ; return Mb ( e , a , d ) } } function ob ( b , a ) { return function ( c , d ) { var e = c [ "get" + b ] ( ) , f = Da ( a ? "SHORT" + b : b ) ; return d [ f ] [ e ] } } function Hc ( b ) { function a ( a ) { var b ; if ( b = a . match ( c ) ) { a = new Date ( 0 ) ; var f = 0 , g = 0 , h = b [ 8 ] ? a . setUTCFullYear : a . setFullYear , m =
b [ 8 ] ? a . setUTCHours : a . setHours ; b [ 9 ] && ( f = R ( b [ 9 ] + b [ 10 ] ) , g = R ( b [ 9 ] + b [ 11 ] ) ) ; h . call ( a , R ( b [ 1 ] ) , R ( b [ 2 ] ) - 1 , R ( b [ 3 ] ) ) ; f = R ( b [ 4 ] || 0 ) - f ; g = R ( b [ 5 ] || 0 ) - g ; h = R ( b [ 6 ] || 0 ) ; b = Math . round ( 1E3 * parseFloat ( "0." + ( b [ 7 ] || 0 ) ) ) ; m . call ( a , f , g , h , b ) } return a } var c = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/ ; return function ( c , e ) { var f = "" , g = [ ] , h , m ; e = e || "mediumDate" ; e = b . DATETIME _FORMATS [ e ] || e ; x ( c ) && ( c = Ce . test ( c ) ? R ( c ) : a ( c ) ) ; ub ( c ) && ( c = new Date ( c ) ) ; if ( ! Ma ( c ) ) return c ; for ( ; e ; ) ( m = De . exec ( e ) ) ?
( g = g . concat ( va . call ( m , 1 ) ) , e = g . pop ( ) ) : ( g . push ( e ) , e = null ) ; r ( g , function ( a ) { h = Ee [ a ] ; f += h ? h ( c , b . DATETIME _FORMATS ) : a . replace ( /(^'|'$)/g , "" ) . replace ( /''/g , "'" ) } ) ; return f } } function ye ( ) { return function ( b ) { return oa ( b , ! 0 ) } } function ze ( ) { return function ( b , a ) { if ( ! M ( b ) && ! x ( b ) ) return b ; a = R ( a ) ; if ( x ( b ) ) return a ? 0 <= a ? b . slice ( 0 , a ) : b . slice ( a , b . length ) : "" ; var c = [ ] , d , e ; a > b . length ? a = b . length : a < - b . length && ( a = - b . length ) ; 0 < a ? ( d = 0 , e = a ) : ( d = b . length + a , e = b . length ) ; for ( ; d < e ; d ++ ) c . push ( b [ d ] ) ; return c } } function Jc ( b ) { return function ( a ,
c , d ) { function e ( a , b ) { return Pa ( b ) ? function ( b , c ) { return a ( c , b ) } : a } function f ( a , b ) { var c = typeof a , d = typeof b ; return c == d ? ( "string" == c && ( a = a . toLowerCase ( ) , b = b . toLowerCase ( ) ) , a === b ? 0 : a < b ? - 1 : 1 ) : c < d ? - 1 : 1 } if ( ! M ( a ) || ! c ) return a ; c = M ( c ) ? c : [ c ] ; c = Sc ( c , function ( a ) { var c = ! 1 , d = a || Ba ; if ( x ( a ) ) { if ( "+" == a . charAt ( 0 ) || "-" == a . charAt ( 0 ) ) c = "-" == a . charAt ( 0 ) , a = a . substring ( 1 ) ; d = b ( a ) ; if ( d . constant ) { var h = d ( ) ; return e ( function ( a , b ) { return f ( a [ h ] , b [ h ] ) } , c ) } } return e ( function ( a , b ) { return f ( d ( a ) , d ( b ) ) } , c ) } ) ; for ( var g = [ ] , h = 0 ; h < a . length ; h ++ ) g . push ( a [ h ] ) ;
return g . sort ( e ( function ( a , b ) { for ( var d = 0 ; d < c . length ; d ++ ) { var e = c [ d ] ( a , b ) ; if ( 0 !== e ) return e } return 0 } , d ) ) } } function sa ( b ) { D ( b ) && ( b = { link : b } ) ; b . restrict = b . restrict || "AC" ; return Y ( b ) } function Mc ( b , a , c , d ) { function e ( a , c ) { c = c ? "-" + eb ( c , "-" ) : "" ; d . removeClass ( b , ( a ? pb : qb ) + c ) ; d . addClass ( b , ( a ? qb : pb ) + c ) } var f = this , g = b . parent ( ) . controller ( "form" ) || rb , h = 0 , m = f . $error = { } , k = [ ] ; f . $name = a . name || a . ngForm ; f . $dirty = ! 1 ; f . $pristine = ! 0 ; f . $valid = ! 0 ; f . $invalid = ! 1 ; g . $addControl ( f ) ; b . addClass ( Ka ) ; e ( ! 0 ) ; f . $addControl = function ( a ) { xa ( a . $name ,
"input" ) ; k . push ( a ) ; a . $name && ( f [ a . $name ] = a ) } ; f . $removeControl = function ( a ) { a . $name && f [ a . $name ] === a && delete f [ a . $name ] ; r ( m , function ( b , c ) { f . $setValidity ( c , ! 0 , a ) } ) ; Na ( k , a ) } ; f . $setValidity = function ( a , b , c ) { var d = m [ a ] ; if ( b ) d && ( Na ( d , c ) , d . length || ( h -- , h || ( e ( b ) , f . $valid = ! 0 , f . $invalid = ! 1 ) , m [ a ] = ! 1 , e ( ! 0 , a ) , g . $setValidity ( a , ! 0 , f ) ) ) ; else { h || e ( b ) ; if ( d ) { if ( - 1 != cb ( d , c ) ) return } else m [ a ] = d = [ ] , h ++ , e ( ! 1 , a ) , g . $setValidity ( a , ! 1 , f ) ; d . push ( c ) ; f . $valid = ! 1 ; f . $invalid = ! 0 } } ; f . $setDirty = function ( ) { d . removeClass ( b , Ka ) ; d . addClass ( b ,
sb ) ; f . $dirty = ! 0 ; f . $pristine = ! 1 ; g . $setDirty ( ) } ; f . $setPristine = function ( ) { d . removeClass ( b , sb ) ; d . addClass ( b , Ka ) ; f . $dirty = ! 1 ; f . $pristine = ! 0 ; r ( k , function ( a ) { a . $setPristine ( ) } ) } } function na ( b , a , c , d ) { b . $setValidity ( a , c ) ; return c ? d : s } function Fe ( b , a , c ) { var d = c . prop ( "validity" ) ; W ( d ) && b . $parsers . push ( function ( c ) { if ( b . $error [ a ] || ! ( d . badInput || d . customError || d . typeMismatch ) || d . valueMissing ) return c ; b . $setValidity ( a , ! 1 ) } ) } function tb ( b , a , c , d , e , f ) { var g = a . prop ( "validity" ) ; if ( ! e . android ) { var h = ! 1 ; a . on ( "compositionstart" ,
function ( a ) { h = ! 0 } ) ; a . on ( "compositionend" , function ( ) { h = ! 1 ; m ( ) } ) } var m = function ( ) { if ( ! h ) { var e = a . val ( ) ; Pa ( c . ngTrim || "T" ) && ( e = aa ( e ) ) ; if ( d . $viewValue !== e || g && "" === e && ! g . valueMissing ) b . $$phase ? d . $setViewValue ( e ) : b . $apply ( function ( ) { d . $setViewValue ( e ) } ) } } ; if ( e . hasEvent ( "input" ) ) a . on ( "input" , m ) ; else { var k , l = function ( ) { k || ( k = f . defer ( function ( ) { m ( ) ; k = null } ) ) } ; a . on ( "keydown" , function ( a ) { a = a . keyCode ; 91 === a || ( 15 < a && 19 > a || 37 <= a && 40 >= a ) || l ( ) } ) ; if ( e . hasEvent ( "paste" ) ) a . on ( "paste cut" , l ) } a . on ( "change" , m ) ; d . $render =
function ( ) { a . val ( d . $isEmpty ( d . $viewValue ) ? "" : d . $viewValue ) } ; var n = c . ngPattern ; n && ( ( e = n . match ( /^\/(.*)\/([gim]*)$/ ) ) ? ( n = RegExp ( e [ 1 ] , e [ 2 ] ) , e = function ( a ) { return na ( d , "pattern" , d . $isEmpty ( a ) || n . test ( a ) , a ) } ) : e = function ( c ) { var e = b . $eval ( n ) ; if ( ! e || ! e . test ) throw z ( "ngPattern" ) ( "noregexp" , n , e , fa ( a ) ) ; return na ( d , "pattern" , d . $isEmpty ( c ) || e . test ( c ) , c ) } , d . $formatters . push ( e ) , d . $parsers . push ( e ) ) ; if ( c . ngMinlength ) { var q = R ( c . ngMinlength ) ; e = function ( a ) { return na ( d , "minlength" , d . $isEmpty ( a ) || a . length >= q , a ) } ; d . $parsers . push ( e ) ;
d . $formatters . push ( e ) } if ( c . ngMaxlength ) { var p = R ( c . ngMaxlength ) ; e = function ( a ) { return na ( d , "maxlength" , d . $isEmpty ( a ) || a . length <= p , a ) } ; d . $parsers . push ( e ) ; d . $formatters . push ( e ) } } function Nb ( b , a ) { b = "ngClass" + b ; return function ( ) { return { restrict : "AC" , link : function ( c , d , e ) { function f ( b ) { if ( ! 0 === a || c . $index % 2 === a ) { var d = g ( b || "" ) ; h ? ua ( b , h ) || e . $updateClass ( d , g ( h ) ) : e . $addClass ( d ) } h = $ ( b ) } function g ( a ) { if ( M ( a ) ) return a . join ( " " ) ; if ( W ( a ) ) { var b = [ ] ; r ( a , function ( a , c ) { a && b . push ( c ) } ) ; return b . join ( " " ) } return a } var h ;
c . $watch ( e [ b ] , f , ! 0 ) ; e . $observe ( "class" , function ( a ) { f ( c . $eval ( e [ b ] ) ) } ) ; "ngClass" !== b && c . $watch ( "$index" , function ( d , f ) { var h = d & 1 ; if ( h !== f & 1 ) { var n = g ( c . $eval ( e [ b ] ) ) ; h === a ? e . $addClass ( n ) : e . $removeClass ( n ) } } ) } } } } var O = function ( b ) { return x ( b ) ? b . toLowerCase ( ) : b } , Dc = Object . prototype . hasOwnProperty , Da = function ( b ) { return x ( b ) ? b . toUpperCase ( ) : b } , P , w , Ea , va = [ ] . slice , Ge = [ ] . push , ta = Object . prototype . toString , Oa = z ( "ng" ) , Ca = Q . angular || ( Q . angular = { } ) , Ra , Ia , ia = [ "0" , "0" , "0" ] ; P = R ( ( /msie (\d+)/ . exec ( O ( navigator . userAgent ) ) ||
[ ] ) [ 1 ] ) ; isNaN ( P ) && ( P = R ( ( /trident\/.*; rv:(\d+)/ . exec ( O ( navigator . userAgent ) ) || [ ] ) [ 1 ] ) ) ; B . $inject = [ ] ; Ba . $inject = [ ] ; var aa = function ( ) { return String . prototype . trim ? function ( b ) { return x ( b ) ? b . trim ( ) : b } : function ( b ) { return x ( b ) ? b . replace ( /^\s\s*/ , "" ) . replace ( /\s\s*$/ , "" ) : b } } ( ) ; Ia = 9 > P ? function ( b ) { b = b . nodeName ? b : b [ 0 ] ; return b . scopeName && "HTML" != b . scopeName ? Da ( b . scopeName + ":" + b . nodeName ) : b . nodeName } : function ( b ) { return b . nodeName ? b . nodeName : b [ 0 ] . nodeName } ; var Vc = /[A-Z]/g , Yc = { full : "1.2.16-build.29+sha.a275d53" ,
major : 1 , minor : 2 , dot : 16 , codeName : "snapshot" } , Ta = L . cache = { } , fb = L . expando = "ng-" + ( new Date ) . getTime ( ) , he = 1 , Nc = Q . document . addEventListener ? function ( b , a , c ) { b . addEventListener ( a , c , ! 1 ) } : function ( b , a , c ) { b . attachEvent ( "on" + a , c ) } , Db = Q . document . removeEventListener ? function ( b , a , c ) { b . removeEventListener ( a , c , ! 1 ) } : function ( b , a , c ) { b . detachEvent ( "on" + a , c ) } ; L . _data = function ( b ) { return this . cache [ b [ this . expando ] ] || { } } ; var fe = /([\:\-\_]+(.))/g , ge = /^moz([A-Z])/ , Ab = z ( "jqLite" ) , Ha = L . prototype = { ready : function ( b ) { function a ( ) { c ||
( c = ! 0 , b ( ) ) } var c = ! 1 ; "complete" === T . readyState ? setTimeout ( a ) : ( this . on ( "DOMContentLoaded" , a ) , L ( Q ) . on ( "load" , a ) ) } , toString : function ( ) { var b = [ ] ; r ( this , function ( a ) { b . push ( "" + a ) } ) ; return "[" + b . join ( ", " ) + "]" } , eq : function ( b ) { return 0 <= b ? w ( this [ b ] ) : w ( this [ this . length + b ] ) } , length : 0 , push : Ge , sort : [ ] . sort , splice : [ ] . splice } , jb = { } ; r ( "multiple selected checked disabled readOnly required open" . split ( " " ) , function ( b ) { jb [ O ( b ) ] = b } ) ; var lc = { } ; r ( "input select option textarea button form details" . split ( " " ) , function ( b ) { lc [ Da ( b ) ] =
! 0 } ) ; r ( { data : hc , inheritedData : ib , scope : function ( b ) { return w ( b ) . data ( "$scope" ) || ib ( b . parentNode || b , [ "$isolateScope" , "$scope" ] ) } , isolateScope : function ( b ) { return w ( b ) . data ( "$isolateScope" ) || w ( b ) . data ( "$isolateScopeNoTemplate" ) } , controller : ic , injector : function ( b ) { return ib ( b , "$injector" ) } , removeAttr : function ( b , a ) { b . removeAttribute ( a ) } , hasClass : Eb , css : function ( b , a , c ) { a = Sa ( a ) ; if ( u ( c ) ) b . style [ a ] = c ; else { var d ; 8 >= P && ( d = b . currentStyle && b . currentStyle [ a ] , "" === d && ( d = "auto" ) ) ; d = d || b . style [ a ] ; 8 >= P && ( d = "" === d ? s :
d ) ; return d } } , attr : function ( b , a , c ) { var d = O ( a ) ; if ( jb [ 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 ) || B ) . specified ? d : s ; else if ( u ( c ) ) b . setAttribute ( a , c ) ; else if ( b . getAttribute ) return b = b . getAttribute ( a , 2 ) , null === b ? s : b } , prop : function ( b , a , c ) { if ( u ( c ) ) b [ a ] = c ; else return b [ a ] } , text : function ( ) { function b ( b , d ) { var e = a [ b . nodeType ] ; if ( E ( d ) ) return e ? b [ e ] : "" ; b [ e ] = d } var a = [ ] ; 9 > P ? ( a [ 1 ] = "innerText" , a [ 3 ] = "nodeValue" ) : a [ 1 ] = a [ 3 ] = "textContent" ;
b . $dv = "" ; return b } ( ) , val : function ( b , a ) { if ( E ( a ) ) { if ( "SELECT" === Ia ( b ) && b . multiple ) { var c = [ ] ; r ( b . options , function ( a ) { a . selected && c . push ( a . value || a . text ) } ) ; return 0 === c . length ? null : c } return b . value } b . value = a } , html : function ( b , a ) { if ( E ( a ) ) return b . innerHTML ; for ( var c = 0 , d = b . childNodes ; c < d . length ; c ++ ) Fa ( d [ c ] ) ; b . innerHTML = a } , empty : jc } , function ( b , a ) { L . prototype [ a ] = function ( a , d ) { var e , f ; if ( b !== jc && ( 2 == b . length && b !== Eb && b !== ic ? a : d ) === s ) { if ( W ( a ) ) { for ( e = 0 ; e < this . length ; e ++ ) if ( b === hc ) b ( this [ e ] , a ) ; else for ( f in a ) b ( this [ e ] ,
f , a [ f ] ) ; return this } e = b . $dv ; f = e === s ? Math . min ( this . length , 1 ) : this . length ; for ( var g = 0 ; g < f ; g ++ ) { var h = b ( this [ g ] , a , d ) ; e = e ? e + h : h } return e } for ( e = 0 ; e < this . length ; e ++ ) b ( this [ e ] , a , d ) ; return this } } ) ; r ( { removeData : fc , dealoc : Fa , on : function a ( c , d , e , f ) { if ( u ( f ) ) throw Ab ( "onargs" ) ; var g = ja ( c , "events" ) , h = ja ( c , "handle" ) ; g || ja ( c , "events" , g = { } ) ; h || ja ( c , "handle" , h = ie ( c , g ) ) ; r ( d . split ( " " ) , function ( d ) { var f = g [ d ] ; if ( ! f ) { if ( "mouseenter" == d || "mouseleave" == d ) { var l = T . body . contains || T . body . compareDocumentPosition ? function ( a ,
c ) { var d = 9 === a . nodeType ? a . documentElement : a , e = c && c . parentNode ; return a === e || ! ! ( e && 1 === e . nodeType && ( d . contains ? d . contains ( e ) : a . compareDocumentPosition && a . compareDocumentPosition ( e ) & 16 ) ) } : function ( a , c ) { if ( c ) for ( ; c = c . parentNode ; ) if ( c === a ) return ! 0 ; return ! 1 } ; g [ d ] = [ ] ; a ( c , { mouseleave : "mouseout" , mouseenter : "mouseover" } [ d ] , function ( a ) { var c = a . relatedTarget ; c && ( c === this || l ( this , c ) ) || h ( a , d ) } ) } else Nc ( c , d , h ) , g [ d ] = [ ] ; f = g [ d ] } f . push ( e ) } ) } , off : gc , one : function ( a , c , d ) { a = w ( a ) ; a . on ( c , function f ( ) { a . off ( c , d ) ; a . off ( c ,
f ) } ) ; a . on ( c , d ) } , replaceWith : function ( a , c ) { var d , e = a . parentNode ; Fa ( a ) ; r ( new L ( c ) , function ( c ) { d ? e . insertBefore ( c , d . nextSibling ) : e . replaceChild ( c , a ) ; d = c } ) } , children : function ( a ) { var c = [ ] ; r ( a . childNodes , function ( a ) { 1 === a . nodeType && c . push ( a ) } ) ; return c } , contents : function ( a ) { return a . contentDocument || a . childNodes || [ ] } , append : function ( a , c ) { r ( new L ( c ) , function ( c ) { 1 !== a . nodeType && 11 !== a . nodeType || a . appendChild ( c ) } ) } , prepend : function ( a , c ) { if ( 1 === a . nodeType ) { var d = a . firstChild ; r ( new L ( c ) , function ( c ) { a . insertBefore ( c ,
d ) } ) } } , wrap : function ( a , c ) { c = w ( c ) [ 0 ] ; var d = a . parentNode ; d && d . replaceChild ( c , a ) ; c . appendChild ( a ) } , remove : function ( a ) { Fa ( a ) ; var c = a . parentNode ; c && c . removeChild ( a ) } , after : function ( a , c ) { var d = a , e = a . parentNode ; r ( new L ( c ) , function ( a ) { e . insertBefore ( a , d . nextSibling ) ; d = a } ) } , addClass : hb , removeClass : gb , toggleClass : function ( a , c , d ) { c && r ( c . split ( " " ) , function ( c ) { var f = d ; E ( f ) && ( f = ! Eb ( a , c ) ) ; ( f ? hb : gb ) ( a , c ) } ) } , parent : function ( a ) { return ( a = a . parentNode ) && 11 !== a . nodeType ? a : null } , next : function ( a ) { if ( a . nextElementSibling ) return a . nextElementSibling ;
for ( a = a . nextSibling ; null != a && 1 !== a . nodeType ; ) a = a . nextSibling ; return a } , find : function ( a , c ) { return a . getElementsByTagName ? a . getElementsByTagName ( c ) : [ ] } , clone : Cb , triggerHandler : function ( a , c , d ) { c = ( ja ( a , "events" ) || { } ) [ c ] ; d = d || [ ] ; var e = [ { preventDefault : B , stopPropagation : B } ] ; r ( c , function ( c ) { c . apply ( a , e . concat ( d ) ) } ) } } , function ( a , c ) { L . prototype [ c ] = function ( c , e , f ) { for ( var g , h = 0 ; h < this . length ; h ++ ) E ( g ) ? ( g = a ( this [ h ] , c , e , f ) , u ( g ) && ( g = w ( g ) ) ) : Bb ( g , a ( this [ h ] , c , e , f ) ) ; return u ( g ) ? g : this } ; L . prototype . bind = L . prototype . on ;
L . prototype . unbind = L . prototype . off } ) ; Ua . prototype = { put : function ( a , c ) { this [ Ga ( a ) ] = c } , get : function ( a ) { return this [ Ga ( a ) ] } , remove : function ( a ) { var c = this [ a = Ga ( a ) ] ; delete this [ a ] ; return c } } ; var ke = /^function\s*[^\(]*\(\s*([^\)]*)\)/m , le = /,/ , me = /^\s*(_?)(\S+?)\1\s*$/ , je = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg , Va = z ( "$injector" ) , He = z ( "$animate" ) , Jd = [ "$provide" , function ( a ) { this . $$selectors = { } ; this . register = function ( c , d ) { var e = c + "-animation" ; if ( c && "." != c . charAt ( 0 ) ) throw He ( "notcsel" , c ) ; this . $$selectors [ c . substr ( 1 ) ] =
e ; a . factory ( e , d ) } ; this . classNameFilter = function ( a ) { 1 === arguments . length && ( this . $$classNameFilter = a instanceof RegExp ? a : null ) ; return this . $$classNameFilter } ; this . $get = [ "$timeout" , "$$asyncCallback" , function ( a , d ) { return { enter : function ( a , c , g , h ) { g ? g . after ( a ) : ( c && c [ 0 ] || ( c = g . parent ( ) ) , c . append ( a ) ) ; h && d ( h ) } , leave : function ( a , c ) { a . remove ( ) ; c && d ( c ) } , move : function ( a , c , d , h ) { this . enter ( a , c , d , h ) } , addClass : function ( a , c , g ) { c = x ( c ) ? c : M ( c ) ? c . join ( " " ) : "" ; r ( a , function ( a ) { hb ( a , c ) } ) ; g && d ( g ) } , removeClass : function ( a , c , g ) { c =
x ( c ) ? c : M ( c ) ? c . join ( " " ) : "" ; r ( a , function ( a ) { gb ( a , c ) } ) ; g && d ( g ) } , setClass : function ( a , c , g , h ) { r ( a , function ( a ) { hb ( a , c ) ; gb ( a , g ) } ) ; h && d ( h ) } , enabled : B } } ] } ] , ha = z ( "$compile" ) ; ac . $inject = [ "$provide" , "$$sanitizeUriProvider" ] ; var pe = /^(x[\:\-_]|data[\:\-_])/i , tc = z ( "$interpolate" ) , Ie = /^([^\?#]*)(\?([^#]*))?(#(.*))?$/ , se = { http : 80 , https : 443 , ftp : 21 } , Ib = z ( "$location" ) ; yc . prototype = Jb . prototype = xc . prototype = { $$html5 : ! 1 , $$replace : ! 1 , absUrl : mb ( "$$absUrl" ) , url : function ( a , c ) { if ( E ( a ) ) return this . $$url ; var d = Ie . exec ( a ) ; d [ 1 ] &&
this . path ( decodeURIComponent ( d [ 1 ] ) ) ; ( d [ 2 ] || d [ 1 ] ) && this . search ( d [ 3 ] || "" ) ; this . hash ( d [ 5 ] || "" , c ) ; return this } , protocol : mb ( "$$protocol" ) , host : mb ( "$$host" ) , port : mb ( "$$port" ) , path : zc ( "$$path" , function ( a ) { return "/" == a . charAt ( 0 ) ? a : "/" + a } ) , search : function ( a , c ) { switch ( arguments . length ) { case 0 : return this . $$search ; case 1 : if ( x ( a ) ) this . $$search = Wb ( a ) ; else if ( W ( a ) ) this . $$search = a ; else throw Ib ( "isrcharg" ) ; break ; default : E ( c ) || null === c ? delete this . $$search [ a ] : this . $$search [ a ] = c } this . $$compose ( ) ; return this } , hash : zc ( "$$hash" ,
Ba ) , replace : function ( ) { this . $$replace = ! 0 ; return this } } ; var za = z ( "$parse" ) , Cc = { } , qa , La = { "null" : function ( ) { return null } , "true" : function ( ) { return ! 0 } , "false" : function ( ) { return ! 1 } , undefined : B , "+" : function ( a , c , d , e ) { d = d ( a , c ) ; e = e ( a , c ) ; return u ( d ) ? u ( e ) ? d + e : d : u ( e ) ? e : s } , "-" : 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 ) / 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 ) } , "=" : B , "===" : 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 ) && 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 e ( a , c ) ( a , c , d ( a , c ) ) } , "!" : function ( a , c , d ) { return ! d ( a , c ) } } , Je = { n : "\n" , f : "\f" , r : "\r" , t : "\t" , v : "\v" , "'" : "'" , '"' : '"' } , Lb = function ( a ) { this . options = a } ; Lb . prototype = { constructor : Lb , lex : function ( a ) { this . text = a ; this . index = 0 ; this . ch = s ; this . lastCh = ":" ; this . tokens = [ ] ; var c ; for ( a = [ ] ; this . index < this . text . length ; ) { this . ch = this . text . charAt ( this . index ) ; if ( this . is ( "\"'" ) ) this . readString ( this . ch ) ; else if ( this . isNumber ( this . ch ) || this . is ( "." ) && this . isNumber ( this . peek ( ) ) ) this . readNumber ( ) ;
else if ( this . isIdent ( this . ch ) ) this . readIdent ( ) , this . was ( "{," ) && ( "{" === a [ 0 ] && ( c = this . tokens [ this . tokens . length - 1 ] ) ) && ( c . json = - 1 === c . text . indexOf ( "." ) ) ; else if ( this . is ( "(){}[].,;:?" ) ) this . tokens . push ( { index : this . index , text : this . ch , json : this . was ( ":[," ) && this . is ( "{[" ) || this . is ( "}]:," ) } ) , this . is ( "{[" ) && a . unshift ( this . ch ) , this . is ( "}]" ) && a . shift ( ) , this . index ++ ; else if ( this . isWhitespace ( this . ch ) ) { this . index ++ ; continue } else { var d = this . ch + this . peek ( ) , e = d + this . peek ( 2 ) , f = La [ this . ch ] , g = La [ d ] , h = La [ e ] ; h ? ( this . tokens . push ( { index : this . index ,
text : e , fn : h } ) , this . index += 3 ) : g ? ( this . tokens . push ( { index : this . index , text : d , fn : g } ) , this . index += 2 ) : f ? ( this . tokens . push ( { index : this . index , text : this . ch , fn : f , json : this . was ( "[,:" ) && this . is ( "+-" ) } ) , this . index += 1 ) : this . throwError ( "Unexpected next character " , this . index , this . index + 1 ) } this . lastCh = this . ch } return this . tokens } , is : function ( a ) { return - 1 !== a . indexOf ( this . ch ) } , was : function ( a ) { return - 1 !== a . indexOf ( this . lastCh ) } , peek : function ( a ) { a = a || 1 ; return this . index + a < this . text . length ? this . text . charAt ( this . index +
a ) : ! 1 } , isNumber : function ( a ) { return "0" <= a && "9" >= a } , isWhitespace : function ( a ) { return " " === a || "\r" === a || "\t" === a || "\n" === a || "\v" === a || "\u00a0" === a } , isIdent : function ( a ) { return "a" <= a && "z" >= a || "A" <= a && "Z" >= a || "_" === a || "$" === a } , isExpOperator : function ( a ) { return "-" === a || "+" === a || this . isNumber ( a ) } , throwError : function ( a , c , d ) { d = d || this . index ; c = u ( c ) ? "s " + c + "-" + this . index + " [" + this . text . substring ( c , d ) + "]" : " " + d ; throw za ( "lexerr" , a , c , this . text ) ; } , readNumber : function ( ) { for ( var a = "" , c = this . index ; this . index < this . text . length ; ) { var d =
O ( this . text . charAt ( this . index ) ) ; if ( "." == d || this . isNumber ( d ) ) a += d ; else { var e = this . peek ( ) ; if ( "e" == d && this . isExpOperator ( e ) ) a += d ; else if ( this . isExpOperator ( d ) && e && this . isNumber ( e ) && "e" == a . charAt ( a . length - 1 ) ) a += d ; else if ( ! this . isExpOperator ( d ) || e && this . isNumber ( e ) || "e" != a . charAt ( a . length - 1 ) ) break ; else this . throwError ( "Invalid exponent" ) } this . index ++ } a *= 1 ; this . tokens . push ( { index : c , text : a , json : ! 0 , fn : function ( ) { return a } } ) } , readIdent : function ( ) { for ( var a = this , c = "" , d = this . index , e , f , g , h ; this . index < this . text . length ; ) { h =
this . text . charAt ( this . index ) ; if ( "." === h || this . isIdent ( h ) || this . isNumber ( h ) ) "." === h && ( e = this . index ) , c += h ; else break ; this . index ++ } if ( e ) for ( f = this . index ; f < this . text . length ; ) { h = this . text . charAt ( f ) ; if ( "(" === h ) { g = c . substr ( e - d + 1 ) ; c = c . substr ( 0 , e - d ) ; this . index = f ; break } if ( this . isWhitespace ( h ) ) f ++ ; else break } d = { index : d , text : c } ; if ( La . hasOwnProperty ( c ) ) d . fn = La [ c ] , d . json = La [ c ] ; else { var m = Bc ( c , this . options , this . text ) ; d . fn = v ( function ( a , c ) { return m ( a , c ) } , { assign : function ( d , e ) { return nb ( d , c , e , a . text , a . options ) } } ) } this . tokens . push ( d ) ;
g && ( this . tokens . push ( { index : e , text : "." , json : ! 1 } ) , this . tokens . push ( { index : e + 1 , text : g , json : ! 1 } ) ) } , readString : function ( a ) { var c = this . index ; this . index ++ ; for ( var d = "" , e = a , f = ! 1 ; this . index < this . text . length ; ) { var g = this . text . charAt ( this . index ) , e = e + g ; if ( f ) "u" === g ? ( g = this . text . substring ( this . index + 1 , this . index + 5 ) , g . match ( /[\da-f]{4}/i ) || this . throwError ( "Invalid unicode escape [\\u" + g + "]" ) , this . index += 4 , d += String . fromCharCode ( parseInt ( g , 16 ) ) ) : d = ( f = Je [ g ] ) ? d + f : d + g , f = ! 1 ; else if ( "\\" === g ) f = ! 0 ; else { if ( g === a ) { this . index ++ ;
this . tokens . push ( { index : c , text : e , string : d , json : ! 0 , fn : function ( ) { return d } } ) ; return } d += g } this . index ++ } this . throwError ( "Unterminated quote" , c ) } } ; var Za = function ( a , c , d ) { this . lexer = a ; this . $filter = c ; this . options = d } ; Za . ZERO = function ( ) { return 0 } ; Za . prototype = { constructor : Za , parse : function ( a , c ) { this . text = a ; this . json = c ; this . tokens = this . lexer . lex ( a ) ; c && ( this . assignment = this . logicalOR , this . functionCall = this . fieldAccess = this . objectIndex = this . filterChain = function ( ) { this . throwError ( "is not valid json" , { text : a ,
index : 0 } ) } ) ; var d = c ? this . primary ( ) : this . statements ( ) ; 0 !== this . tokens . length && this . throwError ( "is an unexpected token" , this . tokens [ 0 ] ) ; d . literal = ! ! d . literal ; d . constant = ! ! d . constant ; return d } , primary : function ( ) { var a ; if ( this . expect ( "(" ) ) a = this . filterChain ( ) , this . consume ( ")" ) ; else if ( this . expect ( "[" ) ) a = this . arrayDeclaration ( ) ; else if ( this . expect ( "{" ) ) a = this . object ( ) ; else { var c = this . expect ( ) ; ( a = c . fn ) || this . throwError ( "not a primary expression" , c ) ; c . json && ( a . constant = ! 0 , a . literal = ! 0 ) } for ( var d ; c = this . expect ( "(" ,
"[" , "." ) ; ) "(" === c . text ? ( a = this . functionCall ( a , d ) , d = null ) : "[" === c . text ? ( d = a , a = this . objectIndex ( a ) ) : "." === c . text ? ( d = a , a = this . fieldAccess ( a ) ) : this . throwError ( "IMPOSSIBLE" ) ; return a } , throwError : function ( a , c ) { throw za ( "syntax" , c . text , a , c . index + 1 , this . text , this . text . substring ( c . index ) ) ; } , peekToken : function ( ) { if ( 0 === this . tokens . length ) throw za ( "ueoe" , this . text ) ; return this . tokens [ 0 ] } , peek : function ( a , c , d , e ) { if ( 0 < this . tokens . length ) { var f = this . tokens [ 0 ] , g = f . text ; if ( g === a || g === c || g === d || g === e || ! ( a || c || d || e ) ) return f } return ! 1 } ,
expect : function ( a , c , d , e ) { return ( a = this . peek ( a , c , d , e ) ) ? ( this . json && ! a . json && this . throwError ( "is not valid json" , a ) , this . tokens . shift ( ) , a ) : ! 1 } , consume : function ( a ) { this . expect ( a ) || this . throwError ( "is unexpected, expecting [" + a + "]" , this . peek ( ) ) } , unaryFn : function ( a , c ) { return v ( function ( d , e ) { return a ( d , e , c ) } , { constant : c . constant } ) } , ternaryFn : function ( a , c , d ) { return v ( function ( e , f ) { return a ( e , f ) ? c ( e , f ) : d ( e , f ) } , { constant : a . constant && c . constant && d . constant } ) } , binaryFn : function ( a , c , d ) { return v ( function ( e , f ) { return c ( e ,
f , a , d ) } , { constant : a . constant && d . constant } ) } , statements : function ( ) { for ( var a = [ ] ; ; ) if ( 0 < this . tokens . length && ! this . peek ( "}" , ")" , ";" , "]" ) && a . push ( this . filterChain ( ) ) , ! this . expect ( ";" ) ) return 1 === a . length ? a [ 0 ] : function ( c , d ) { for ( var e , f = 0 ; f < a . length ; f ++ ) { var g = a [ f ] ; g && ( e = g ( c , d ) ) } return e } } , filterChain : function ( ) { for ( var a = this . expression ( ) , c ; ; ) if ( c = this . expect ( "|" ) ) a = this . binaryFn ( a , c . fn , this . filter ( ) ) ; else return a } , filter : function ( ) { for ( var a = this . expect ( ) , c = this . $filter ( a . text ) , d = [ ] ; ; ) if ( a = this . expect ( ":" ) ) d . push ( this . expression ( ) ) ;
else { var e = function ( a , e , h ) { h = [ h ] ; for ( var m = 0 ; m < d . length ; m ++ ) h . push ( d [ m ] ( a , e ) ) ; return c . apply ( a , h ) } ; return function ( ) { return e } } } , expression : function ( ) { return this . assignment ( ) } , assignment : function ( ) { var a = this . ternary ( ) , c , d ; return ( d = this . expect ( "=" ) ) ? ( a . assign || this . throwError ( "implies assignment but [" + this . text . substring ( 0 , d . index ) + "] can not be assigned to" , d ) , c = this . ternary ( ) , function ( d , f ) { return a . assign ( d , c ( d , f ) , f ) } ) : a } , ternary : function ( ) { var a = this . logicalOR ( ) , c , d ; if ( this . expect ( "?" ) ) { c = this . ternary ( ) ;
if ( d = this . expect ( ":" ) ) return this . ternaryFn ( a , c , this . ternary ( ) ) ; this . throwError ( "expected :" , d ) } else return a } , logicalOR : function ( ) { for ( var a = this . logicalAND ( ) , c ; ; ) if ( c = this . expect ( "||" ) ) a = this . binaryFn ( a , c . fn , this . logicalAND ( ) ) ; else return a } , logicalAND : function ( ) { var a = this . equality ( ) , c ; if ( c = this . expect ( "&&" ) ) a = this . binaryFn ( a , c . fn , this . logicalAND ( ) ) ; return a } , equality : function ( ) { var a = this . relational ( ) , c ; if ( c = this . expect ( "==" , "!=" , "===" , "!==" ) ) a = this . binaryFn ( a , c . fn , this . equality ( ) ) ; return a } ,
relational : function ( ) { var a = this . additive ( ) , c ; if ( c = this . expect ( "<" , ">" , "<=" , ">=" ) ) a = this . binaryFn ( a , c . fn , this . relational ( ) ) ; return a } , additive : function ( ) { for ( var a = this . multiplicative ( ) , c ; c = this . expect ( "+" , "-" ) ; ) a = this . binaryFn ( a , c . fn , this . multiplicative ( ) ) ; return a } , multiplicative : function ( ) { for ( var a = this . unary ( ) , c ; c = this . expect ( "*" , "/" , "%" ) ; ) a = this . binaryFn ( a , c . fn , this . unary ( ) ) ; return a } , unary : function ( ) { var a ; return this . expect ( "+" ) ? this . primary ( ) : ( a = this . expect ( "-" ) ) ? this . binaryFn ( Za . ZERO , a . fn ,
this . unary ( ) ) : ( a = this . expect ( "!" ) ) ? this . unaryFn ( a . fn , this . unary ( ) ) : this . primary ( ) } , fieldAccess : function ( a ) { var c = this , d = this . expect ( ) . text , e = Bc ( d , this . options , this . text ) ; return v ( function ( c , d , h ) { return e ( h || a ( c , d ) ) } , { assign : function ( e , g , h ) { return nb ( a ( e , h ) , d , g , c . text , c . options ) } } ) } , objectIndex : function ( a ) { var c = this , d = this . expression ( ) ; this . consume ( "]" ) ; return v ( function ( e , f ) { var g = a ( e , f ) , h = d ( e , f ) , m ; if ( ! g ) return s ; ( g = Ya ( g [ h ] , c . text ) ) && ( g . then && c . options . unwrapPromises ) && ( m = g , "$$v" in g || ( m . $$v = s , m . then ( function ( a ) { m . $$v =
a } ) ) , g = g . $$v ) ; return g } , { assign : function ( e , f , g ) { var h = d ( e , g ) ; return Ya ( a ( e , g ) , c . text ) [ h ] = f } } ) } , functionCall : function ( a , c ) { var d = [ ] ; if ( ")" !== this . peekToken ( ) . text ) { do d . push ( this . expression ( ) ) ; while ( this . expect ( "," ) ) } this . consume ( ")" ) ; var e = this ; return function ( f , g ) { for ( var h = [ ] , m = c ? c ( f , g ) : f , k = 0 ; k < d . length ; k ++ ) h . push ( d [ k ] ( f , g ) ) ; k = a ( f , g , m ) || B ; Ya ( m , e . text ) ; Ya ( k , e . text ) ; h = k . apply ? k . apply ( m , h ) : k ( h [ 0 ] , h [ 1 ] , h [ 2 ] , h [ 3 ] , h [ 4 ] ) ; return Ya ( h , e . text ) } } , arrayDeclaration : function ( ) { var a = [ ] , c = ! 0 ; if ( "]" !== this . peekToken ( ) . text ) { do { if ( this . peek ( "]" ) ) break ;
var d = this . expression ( ) ; a . push ( d ) ; d . constant || ( c = ! 1 ) } while ( this . expect ( "," ) ) } this . consume ( "]" ) ; return v ( function ( c , d ) { for ( var g = [ ] , h = 0 ; h < a . length ; h ++ ) g . push ( a [ h ] ( c , d ) ) ; return g } , { literal : ! 0 , constant : c } ) } , object : function ( ) { var a = [ ] , c = ! 0 ; if ( "}" !== this . peekToken ( ) . text ) { do { if ( this . peek ( "}" ) ) break ; var d = this . expect ( ) , d = d . string || d . text ; this . consume ( ":" ) ; var e = this . expression ( ) ; a . push ( { key : d , value : e } ) ; e . constant || ( c = ! 1 ) } while ( this . expect ( "," ) ) } this . consume ( "}" ) ; return v ( function ( c , d ) { for ( var e = { } , m = 0 ; m <
a . length ; m ++ ) { var k = a [ m ] ; e [ k . key ] = k . value ( c , d ) } return e } , { literal : ! 0 , constant : c } ) } } ; var Kb = { } , ra = z ( "$sce" ) , ea = { HTML : "html" , CSS : "css" , URL : "url" , RESOURCE _URL : "resourceUrl" , JS : "js" } , V = T . createElement ( "a" ) , Fc = pa ( Q . location . href , ! 0 ) ; ec . $inject = [ "$provide" ] ; Gc . $inject = [ "$locale" ] ; Ic . $inject = [ "$locale" ] ; var Lc = "." , Ee = { yyyy : X ( "FullYear" , 4 ) , yy : X ( "FullYear" , 2 , 0 , ! 0 ) , y : X ( "FullYear" , 1 ) , MMMM : ob ( "Month" ) , MMM : ob ( "Month" , ! 0 ) , MM : X ( "Month" , 2 , 1 ) , M : X ( "Month" , 1 , 1 ) , dd : X ( "Date" , 2 ) , d : X ( "Date" , 1 ) , HH : X ( "Hours" , 2 ) , H : X ( "Hours" ,
1 ) , hh : X ( "Hours" , 2 , - 12 ) , h : X ( "Hours" , 1 , - 12 ) , mm : X ( "Minutes" , 2 ) , m : X ( "Minutes" , 1 ) , ss : X ( "Seconds" , 2 ) , s : X ( "Seconds" , 1 ) , sss : X ( "Milliseconds" , 3 ) , EEEE : ob ( "Day" ) , EEE : ob ( "Day" , ! 0 ) , a : function ( a , c ) { return 12 > a . getHours ( ) ? c . AMPMS [ 0 ] : c . AMPMS [ 1 ] } , Z : function ( a ) { a = - 1 * a . getTimezoneOffset ( ) ; return a = ( 0 <= a ? "+" : "" ) + ( Mb ( Math [ 0 < a ? "floor" : "ceil" ] ( a / 60 ) , 2 ) + Mb ( Math . abs ( a % 60 ) , 2 ) ) } } , De = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/ , Ce = /^\-?\d+$/ ; Hc . $inject = [ "$locale" ] ; var Ae = Y ( O ) , Be = Y ( Da ) ; Jc . $inject =
[ "$parse" ] ; var ad = Y ( { restrict : "E" , compile : function ( a , c ) { 8 >= P && ( c . href || c . name || c . $set ( "href" , "" ) , a . append ( T . createComment ( "IE fix" ) ) ) ; if ( ! c . href && ! c . xlinkHref && ! c . name ) return function ( a , c ) { var f = "[object SVGAnimatedString]" === ta . call ( c . prop ( "href" ) ) ? "xlink:href" : "href" ; c . on ( "click" , function ( a ) { c . attr ( f ) || a . preventDefault ( ) } ) } } } ) , yb = { } ; r ( jb , function ( a , c ) { if ( "multiple" != a ) { var d = ka ( "ng-" + c ) ; yb [ d ] = function ( ) { return { priority : 100 , link : function ( a , f , g ) { a . $watch ( g [ d ] , function ( a ) { g . $set ( c , ! ! a ) } ) } } } } } ) ; r ( [ "src" ,
"srcset" , "href" ] , function ( a ) { var c = ka ( "ng-" + a ) ; yb [ c ] = function ( ) { return { priority : 99 , link : function ( d , e , f ) { var g = a , h = a ; "href" === a && "[object SVGAnimatedString]" === ta . call ( e . prop ( "href" ) ) && ( h = "xlinkHref" , f . $attr [ h ] = "xlink:href" , g = null ) ; f . $observe ( c , function ( a ) { a && ( f . $set ( h , a ) , P && g && e . prop ( g , f [ h ] ) ) } ) } } } } ) ; var rb = { $addControl : B , $removeControl : B , $setValidity : B , $setDirty : B , $setPristine : B } ; Mc . $inject = [ "$element" , "$attrs" , "$scope" , "$animate" ] ; var Oc = function ( a ) { return [ "$timeout" , function ( c ) { return { name : "form" ,
restrict : a ? "EAC" : "E" , controller : Mc , compile : function ( ) { return { pre : function ( a , e , f , g ) { if ( ! f . action ) { var h = function ( a ) { a . preventDefault ? a . preventDefault ( ) : a . returnValue = ! 1 } ; Nc ( e [ 0 ] , "submit" , h ) ; e . on ( "$destroy" , function ( ) { c ( function ( ) { Db ( e [ 0 ] , "submit" , h ) } , 0 , ! 1 ) } ) } var m = e . parent ( ) . controller ( "form" ) , k = f . name || f . ngForm ; k && nb ( a , k , g , k ) ; if ( m ) e . on ( "$destroy" , function ( ) { m . $removeControl ( g ) ; k && nb ( a , k , s , k ) ; v ( g , rb ) } ) } } } } } ] } , bd = Oc ( ) , od = Oc ( ! 0 ) , Ke = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/ ,
Le = /^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z0-9-]+(\.[a-z0-9-]+)*$/i , Me = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/ , Pc = { text : tb , number : function ( a , c , d , e , f , g ) { tb ( a , c , d , e , f , g ) ; e . $parsers . push ( function ( a ) { var c = e . $isEmpty ( a ) ; if ( c || Me . test ( a ) ) return e . $setValidity ( "number" , ! 0 ) , "" === a ? null : c ? a : parseFloat ( a ) ; e . $setValidity ( "number" , ! 1 ) ; return s } ) ; Fe ( e , "number" , c ) ; e . $formatters . push ( function ( a ) { return e . $isEmpty ( a ) ? "" : "" + a } ) ; d . min && ( a = function ( a ) { var c = parseFloat ( d . min ) ; return na ( e , "min" , e . $isEmpty ( a ) || a >= c , a ) } , e . $parsers . push ( a ) ,
e . $formatters . push ( a ) ) ; d . max && ( a = function ( a ) { var c = parseFloat ( d . max ) ; return na ( e , "max" , e . $isEmpty ( a ) || a <= c , a ) } , e . $parsers . push ( a ) , e . $formatters . push ( a ) ) ; e . $formatters . push ( function ( a ) { return na ( e , "number" , e . $isEmpty ( a ) || ub ( a ) , a ) } ) } , url : function ( a , c , d , e , f , g ) { tb ( a , c , d , e , f , g ) ; a = function ( a ) { return na ( e , "url" , e . $isEmpty ( a ) || Ke . test ( a ) , a ) } ; e . $formatters . push ( a ) ; e . $parsers . push ( a ) } , email : function ( a , c , d , e , f , g ) { tb ( a , c , d , e , f , g ) ; a = function ( a ) { return na ( e , "email" , e . $isEmpty ( a ) || Le . test ( a ) , a ) } ; e . $formatters . push ( a ) ;
e . $parsers . push ( a ) } , radio : function ( a , c , d , e ) { E ( d . name ) && c . attr ( "name" , ab ( ) ) ; c . on ( "click" , function ( ) { c [ 0 ] . checked && 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 f = d . ngTrueValue , g = d . ngFalseValue ; x ( f ) || ( f = ! 0 ) ; x ( g ) || ( g = ! 1 ) ; c . on ( "click" , function ( ) { a . $apply ( function ( ) { e . $setViewValue ( c [ 0 ] . checked ) } ) } ) ; e . $render = function ( ) { c [ 0 ] . checked = e . $viewValue } ; e . $isEmpty = function ( a ) { return a !== f } ;
e . $formatters . push ( function ( a ) { return a === f } ) ; e . $parsers . push ( function ( a ) { return a ? f : g } ) } , hidden : B , button : B , submit : B , reset : B , file : B } , bc = [ "$browser" , "$sniffer" , function ( a , c ) { return { restrict : "E" , require : "?ngModel" , link : function ( d , e , f , g ) { g && ( Pc [ O ( f . type ) ] || Pc . text ) ( d , e , f , g , c , a ) } } } ] , qb = "ng-valid" , pb = "ng-invalid" , Ka = "ng-pristine" , sb = "ng-dirty" , Ne = [ "$scope" , "$exceptionHandler" , "$attrs" , "$element" , "$parse" , "$animate" , function ( a , c , d , e , f , g ) { function h ( a , c ) { c = c ? "-" + eb ( c , "-" ) : "" ; g . removeClass ( e , ( a ? pb : qb ) + c ) ;
g . addClass ( e , ( a ? qb : pb ) + c ) } this . $modelValue = this . $viewValue = Number . NaN ; this . $parsers = [ ] ; this . $formatters = [ ] ; this . $viewChangeListeners = [ ] ; this . $pristine = ! 0 ; this . $dirty = ! 1 ; this . $valid = ! 0 ; this . $invalid = ! 1 ; this . $name = d . name ; var m = f ( d . ngModel ) , k = m . assign ; if ( ! k ) throw z ( "ngModel" ) ( "nonassign" , d . ngModel , fa ( e ) ) ; this . $render = B ; this . $isEmpty = function ( a ) { return E ( a ) || "" === a || null === a || a !== a } ; var l = e . inheritedData ( "$formController" ) || rb , n = 0 , q = this . $error = { } ; e . addClass ( Ka ) ; h ( ! 0 ) ; this . $setValidity = function ( a , c ) { q [ a ] !==
! c && ( c ? ( q [ a ] && n -- , n || ( h ( ! 0 ) , this . $valid = ! 0 , this . $invalid = ! 1 ) ) : ( h ( ! 1 ) , this . $invalid = ! 0 , this . $valid = ! 1 , n ++ ) , q [ a ] = ! c , h ( c , a ) , l . $setValidity ( a , c , this ) ) } ; this . $setPristine = function ( ) { this . $dirty = ! 1 ; this . $pristine = ! 0 ; g . removeClass ( e , sb ) ; g . addClass ( e , Ka ) } ; this . $setViewValue = function ( d ) { this . $viewValue = d ; this . $pristine && ( this . $dirty = ! 0 , this . $pristine = ! 1 , g . removeClass ( e , Ka ) , g . addClass ( e , sb ) , l . $setDirty ( ) ) ; r ( this . $parsers , function ( a ) { d = a ( d ) } ) ; this . $modelValue !== d && ( this . $modelValue = d , k ( a , d ) , r ( this . $viewChangeListeners ,
function ( a ) { try { a ( ) } catch ( d ) { c ( d ) } } ) ) } ; var p = this ; a . $watch ( function ( ) { var c = m ( a ) ; if ( p . $modelValue !== c ) { var d = p . $formatters , e = d . length ; for ( p . $modelValue = c ; e -- ; ) c = d [ e ] ( c ) ; p . $viewValue !== c && ( p . $viewValue = c , p . $render ( ) ) } return c } ) } ] , Dd = function ( ) { return { require : [ "ngModel" , "^?form" ] , controller : Ne , link : function ( a , c , d , e ) { var f = e [ 0 ] , g = e [ 1 ] || rb ; g . $addControl ( f ) ; a . $on ( "$destroy" , function ( ) { g . $removeControl ( f ) } ) } } } , Fd = Y ( { require : "ngModel" , link : function ( a , c , d , e ) { e . $viewChangeListeners . push ( function ( ) { a . $eval ( d . ngChange ) } ) } } ) ,
cc = function ( ) { return { require : "?ngModel" , link : function ( a , c , d , e ) { if ( e ) { d . required = ! 0 ; var f = function ( a ) { if ( d . required && e . $isEmpty ( a ) ) e . $setValidity ( "required" , ! 1 ) ; else return e . $setValidity ( "required" , ! 0 ) , a } ; e . $formatters . push ( f ) ; e . $parsers . unshift ( f ) ; d . $observe ( "required" , function ( ) { f ( e . $viewValue ) } ) } } } } , Ed = function ( ) { return { require : "ngModel" , link : function ( a , c , d , e ) { var f = ( a = /\/(.*)\// . exec ( d . ngList ) ) && RegExp ( a [ 1 ] ) || d . ngList || "," ; e . $parsers . push ( function ( a ) { if ( ! E ( a ) ) { var c = [ ] ; a && r ( a . split ( f ) , function ( a ) { a &&
c . push ( aa ( a ) ) } ) ; return c } } ) ; e . $formatters . push ( function ( a ) { return M ( a ) ? a . join ( ", " ) : s } ) ; e . $isEmpty = function ( a ) { return ! a || ! a . length } } } } , Oe = /^(true|false|\d+)$/ , Gd = function ( ) { return { priority : 100 , compile : function ( a , c ) { return Oe . test ( c . ngValue ) ? function ( a , c , f ) { f . $set ( "value" , a . $eval ( f . ngValue ) ) } : function ( a , c , f ) { a . $watch ( f . ngValue , function ( a ) { f . $set ( "value" , a ) } ) } } } } , gd = sa ( function ( a , c , d ) { c . addClass ( "ng-binding" ) . data ( "$binding" , d . ngBind ) ; a . $watch ( d . ngBind , function ( a ) { c . text ( a == s ? "" : a ) } ) } ) , id = [ "$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 ) } ) } } ] , hd = [ "$sce" , "$parse" , function ( a , c ) { return function ( d , e , f ) { e . addClass ( "ng-binding" ) . data ( "$binding" , f . ngBindHtml ) ; var g = c ( f . ngBindHtml ) ; d . $watch ( function ( ) { return ( g ( d ) || "" ) . toString ( ) } , function ( c ) { e . html ( a . getTrustedHtml ( g ( d ) ) || "" ) } ) } } ] , jd = Nb ( "" , ! 0 ) , ld = Nb ( "Odd" , 0 ) , kd = Nb ( "Even" , 1 ) , md = sa ( { compile : function ( a , c ) { c . $set ( "ngCloak" , s ) ; a . removeClass ( "ng-cloak" ) } } ) ,
nd = [ function ( ) { return { scope : ! 0 , controller : "@" , priority : 500 } } ] , dc = { } ; r ( "click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste" . split ( " " ) , function ( a ) { var c = ka ( "ng-" + a ) ; dc [ c ] = [ "$parse" , function ( d ) { return { compile : function ( e , f ) { var g = d ( f [ c ] ) ; return function ( c , d , e ) { d . on ( O ( a ) , function ( a ) { c . $apply ( function ( ) { g ( c , { $event : a } ) } ) } ) } } } } ] } ) ; var qd = [ "$animate" , function ( a ) { return { transclude : "element" , priority : 600 , terminal : ! 0 , restrict : "A" ,
$$tlb : ! 0 , link : function ( c , d , e , f , g ) { var h , m , k ; c . $watch ( e . ngIf , function ( f ) { Pa ( f ) ? m || ( m = c . $new ( ) , g ( m , function ( c ) { c [ c . length ++ ] = T . createComment ( " end ngIf: " + e . ngIf + " " ) ; h = { clone : c } ; a . enter ( c , d . parent ( ) , d ) } ) ) : ( k && ( k . remove ( ) , k = null ) , m && ( m . $destroy ( ) , m = null ) , h && ( k = xb ( h . clone ) , a . leave ( k , function ( ) { k = null } ) , h = null ) ) } ) } } } ] , rd = [ "$http" , "$templateCache" , "$anchorScroll" , "$animate" , "$sce" , function ( a , c , d , e , f ) { return { restrict : "ECA" , priority : 400 , terminal : ! 0 , transclude : "element" , controller : Ca . noop , compile : function ( g ,
h ) { var m = h . ngInclude || h . src , k = h . onload || "" , l = h . autoscroll ; return function ( g , h , p , r , s ) { var v = 0 , A , w , F , y = function ( ) { w && ( w . remove ( ) , w = null ) ; A && ( A . $destroy ( ) , A = null ) ; F && ( e . leave ( F , function ( ) { w = null } ) , w = F , F = null ) } ; g . $watch ( f . parseAsResourceUrl ( m ) , function ( f ) { var m = function ( ) { ! u ( l ) || l && ! g . $eval ( l ) || d ( ) } , p = ++ v ; f ? ( a . get ( f , { cache : c } ) . success ( function ( a ) { if ( p === v ) { var c = g . $new ( ) ; r . template = a ; a = s ( c , function ( a ) { y ( ) ; e . enter ( a , null , h , m ) } ) ; A = c ; F = a ; A . $emit ( "$includeContentLoaded" ) ; g . $eval ( k ) } } ) . error ( function ( ) { p ===
v && y ( ) } ) , g . $emit ( "$includeContentRequested" ) ) : ( y ( ) , r . template = null ) } ) } } } } ] , Hd = [ "$compile" , function ( a ) { return { restrict : "ECA" , priority : - 400 , require : "ngInclude" , link : function ( c , d , e , f ) { d . html ( f . template ) ; a ( d . contents ( ) ) ( c ) } } } ] , sd = sa ( { priority : 450 , compile : function ( ) { return { pre : function ( a , c , d ) { a . $eval ( d . ngInit ) } } } } ) , td = sa ( { terminal : ! 0 , priority : 1E3 } ) , ud = [ "$locale" , "$interpolate" , function ( a , c ) { var d = /{}/g ; return { restrict : "EA" , link : function ( e , f , g ) { var h = g . count , m = g . $attr . when && f . attr ( g . $attr . when ) , k = g . offset ||
0 , l = e . $eval ( m ) || { } , n = { } , q = c . startSymbol ( ) , p = c . endSymbol ( ) , t = /^when(Minus)?(.+)$/ ; r ( g , function ( a , c ) { t . test ( c ) && ( l [ O ( c . replace ( "when" , "" ) . replace ( "Minus" , "-" ) ) ] = f . attr ( g . $attr [ c ] ) ) } ) ; r ( l , function ( a , e ) { n [ e ] = c ( a . replace ( d , q + h + "-" + k + p ) ) } ) ; e . $watch ( function ( ) { var c = parseFloat ( e . $eval ( h ) ) ; if ( isNaN ( c ) ) return "" ; c in l || ( c = a . pluralCat ( c - k ) ) ; return n [ c ] ( e , f , ! 0 ) } , function ( a ) { f . text ( a ) } ) } } } ] , vd = [ "$parse" , "$animate" , function ( a , c ) { var d = z ( "ngRepeat" ) ; return { transclude : "element" , priority : 1E3 , terminal : ! 0 , $$tlb : ! 0 ,
link : function ( e , f , g , h , m ) { var k = g . ngRepeat , l = k . match ( /^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/ ) , n , q , p , t , s , v , u = { $id : Ga } ; if ( ! l ) throw d ( "iexp" , k ) ; g = l [ 1 ] ; h = l [ 2 ] ; ( l = l [ 3 ] ) ? ( n = a ( l ) , q = function ( a , c , d ) { v && ( u [ v ] = a ) ; u [ s ] = c ; u . $index = d ; return n ( e , u ) } ) : ( p = function ( a , c ) { return Ga ( c ) } , t = function ( a ) { return a } ) ; l = g . match ( /^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/ ) ; if ( ! l ) throw d ( "iidexp" , g ) ; s = l [ 3 ] || l [ 1 ] ; v = l [ 2 ] ; var J = { } ; e . $watchCollection ( h , function ( a ) { var g , h , l = f [ 0 ] , n , u = { } , A , I , x , B , E , K ,
z = [ ] ; if ( $a ( a ) ) E = a , n = q || p ; else { n = q || t ; E = [ ] ; for ( x in a ) a . hasOwnProperty ( x ) && "$" != x . charAt ( 0 ) && E . push ( x ) ; E . sort ( ) } A = E . length ; h = z . length = E . length ; for ( g = 0 ; g < h ; g ++ ) if ( x = a === E ? g : E [ g ] , B = a [ x ] , B = n ( x , B , g ) , xa ( B , "`track by` id" ) , J . hasOwnProperty ( B ) ) K = J [ B ] , delete J [ B ] , u [ B ] = K , z [ g ] = K ; else { if ( u . hasOwnProperty ( B ) ) throw r ( z , function ( a ) { a && a . scope && ( J [ a . id ] = a ) } ) , d ( "dupes" , k , B ) ; z [ g ] = { id : B } ; u [ B ] = ! 1 } for ( x in J ) J . hasOwnProperty ( x ) && ( K = J [ x ] , g = xb ( K . clone ) , c . leave ( g ) , r ( g , function ( a ) { a . $$NG _REMOVED = ! 0 } ) , K . scope . $destroy ( ) ) ;
g = 0 ; for ( h = E . length ; g < h ; g ++ ) { x = a === E ? g : E [ g ] ; B = a [ x ] ; K = z [ g ] ; z [ g - 1 ] && ( l = z [ g - 1 ] . clone [ z [ g - 1 ] . clone . length - 1 ] ) ; if ( K . scope ) { I = K . scope ; n = l ; do n = n . nextSibling ; while ( n && n . $$NG _REMOVED ) ; K . clone [ 0 ] != n && c . move ( xb ( K . clone ) , null , w ( l ) ) ; l = K . clone [ K . clone . length - 1 ] } else I = e . $new ( ) ; I [ s ] = B ; v && ( I [ v ] = x ) ; I . $index = g ; I . $first = 0 === g ; I . $last = g === A - 1 ; I . $middle = ! ( I . $first || I . $last ) ; I . $odd = ! ( I . $even = 0 === ( g & 1 ) ) ; K . scope || m ( I , function ( a ) { a [ a . length ++ ] = T . createComment ( " end ngRepeat: " + k + " " ) ; c . enter ( a , null , w ( l ) ) ; l = a ; K . scope = I ; K . clone =
a ; u [ K . id ] = K } ) } J = u } ) } } } ] , wd = [ "$animate" , function ( a ) { return function ( c , d , e ) { c . $watch ( e . ngShow , function ( c ) { a [ Pa ( c ) ? "removeClass" : "addClass" ] ( d , "ng-hide" ) } ) } } ] , pd = [ "$animate" , function ( a ) { return function ( c , d , e ) { c . $watch ( e . ngHide , function ( c ) { a [ Pa ( c ) ? "addClass" : "removeClass" ] ( d , "ng-hide" ) } ) } } ] , xd = sa ( function ( a , c , d ) { a . $watch ( d . ngStyle , function ( a , d ) { d && a !== d && r ( d , function ( a , d ) { c . css ( d , "" ) } ) ; a && c . css ( a ) } , ! 0 ) } ) , yd = [ "$animate" , function ( a ) { return { restrict : "EA" , require : "ngSwitch" , controller : [ "$scope" , function ( ) { this . cases =
{ } } ] , link : function ( c , d , e , f ) { var g , h , m , k = [ ] ; c . $watch ( e . ngSwitch || e . on , function ( d ) { var n , q = k . length ; if ( 0 < q ) { if ( m ) { for ( n = 0 ; n < q ; n ++ ) m [ n ] . remove ( ) ; m = null } m = [ ] ; for ( n = 0 ; n < q ; n ++ ) { var p = h [ n ] ; k [ n ] . $destroy ( ) ; m [ n ] = p ; a . leave ( p , function ( ) { m . splice ( n , 1 ) ; 0 === m . length && ( m = null ) } ) } } h = [ ] ; k = [ ] ; if ( g = f . cases [ "!" + d ] || f . cases [ "?" ] ) c . $eval ( e . change ) , r ( g , function ( d ) { var e = c . $new ( ) ; k . push ( e ) ; d . transclude ( e , function ( c ) { var e = d . element ; h . push ( c ) ; a . enter ( c , e . parent ( ) , e ) } ) } ) } ) } } } ] , zd = sa ( { transclude : "element" , priority : 800 , require : "^ngSwitch" ,
link : function ( a , c , d , e , f ) { e . cases [ "!" + d . ngSwitchWhen ] = e . cases [ "!" + d . ngSwitchWhen ] || [ ] ; e . cases [ "!" + d . ngSwitchWhen ] . push ( { transclude : f , element : c } ) } } ) , Ad = sa ( { transclude : "element" , priority : 800 , require : "^ngSwitch" , link : function ( a , c , d , e , f ) { e . cases [ "?" ] = e . cases [ "?" ] || [ ] ; e . cases [ "?" ] . push ( { transclude : f , element : c } ) } } ) , Cd = sa ( { link : function ( a , c , d , e , f ) { if ( ! f ) throw z ( "ngTransclude" ) ( "orphan" , fa ( c ) ) ; f ( function ( a ) { c . empty ( ) ; c . append ( a ) } ) } } ) , cd = [ "$templateCache" , function ( a ) { return { restrict : "E" , terminal : ! 0 , compile : function ( c ,
d ) { "text/ng-template" == d . type && a . put ( d . id , c [ 0 ] . text ) } } } ] , Pe = z ( "ngOptions" ) , Bd = Y ( { terminal : ! 0 } ) , dd = [ "$compile" , "$parse" , function ( a , c ) { var d = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/ , e = { $setViewValue : B } ; return { restrict : "E" , require : [ "select" , "?ngModel" ] , controller : [ "$element" , "$scope" , "$attrs" , function ( a , c , d ) { var m = this , k = { } , l = e , n ; m . databound =
d . ngModel ; m . init = function ( a , c , d ) { l = a ; n = d } ; m . addOption = function ( c ) { xa ( c , '"option value"' ) ; k [ c ] = ! 0 ; l . $viewValue == c && ( a . val ( c ) , n . parent ( ) && n . remove ( ) ) } ; m . removeOption = function ( a ) { this . hasOption ( a ) && ( delete k [ a ] , l . $viewValue == a && this . renderUnknownOption ( a ) ) } ; m . renderUnknownOption = function ( c ) { c = "? " + Ga ( c ) + " ?" ; n . val ( c ) ; a . prepend ( n ) ; a . val ( c ) ; n . prop ( "selected" , ! 0 ) } ; m . hasOption = function ( a ) { return k . hasOwnProperty ( a ) } ; c . $on ( "$destroy" , function ( ) { m . renderUnknownOption = B } ) } ] , link : function ( e , g , h , m ) { function k ( a ,
c , d , e ) { d . $render = function ( ) { var a = d . $viewValue ; e . hasOption ( a ) ? ( z . parent ( ) && z . remove ( ) , c . val ( a ) , "" === a && x . prop ( "selected" , ! 0 ) ) : E ( a ) && x ? c . val ( "" ) : e . renderUnknownOption ( a ) } ; c . on ( "change" , function ( ) { a . $apply ( function ( ) { z . parent ( ) && z . remove ( ) ; d . $setViewValue ( c . val ( ) ) } ) } ) } function l ( a , c , d ) { var e ; d . $render = function ( ) { var a = new Ua ( d . $viewValue ) ; r ( c . find ( "option" ) , function ( c ) { c . selected = u ( a . get ( c . value ) ) } ) } ; a . $watch ( function ( ) { ua ( e , d . $viewValue ) || ( e = $ ( d . $viewValue ) , d . $render ( ) ) } ) ; c . on ( "change" , function ( ) { a . $apply ( function ( ) { var a =
[ ] ; r ( c . find ( "option" ) , function ( c ) { c . selected && a . push ( c . value ) } ) ; d . $setViewValue ( a ) } ) } ) } function n ( e , f , g ) { function h ( ) { var a = { "" : [ ] } , c = [ "" ] , d , k , s , t , z ; t = g . $modelValue ; z = y ( e ) || [ ] ; var E = n ? Ob ( z ) : z , I , C , D ; C = { } ; s = ! 1 ; var F , L ; if ( p ) if ( w && M ( t ) ) for ( s = new Ua ( [ ] ) , D = 0 ; D < t . length ; D ++ ) C [ m ] = t [ D ] , s . put ( w ( e , C ) , t [ D ] ) ; else s = new Ua ( t ) ; for ( D = 0 ; I = E . length , D < I ; D ++ ) { k = D ; if ( n ) { k = E [ D ] ; if ( "$" === k . charAt ( 0 ) ) continue ; C [ n ] = k } C [ m ] = z [ k ] ; d = q ( e , C ) || "" ; ( k = a [ d ] ) || ( k = a [ d ] = [ ] , c . push ( d ) ) ; p ? d = u ( s . remove ( w ? w ( e , C ) : r ( e , C ) ) ) : ( w ? ( d = { } , d [ m ] = t , d =
w ( e , d ) === w ( e , C ) ) : d = t === r ( e , C ) , s = s || d ) ; F = l ( e , C ) ; F = u ( F ) ? F : "" ; k . push ( { id : w ? w ( e , C ) : n ? E [ D ] : D , label : F , selected : d } ) } p || ( v || null === t ? a [ "" ] . unshift ( { id : "" , label : "" , selected : ! s } ) : s || a [ "" ] . unshift ( { id : "?" , label : "" , selected : ! 0 } ) ) ; C = 0 ; for ( E = c . length ; C < E ; C ++ ) { d = c [ C ] ; k = a [ d ] ; x . length <= C ? ( t = { element : B . clone ( ) . attr ( "label" , d ) , label : k . label } , z = [ t ] , x . push ( z ) , f . append ( t . element ) ) : ( z = x [ C ] , t = z [ 0 ] , t . label != d && t . element . attr ( "label" , t . label = d ) ) ; F = null ; D = 0 ; for ( I = k . length ; D < I ; D ++ ) s = k [ D ] , ( d = z [ D + 1 ] ) ? ( F = d . element , d . label !== s . label &&
F . text ( d . label = s . label ) , d . id !== s . id && F . val ( d . id = s . id ) , d . selected !== s . selected && F . prop ( "selected" , d . selected = s . selected ) ) : ( "" === s . id && v ? L = v : ( L = A . clone ( ) ) . val ( s . id ) . attr ( "selected" , s . selected ) . text ( s . label ) , z . push ( { element : L , label : s . label , id : s . id , selected : s . selected } ) , F ? F . after ( L ) : t . element . append ( L ) , F = L ) ; for ( D ++ ; z . length > D ; ) z . pop ( ) . element . remove ( ) } for ( ; x . length > C ; ) x . pop ( ) [ 0 ] . element . remove ( ) } var k ; if ( ! ( k = t . match ( d ) ) ) throw Pe ( "iexp" , t , fa ( f ) ) ; var l = c ( k [ 2 ] || k [ 1 ] ) , m = k [ 4 ] || k [ 6 ] , n = k [ 5 ] , q = c ( k [ 3 ] || "" ) , r =
c ( k [ 2 ] ? k [ 1 ] : m ) , y = c ( k [ 7 ] ) , w = k [ 8 ] ? c ( k [ 8 ] ) : null , x = [ [ { element : f , label : "" } ] ] ; v && ( a ( v ) ( e ) , v . removeClass ( "ng-scope" ) , v . remove ( ) ) ; f . empty ( ) ; f . on ( "change" , function ( ) { e . $apply ( function ( ) { var a , c = y ( e ) || [ ] , d = { } , h , k , l , q , t , v , u ; if ( p ) for ( k = [ ] , q = 0 , v = x . length ; q < v ; q ++ ) for ( a = x [ q ] , l = 1 , t = a . length ; l < t ; l ++ ) { if ( ( h = a [ l ] . element ) [ 0 ] . selected ) { h = h . val ( ) ; n && ( d [ n ] = h ) ; if ( w ) for ( u = 0 ; u < c . length && ( d [ m ] = c [ u ] , w ( e , d ) != h ) ; u ++ ) ; else d [ m ] = c [ h ] ; k . push ( r ( e , d ) ) } } else { h = f . val ( ) ; if ( "?" == h ) k = s ; else if ( "" === h ) k = null ; else if ( w ) for ( u = 0 ; u < c . length ; u ++ ) { if ( d [ m ] =
c [ u ] , w ( e , d ) == h ) { k = r ( e , d ) ; break } } else d [ m ] = c [ h ] , n && ( d [ n ] = h ) , k = r ( e , d ) ; 1 < x [ 0 ] . length && x [ 0 ] [ 1 ] . id !== h && ( x [ 0 ] [ 1 ] . selected = ! 1 ) } g . $setViewValue ( k ) } ) } ) ; g . $render = h ; e . $watch ( h ) } if ( m [ 1 ] ) { var q = m [ 0 ] ; m = m [ 1 ] ; var p = h . multiple , t = h . ngOptions , v = ! 1 , x , A = w ( T . createElement ( "option" ) ) , B = w ( T . createElement ( "optgroup" ) ) , z = A . clone ( ) ; h = 0 ; for ( var y = g . children ( ) , D = y . length ; h < D ; h ++ ) if ( "" === y [ h ] . value ) { x = v = y . eq ( h ) ; break } q . init ( m , v , z ) ; p && ( m . $isEmpty = function ( a ) { return ! a || 0 === a . length } ) ; t ? n ( e , g , m ) : p ? l ( e , g , m ) : k ( e , g , m , q ) } } } } ] , fd = [ "$interpolate" ,
function ( a ) { var c = { addOption : B , removeOption : B } ; return { restrict : "E" , priority : 100 , compile : function ( d , e ) { if ( E ( e . value ) ) { var f = a ( d . text ( ) , ! 0 ) ; f || e . $set ( "value" , d . text ( ) ) } return function ( a , d , e ) { var k = d . parent ( ) , l = k . data ( "$selectController" ) || k . parent ( ) . data ( "$selectController" ) ; l && l . databound ? d . prop ( "selected" , ! 1 ) : l = c ; f ? a . $watch ( f , function ( a , c ) { e . $set ( "value" , a ) ; a !== c && l . removeOption ( c ) ; l . addOption ( a ) } ) : l . addOption ( e . value ) ; d . on ( "$destroy" , function ( ) { l . removeOption ( e . value ) } ) } } } } ] , ed = Y ( { restrict : "E" , terminal : ! 0 } ) ;
Q . angular . bootstrap ? console . log ( "WARNING: Tried to load angular more than once." ) : ( ( Ea = Q . jQuery ) ? ( w = Ea , v ( Ea . fn , { scope : Ha . scope , isolateScope : Ha . isolateScope , controller : Ha . controller , injector : Ha . injector , inheritedData : Ha . inheritedData } ) , zb ( "remove" , ! 0 , ! 0 , ! 1 ) , zb ( "empty" , ! 1 , ! 1 , ! 1 ) , zb ( "html" , ! 1 , ! 1 , ! 0 ) ) : w = L , Ca . element = w , Xc ( Ca ) , w ( T ) . ready ( function ( ) { Uc ( T , Yb ) } ) ) } ) ( window , document ) ; ! angular . $$csp ( ) && angular . element ( document ) . find ( "head" ) . prepend ( '<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}</style>' ) ;
/ *
AngularJS v1 . 2.16 - build . 29 + sha . a275d53
( c ) 2010 - 2014 Google , Inc . http : //angularjs.org
License : MIT
* /
( function ( n , e , A ) { 'use strict' ; function x ( s , g , k ) { return { restrict : "ECA" , terminal : ! 0 , priority : 400 , transclude : "element" , link : function ( a , c , b , f , w ) { function y ( ) { p && ( p . remove ( ) , p = null ) ; h && ( h . $destroy ( ) , h = null ) ; l && ( k . leave ( l , function ( ) { p = null } ) , p = l , l = null ) } function v ( ) { var b = s . current && s . current . locals ; if ( e . isDefined ( b && b . $template ) ) { var b = a . $new ( ) , d = s . current ; l = w ( b , function ( d ) { k . enter ( d , null , l || c , function ( ) { ! e . isDefined ( t ) || t && ! a . $eval ( t ) || g ( ) } ) ; y ( ) } ) ; h = d . scope = b ; h . $emit ( "$viewContentLoaded" ) ; h . $eval ( u ) } else y ( ) }
var h , l , p , t = b . autoscroll , u = b . onload || "" ; a . $on ( "$routeChangeSuccess" , v ) ; v ( ) } } } function z ( e , g , k ) { return { restrict : "ECA" , priority : - 400 , link : function ( a , c ) { var b = k . current , f = b . locals ; c . html ( f . $template ) ; var w = e ( c . contents ( ) ) ; b . controller && ( f . $scope = a , f = g ( b . controller , f ) , b . controllerAs && ( a [ b . controllerAs ] = f ) , c . data ( "$ngControllerController" , f ) , c . children ( ) . data ( "$ngControllerController" , f ) ) ; w ( a ) } } } n = e . module ( "ngRoute" , [ "ng" ] ) . provider ( "$route" , function ( ) { function s ( a , c ) { return e . extend ( new ( e . extend ( function ( ) { } ,
{ prototype : a } ) ) , c ) } function g ( a , e ) { var b = e . caseInsensitiveMatch , f = { originalPath : a , regexp : a } , k = f . keys = [ ] ; a = a . replace ( /([().])/g , "\\$1" ) . replace ( /(\/)?:(\w+)([\?\*])?/g , function ( a , e , b , c ) { a = "?" === c ? c : null ; c = "*" === c ? c : null ; k . push ( { name : b , optional : ! ! a } ) ; e = e || "" ; return "" + ( a ? "" : e ) + "(?:" + ( a ? e : "" ) + ( c && "(.+?)" || "([^/]+)" ) + ( a || "" ) + ")" + ( a || "" ) } ) . replace ( /([\/$\*])/g , "\\$1" ) ; f . regexp = RegExp ( "^" + a + "$" , b ? "i" : "" ) ; return f } var k = { } ; this . when = function ( a , c ) { k [ a ] = e . extend ( { reloadOnSearch : ! 0 } , c , a && g ( a , c ) ) ; if ( a ) { var b =
"/" == a [ a . length - 1 ] ? a . substr ( 0 , a . length - 1 ) : a + "/" ; k [ b ] = e . extend ( { redirectTo : a } , g ( b , c ) ) } return this } ; this . otherwise = function ( a ) { this . when ( null , a ) ; return this } ; this . $get = [ "$rootScope" , "$location" , "$routeParams" , "$q" , "$injector" , "$http" , "$templateCache" , "$sce" , function ( a , c , b , f , g , n , v , h ) { function l ( ) { var d = p ( ) , m = r . current ; if ( d && m && d . $$route === m . $$route && e . equals ( d . pathParams , m . pathParams ) && ! d . reloadOnSearch && ! u ) m . params = d . params , e . copy ( m . params , b ) , a . $broadcast ( "$routeUpdate" , m ) ; else if ( d || m ) u = ! 1 , a . $broadcast ( "$routeChangeStart" ,
d , m ) , ( r . current = d ) && d . redirectTo && ( e . isString ( d . redirectTo ) ? c . path ( t ( d . redirectTo , d . params ) ) . search ( d . params ) . replace ( ) : c . url ( d . redirectTo ( d . pathParams , c . path ( ) , c . search ( ) ) ) . replace ( ) ) , f . when ( d ) . then ( function ( ) { if ( d ) { var a = e . extend ( { } , d . resolve ) , c , b ; e . forEach ( a , function ( d , c ) { a [ c ] = e . isString ( d ) ? g . get ( d ) : g . invoke ( d ) } ) ; e . isDefined ( c = d . template ) ? e . isFunction ( c ) && ( c = c ( d . params ) ) : e . isDefined ( b = d . templateUrl ) && ( e . isFunction ( b ) && ( b = b ( d . params ) ) , b = h . getTrustedResourceUrl ( b ) , e . isDefined ( b ) && ( d . loadedTemplateUrl =
b , c = n . get ( b , { cache : v } ) . then ( function ( a ) { return a . data } ) ) ) ; e . isDefined ( c ) && ( a . $template = c ) ; return f . all ( a ) } } ) . then ( function ( c ) { d == r . current && ( d && ( d . locals = c , e . copy ( d . params , b ) ) , a . $broadcast ( "$routeChangeSuccess" , d , m ) ) } , function ( c ) { d == r . current && a . $broadcast ( "$routeChangeError" , d , m , c ) } ) } function p ( ) { var a , b ; e . forEach ( k , function ( f , k ) { var q ; if ( q = ! b ) { var g = c . path ( ) ; q = f . keys ; var l = { } ; if ( f . regexp ) if ( g = f . regexp . exec ( g ) ) { for ( var h = 1 , p = g . length ; h < p ; ++ h ) { var n = q [ h - 1 ] , r = "string" == typeof g [ h ] ? decodeURIComponent ( g [ h ] ) :
g [ h ] ; n && r && ( l [ n . name ] = r ) } q = l } else q = null ; else q = null ; q = a = q } q && ( b = s ( f , { params : e . extend ( { } , c . search ( ) , a ) , pathParams : a } ) , b . $$route = f ) } ) ; return b || k [ null ] && s ( k [ null ] , { params : { } , pathParams : { } } ) } function t ( a , c ) { var b = [ ] ; e . forEach ( ( a || "" ) . split ( ":" ) , function ( a , d ) { if ( 0 === d ) b . push ( a ) ; else { var e = a . match ( /(\w+)(.*)/ ) , f = e [ 1 ] ; b . push ( c [ f ] ) ; b . push ( e [ 2 ] || "" ) ; delete c [ f ] } } ) ; return b . join ( "" ) } var u = ! 1 , r = { routes : k , reload : function ( ) { u = ! 0 ; a . $evalAsync ( l ) } } ; a . $on ( "$locationChangeSuccess" , l ) ; return r } ] } ) ; n . provider ( "$routeParams" ,
function ( ) { this . $get = function ( ) { return { } } } ) ; n . directive ( "ngView" , x ) ; n . directive ( "ngView" , z ) ; x . $inject = [ "$route" , "$anchorScroll" , "$animate" ] ; z . $inject = [ "$compile" , "$controller" , "$route" ] } ) ( window , window . angular ) ;
2012-06-20 13:25:41 -07:00
// Underscore.js 1.3.1
// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
// Underscore is freely distributable under the MIT license.
// Portions of Underscore are inspired or borrowed from Prototype,
// Oliver Steele's Functional, and John Resig's Micro-Templating.
// For all details and documentation:
// http://documentcloud.github.com/underscore
( function ( ) { function q ( a , c , d ) { if ( a === c ) return a !== 0 || 1 / a == 1 / c ; if ( a == null || c == null ) return a === c ; if ( a . _chain ) a = a . _wrapped ; if ( c . _chain ) c = c . _wrapped ; if ( a . isEqual && b . isFunction ( a . isEqual ) ) return a . isEqual ( c ) ; if ( c . isEqual && b . isFunction ( c . isEqual ) ) return c . isEqual ( a ) ; var e = l . call ( a ) ; if ( e != l . call ( c ) ) return false ; switch ( e ) { case "[object String]" : return a == String ( c ) ; case "[object Number]" : return a != + a ? c != + c : a == 0 ? 1 / a == 1 / c : a == + c ; case "[object Date]" : case "[object Boolean]" : return + a == + c ; case "[object RegExp]" : return a . source ==
c . source && a . global == c . global && a . multiline == c . multiline && a . ignoreCase == c . ignoreCase } if ( typeof a != "object" || typeof c != "object" ) return false ; for ( var f = d . length ; f -- ; ) if ( d [ f ] == a ) return true ; d . push ( a ) ; var f = 0 , g = true ; if ( e == "[object Array]" ) { if ( f = a . length , g = f == c . length ) for ( ; f -- ; ) if ( ! ( g = f in a == f in c && q ( a [ f ] , c [ f ] , d ) ) ) break } else { if ( "constructor" in a != "constructor" in c || a . constructor != c . constructor ) return false ; for ( var h in a ) if ( b . has ( a , h ) && ( f ++ , ! ( g = b . has ( c , h ) && q ( a [ h ] , c [ h ] , d ) ) ) ) break ; if ( g ) { for ( h in c ) if ( b . has ( c ,
h ) && ! f -- ) break ; g = ! f } } d . pop ( ) ; return g } var r = this , G = r . _ , n = { } , k = Array . prototype , o = Object . prototype , i = k . slice , H = k . unshift , l = o . toString , I = o . hasOwnProperty , w = k . forEach , x = k . map , y = k . reduce , z = k . reduceRight , A = k . filter , B = k . every , C = k . some , p = k . indexOf , D = k . lastIndexOf , o = Array . isArray , J = Object . keys , s = Function . prototype . bind , b = function ( a ) { return new m ( a ) } ; if ( typeof exports !== "undefined" ) { if ( typeof module !== "undefined" && module . exports ) exports = module . exports = b ; exports . _ = b } else r . _ = b ; b . VERSION = "1.3.1" ; var j = b . each =
b . forEach = function ( a , c , d ) { if ( a != null ) if ( w && a . forEach === w ) a . forEach ( c , d ) ; else if ( a . length === + a . length ) for ( var e = 0 , f = a . length ; e < f ; e ++ ) { if ( e in a && c . call ( d , a [ e ] , e , a ) === n ) break } else for ( e in a ) if ( b . has ( a , e ) && c . call ( d , a [ e ] , e , a ) === n ) break } ; b . map = b . collect = function ( a , c , b ) { var e = [ ] ; if ( a == null ) return e ; if ( x && a . map === x ) return a . map ( c , b ) ; j ( a , function ( a , g , h ) { e [ e . length ] = c . call ( b , a , g , h ) } ) ; if ( a . length === + a . length ) e . length = a . length ; return e } ; b . reduce = b . foldl = b . inject = function ( a , c , d , e ) { var f = arguments . length > 2 ; a ==
null && ( a = [ ] ) ; if ( y && a . reduce === y ) return e && ( c = b . bind ( c , e ) ) , f ? a . reduce ( c , d ) : a . reduce ( c ) ; j ( a , function ( a , b , i ) { f ? d = c . call ( e , d , a , b , i ) : ( d = a , f = true ) } ) ; if ( ! f ) throw new TypeError ( "Reduce of empty array with no initial value" ) ; return d } ; b . reduceRight = b . foldr = function ( a , c , d , e ) { var f = arguments . length > 2 ; a == null && ( a = [ ] ) ; if ( z && a . reduceRight === z ) return e && ( c = b . bind ( c , e ) ) , f ? a . reduceRight ( c , d ) : a . reduceRight ( c ) ; var g = b . toArray ( a ) . reverse ( ) ; e && ! f && ( c = b . bind ( c , e ) ) ; return f ? b . reduce ( g , c , d , e ) : b . reduce ( g , c ) } ; b . find = b . detect =
function ( a , c , b ) { var e ; E ( a , function ( a , g , h ) { if ( c . call ( b , a , g , h ) ) return e = a , true } ) ; return e } ; b . filter = b . select = function ( a , c , b ) { var e = [ ] ; if ( a == null ) return e ; if ( A && a . filter === A ) return a . filter ( c , b ) ; j ( a , function ( a , g , h ) { c . call ( b , a , g , h ) && ( e [ e . length ] = a ) } ) ; return e } ; b . reject = function ( a , c , b ) { var e = [ ] ; if ( a == null ) return e ; j ( a , function ( a , g , h ) { c . call ( b , a , g , h ) || ( e [ e . length ] = a ) } ) ; return e } ; b . every = b . all = function ( a , c , b ) { var e = true ; if ( a == null ) return e ; if ( B && a . every === B ) return a . every ( c , b ) ; j ( a , function ( a , g , h ) { if ( ! ( e =
e && c . call ( b , a , g , h ) ) ) return n } ) ; return e } ; var E = b . some = b . any = function ( a , c , d ) { c || ( c = b . identity ) ; var e = false ; if ( a == null ) return e ; if ( C && a . some === C ) return a . some ( c , d ) ; j ( a , function ( a , b , h ) { if ( e || ( e = c . call ( d , a , b , h ) ) ) return n } ) ; return ! ! e } ; b . include = b . contains = function ( a , c ) { var b = false ; if ( a == null ) return b ; return p && a . indexOf === p ? a . indexOf ( c ) != - 1 : b = E ( a , function ( a ) { return a === c } ) } ; b . invoke = function ( a , c ) { var d = i . call ( arguments , 2 ) ; return b . map ( a , function ( a ) { return ( b . isFunction ( c ) ? c || a : a [ c ] ) . apply ( a , d ) } ) } ; b . pluck =
function ( a , c ) { return b . map ( a , function ( a ) { return a [ c ] } ) } ; b . max = function ( a , c , d ) { if ( ! c && b . isArray ( a ) ) return Math . max . apply ( Math , a ) ; if ( ! c && b . isEmpty ( a ) ) return - Infinity ; var e = { computed : - Infinity } ; j ( a , function ( a , b , h ) { b = c ? c . call ( d , a , b , h ) : a ; b >= e . computed && ( e = { value : a , computed : b } ) } ) ; return e . value } ; b . min = function ( a , c , d ) { if ( ! c && b . isArray ( a ) ) return Math . min . apply ( Math , a ) ; if ( ! c && b . isEmpty ( a ) ) return Infinity ; var e = { computed : Infinity } ; j ( a , function ( a , b , h ) { b = c ? c . call ( d , a , b , h ) : a ; b < e . computed && ( e = { value : a , computed : b } ) } ) ;
return e . value } ; b . shuffle = function ( a ) { var b = [ ] , d ; j ( a , function ( a , f ) { f == 0 ? b [ 0 ] = a : ( d = Math . floor ( Math . random ( ) * ( f + 1 ) ) , b [ f ] = b [ d ] , b [ d ] = a ) } ) ; return b } ; b . sortBy = function ( a , c , d ) { return b . pluck ( b . map ( a , function ( a , b , g ) { return { value : a , criteria : c . call ( d , a , b , g ) } } ) . sort ( function ( a , b ) { var c = a . criteria , d = b . criteria ; return c < d ? - 1 : c > d ? 1 : 0 } ) , "value" ) } ; b . groupBy = function ( a , c ) { var d = { } , e = b . isFunction ( c ) ? c : function ( a ) { return a [ c ] } ; j ( a , function ( a , b ) { var c = e ( a , b ) ; ( d [ c ] || ( d [ c ] = [ ] ) ) . push ( a ) } ) ; return d } ; b . sortedIndex = function ( a ,
c , d ) { d || ( d = b . identity ) ; for ( var e = 0 , f = a . length ; e < f ; ) { var g = e + f >> 1 ; d ( a [ g ] ) < d ( c ) ? e = g + 1 : f = g } return e } ; b . toArray = function ( a ) { return ! a ? [ ] : a . toArray ? a . toArray ( ) : b . isArray ( a ) ? i . call ( a ) : b . isArguments ( a ) ? i . call ( a ) : b . values ( a ) } ; b . size = function ( a ) { return b . toArray ( a ) . length } ; b . first = b . head = function ( a , b , d ) { return b != null && ! d ? i . call ( a , 0 , b ) : a [ 0 ] } ; b . initial = function ( a , b , d ) { return i . call ( a , 0 , a . length - ( b == null || d ? 1 : b ) ) } ; b . last = function ( a , b , d ) { return b != null && ! d ? i . call ( a , Math . max ( a . length - b , 0 ) ) : a [ a . length - 1 ] } ; b . rest =
b . tail = function ( a , b , d ) { return i . call ( a , b == null || d ? 1 : b ) } ; b . compact = function ( a ) { return b . filter ( a , function ( a ) { return ! ! a } ) } ; b . flatten = function ( a , c ) { return b . reduce ( a , function ( a , e ) { if ( b . isArray ( e ) ) return a . concat ( c ? e : b . flatten ( e ) ) ; a [ a . length ] = e ; return a } , [ ] ) } ; b . without = function ( a ) { return b . difference ( a , i . call ( arguments , 1 ) ) } ; b . uniq = b . unique = function ( a , c , d ) { var d = d ? b . map ( a , d ) : a , e = [ ] ; b . reduce ( d , function ( d , g , h ) { if ( 0 == h || ( c === true ? b . last ( d ) != g : ! b . include ( d , g ) ) ) d [ d . length ] = g , e [ e . length ] = a [ h ] ; return d } , [ ] ) ;
return e } ; b . union = function ( ) { return b . uniq ( b . flatten ( arguments , true ) ) } ; b . intersection = b . intersect = function ( a ) { var c = i . call ( arguments , 1 ) ; return b . filter ( b . uniq ( a ) , function ( a ) { return b . every ( c , function ( c ) { return b . indexOf ( c , a ) >= 0 } ) } ) } ; b . difference = function ( a ) { var c = b . flatten ( i . call ( arguments , 1 ) ) ; return b . filter ( a , function ( a ) { return ! b . include ( c , a ) } ) } ; b . zip = function ( ) { for ( var a = i . call ( arguments ) , c = b . max ( b . pluck ( a , "length" ) ) , d = Array ( c ) , e = 0 ; e < c ; e ++ ) d [ e ] = b . pluck ( a , "" + e ) ; return d } ; b . indexOf = function ( a , c ,
d ) { if ( a == null ) return - 1 ; var e ; if ( d ) return d = b . sortedIndex ( a , c ) , a [ d ] === c ? d : - 1 ; if ( p && a . indexOf === p ) return a . indexOf ( c ) ; for ( d = 0 , e = a . length ; d < e ; d ++ ) if ( d in a && a [ d ] === c ) return d ; return - 1 } ; b . lastIndexOf = function ( a , b ) { if ( a == null ) return - 1 ; if ( D && a . lastIndexOf === D ) return a . lastIndexOf ( b ) ; for ( var d = a . length ; d -- ; ) if ( d in a && a [ d ] === b ) return d ; return - 1 } ; b . range = function ( a , b , d ) { arguments . length <= 1 && ( b = a || 0 , a = 0 ) ; for ( var d = arguments [ 2 ] || 1 , e = Math . max ( Math . ceil ( ( b - a ) / d ) , 0 ) , f = 0 , g = Array ( e ) ; f < e ; ) g [ f ++ ] = a , a += d ; return g } ;
var F = function ( ) { } ; b . bind = function ( a , c ) { var d , e ; if ( a . bind === s && s ) return s . apply ( a , i . call ( arguments , 1 ) ) ; if ( ! b . isFunction ( a ) ) throw new TypeError ; e = i . call ( arguments , 2 ) ; return d = function ( ) { if ( ! ( this instanceof d ) ) return a . apply ( c , e . concat ( i . call ( arguments ) ) ) ; F . prototype = a . prototype ; var b = new F , g = a . apply ( b , e . concat ( i . call ( arguments ) ) ) ; return Object ( g ) === g ? g : b } } ; b . bindAll = function ( a ) { var c = i . call ( arguments , 1 ) ; c . length == 0 && ( c = b . functions ( a ) ) ; j ( c , function ( c ) { a [ c ] = b . bind ( a [ c ] , a ) } ) ; return a } ; b . memoize = function ( a ,
c ) { var d = { } ; c || ( c = b . identity ) ; return function ( ) { var e = c . apply ( this , arguments ) ; return b . has ( d , e ) ? d [ e ] : d [ e ] = a . apply ( this , arguments ) } } ; b . delay = function ( a , b ) { var d = i . call ( arguments , 2 ) ; return setTimeout ( function ( ) { return a . apply ( a , d ) } , b ) } ; b . defer = function ( a ) { return b . delay . apply ( b , [ a , 1 ] . concat ( i . call ( arguments , 1 ) ) ) } ; b . throttle = function ( a , c ) { var d , e , f , g , h , i = b . debounce ( function ( ) { h = g = false } , c ) ; return function ( ) { d = this ; e = arguments ; var b ; f || ( f = setTimeout ( function ( ) { f = null ; h && a . apply ( d , e ) ; i ( ) } , c ) ) ; g ? h = true :
a . apply ( d , e ) ; i ( ) ; g = true } } ; b . debounce = function ( a , b ) { var d ; return function ( ) { var e = this , f = arguments ; clearTimeout ( d ) ; d = setTimeout ( function ( ) { d = null ; a . apply ( e , f ) } , b ) } } ; b . once = function ( a ) { var b = false , d ; return function ( ) { if ( b ) return d ; b = true ; return d = a . apply ( this , arguments ) } } ; b . wrap = function ( a , b ) { return function ( ) { var d = [ a ] . concat ( i . call ( arguments , 0 ) ) ; return b . apply ( this , d ) } } ; b . compose = function ( ) { var a = arguments ; return function ( ) { for ( var b = arguments , d = a . length - 1 ; d >= 0 ; d -- ) b = [ a [ d ] . apply ( this , b ) ] ; return b [ 0 ] } } ;
b . after = function ( a , b ) { return a <= 0 ? b ( ) : function ( ) { if ( -- a < 1 ) return b . apply ( this , arguments ) } } ; b . keys = J || function ( a ) { if ( a !== Object ( a ) ) throw new TypeError ( "Invalid object" ) ; var c = [ ] , d ; for ( d in a ) b . has ( a , d ) && ( c [ c . length ] = d ) ; return c } ; b . values = function ( a ) { return b . map ( a , b . identity ) } ; b . functions = b . methods = function ( a ) { var c = [ ] , d ; for ( d in a ) b . isFunction ( a [ d ] ) && c . push ( d ) ; return c . sort ( ) } ; b . extend = function ( a ) { j ( i . call ( arguments , 1 ) , function ( b ) { for ( var d in b ) a [ d ] = b [ d ] } ) ; return a } ; b . defaults = function ( a ) { j ( i . call ( arguments ,
1 ) , function ( b ) { for ( var d in b ) a [ d ] == null && ( a [ d ] = b [ d ] ) } ) ; return a } ; b . clone = function ( a ) { return ! b . isObject ( a ) ? a : b . isArray ( a ) ? a . slice ( ) : b . extend ( { } , a ) } ; b . tap = function ( a , b ) { b ( a ) ; return a } ; b . isEqual = function ( a , b ) { return q ( a , b , [ ] ) } ; b . isEmpty = function ( a ) { if ( b . isArray ( a ) || b . isString ( a ) ) return a . length === 0 ; for ( var c in a ) if ( b . has ( a , c ) ) return false ; return true } ; b . isElement = function ( a ) { return ! ! ( a && a . nodeType == 1 ) } ; b . isArray = o || function ( a ) { return l . call ( a ) == "[object Array]" } ; b . isObject = function ( a ) { return a === Object ( a ) } ;
b . isArguments = function ( a ) { return l . call ( a ) == "[object Arguments]" } ; if ( ! b . isArguments ( arguments ) ) b . isArguments = function ( a ) { return ! ( ! a || ! b . has ( a , "callee" ) ) } ; b . isFunction = function ( a ) { return l . call ( a ) == "[object Function]" } ; b . isString = function ( a ) { return l . call ( a ) == "[object String]" } ; b . isNumber = function ( a ) { return l . call ( a ) == "[object Number]" } ; b . isNaN = function ( a ) { return a !== a } ; b . isBoolean = function ( a ) { return a === true || a === false || l . call ( a ) == "[object Boolean]" } ; b . isDate = function ( a ) { return l . call ( a ) == "[object Date]" } ;
b . isRegExp = function ( a ) { return l . call ( a ) == "[object RegExp]" } ; b . isNull = function ( a ) { return a === null } ; b . isUndefined = function ( a ) { return a === void 0 } ; b . has = function ( a , b ) { return I . call ( a , b ) } ; b . noConflict = function ( ) { r . _ = G ; return this } ; b . identity = function ( a ) { return a } ; b . times = function ( a , b , d ) { for ( var e = 0 ; e < a ; e ++ ) b . call ( d , e ) } ; b . escape = function ( a ) { return ( "" + a ) . replace ( /&/g , "&" ) . replace ( /</g , "<" ) . replace ( />/g , ">" ) . replace ( /"/g , """ ) . replace ( /'/g , "'" ) . replace ( /\//g , "/" ) } ; b . mixin = function ( a ) { j ( b . functions ( a ) ,
function ( c ) { K ( c , b [ c ] = a [ c ] ) } ) } ; var L = 0 ; b . uniqueId = function ( a ) { var b = L ++ ; return a ? a + b : b } ; b . templateSettings = { evaluate : /<%([\s\S]+?)%>/g , interpolate : /<%=([\s\S]+?)%>/g , escape : /<%-([\s\S]+?)%>/g } ; var t = /.^/ , u = function ( a ) { return a . replace ( /\\\\/g , "\\" ) . replace ( /\\'/g , "'" ) } ; b . template = function ( a , c ) { var d = b . templateSettings , d = "var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('" + a . replace ( /\\/g , "\\\\" ) . replace ( /'/g , "\\'" ) . replace ( d . escape || t , function ( a , b ) { return "',_.escape(" +
u ( b ) + "),'" } ) . replace ( d . interpolate || t , function ( a , b ) { return "'," + u ( b ) + ",'" } ) . replace ( d . evaluate || t , function ( a , b ) { return "');" + u ( b ) . replace ( /[\r\n\t]/g , " " ) + ";__p.push('" } ) . replace ( /\r/g , "\\r" ) . replace ( /\n/g , "\\n" ) . replace ( /\t/g , "\\t" ) + "');}return __p.join('');" , e = new Function ( "obj" , "_" , d ) ; return c ? e ( c , b ) : function ( a ) { return e . call ( this , a , b ) } } ; b . chain = function ( a ) { return b ( a ) . chain ( ) } ; var m = function ( a ) { this . _wrapped = a } ; b . prototype = m . prototype ; var v = function ( a , c ) { return c ? b ( a ) . chain ( ) : a } , K = function ( a , c ) { m . prototype [ a ] =
function ( ) { var a = i . call ( arguments ) ; H . call ( a , this . _wrapped ) ; return v ( c . apply ( b , a ) , this . _chain ) } } ; b . mixin ( b ) ; j ( "pop,push,reverse,shift,sort,splice,unshift" . split ( "," ) , function ( a ) { var b = k [ a ] ; m . prototype [ a ] = function ( ) { var d = this . _wrapped ; b . apply ( d , arguments ) ; var e = d . length ; ( a == "shift" || a == "splice" ) && e === 0 && delete d [ 0 ] ; return v ( d , this . _chain ) } } ) ; j ( [ "concat" , "join" , "slice" ] , function ( a ) { var b = k [ a ] ; m . prototype [ a ] = function ( ) { return v ( b . apply ( this . _wrapped , arguments ) , this . _chain ) } } ) ; m . prototype . chain = function ( ) { this . _chain =
true ; return this } ; m . prototype . value = function ( ) { return this . _wrapped } } ) . call ( this ) ;
var JSON ; if ( ! JSON ) { JSON = { } ; }
( function ( ) { "use strict" ; function f ( n ) { return n < 10 ? '0' + n : n ; }
if ( typeof Date . prototype . toJSON !== 'function' ) { Date . prototype . toJSON = function ( key ) { return isFinite ( this . valueOf ( ) ) ? this . getUTCFullYear ( ) + '-' +
f ( this . getUTCMonth ( ) + 1 ) + '-' +
f ( this . getUTCDate ( ) ) + 'T' +
f ( this . getUTCHours ( ) ) + ':' +
f ( this . getUTCMinutes ( ) ) + ':' +
f ( this . getUTCSeconds ( ) ) + 'Z' : null ; } ; String . prototype . toJSON = Number . prototype . toJSON = Boolean . prototype . toJSON = function ( key ) { return this . valueOf ( ) ; } ; }
var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g , escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g , gap , indent , meta = { '\b' : '\\b' , '\t' : '\\t' , '\n' : '\\n' , '\f' : '\\f' , '\r' : '\\r' , '"' : '\\"' , '\\' : '\\\\' } , rep ; function quote ( string ) { escapable . lastIndex = 0 ; return escapable . test ( string ) ? '"' + string . replace ( escapable , function ( a ) { var c = meta [ a ] ; return typeof c === 'string' ? c : '\\u' + ( '0000' + a . charCodeAt ( 0 ) . toString ( 16 ) ) . slice ( - 4 ) ; } ) + '"' : '"' + string + '"' ; }
function str ( key , holder ) { var i , k , v , length , mind = gap , partial , value = holder [ key ] ; if ( value && typeof value === 'object' && typeof value . toJSON === 'function' ) { value = value . toJSON ( key ) ; }
if ( typeof rep === 'function' ) { value = rep . call ( holder , key , value ) ; }
switch ( typeof value ) { case 'string' : return quote ( value ) ; case 'number' : return isFinite ( value ) ? String ( value ) : 'null' ; case 'boolean' : case 'null' : return String ( value ) ; case 'object' : if ( ! value ) { return 'null' ; }
gap += indent ; partial = [ ] ; if ( Object . prototype . toString . apply ( value ) === '[object Array]' ) { length = value . length ; for ( i = 0 ; i < length ; i += 1 ) { partial [ i ] = str ( i , value ) || 'null' ; }
v = partial . length === 0 ? '[]' : gap ? '[\n' + gap + partial . join ( ',\n' + gap ) + '\n' + mind + ']' : '[' + partial . join ( ',' ) + ']' ; gap = mind ; return v ; }
if ( rep && typeof rep === 'object' ) { length = rep . length ; for ( i = 0 ; i < length ; i += 1 ) { if ( typeof rep [ i ] === 'string' ) { k = rep [ i ] ; v = str ( k , value ) ; if ( v ) { partial . push ( quote ( k ) + ( gap ? ': ' : ':' ) + v ) ; } } } } else { for ( k in value ) { if ( Object . prototype . hasOwnProperty . call ( value , k ) ) { v = str ( k , value ) ; if ( v ) { partial . push ( quote ( k ) + ( gap ? ': ' : ':' ) + v ) ; } } } }
v = partial . length === 0 ? '{}' : gap ? '{\n' + gap + partial . join ( ',\n' + gap ) + '\n' + mind + '}' : '{' + partial . join ( ',' ) + '}' ; gap = mind ; return v ; } }
if ( typeof JSON . stringify !== 'function' ) { JSON . stringify = function ( value , replacer , space ) { var i ; gap = '' ; indent = '' ; if ( typeof space === 'number' ) { for ( i = 0 ; i < space ; i += 1 ) { indent += ' ' ; } } else if ( typeof space === 'string' ) { indent = space ; }
rep = replacer ; if ( replacer && typeof replacer !== 'function' && ( typeof replacer !== 'object' || typeof replacer . length !== 'number' ) ) { throw new Error ( 'JSON.stringify' ) ; }
return str ( '' , { '' : value } ) ; } ; }
if ( typeof JSON . parse !== 'function' ) { JSON . parse = function ( text , reviver ) { var j ; function walk ( holder , key ) { var k , v , value = holder [ key ] ; if ( value && typeof value === 'object' ) { for ( k in value ) { if ( Object . prototype . hasOwnProperty . call ( value , k ) ) { v = walk ( value , k ) ; if ( v !== undefined ) { value [ k ] = v ; } else { delete value [ k ] ; } } } }
return reviver . call ( holder , key , value ) ; }
text = String ( text ) ; cx . lastIndex = 0 ; if ( cx . test ( text ) ) { text = text . replace ( cx , function ( a ) { return '\\u' +
( '0000' + a . charCodeAt ( 0 ) . toString ( 16 ) ) . slice ( - 4 ) ; } ) ; }
if ( /^[\],:{}\s]*$/ . test ( text . replace ( /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g , '@' ) . replace ( /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g , ']' ) . replace ( /(?:^|:|,)(?:\s*\[)+/g , '' ) ) ) { j = eval ( '(' + text + ')' ) ; return typeof reviver === 'function' ? walk ( { '' : j } , '' ) : j ; }
throw new SyntaxError ( 'JSON.parse' ) ; } ; } } ( ) ) ;
2012-07-18 08:35:52 -07:00
// Backbone.js 0.9.2
2012-06-20 13:25:41 -07:00
// (c) 2010-2012 Jeremy Ashkenas, DocumentCloud Inc.
// Backbone may be freely distributed under the MIT license.
// For all details and documentation:
// http://backbonejs.org
2012-07-18 08:35:52 -07:00
( function ( ) { var l = this , y = l . Backbone , z = Array . prototype . slice , A = Array . prototype . splice , g ; g = "undefined" !== typeof exports ? exports : l . Backbone = { } ; g . VERSION = "0.9.2" ; var f = l . _ ; ! f && "undefined" !== typeof require && ( f = require ( "underscore" ) ) ; var i = l . jQuery || l . Zepto || l . ender ; g . setDomLibrary = function ( a ) { i = a } ; g . noConflict = function ( ) { l . Backbone = y ; return this } ; g . emulateHTTP = ! 1 ; g . emulateJSON = ! 1 ; var p = /\s+/ , k = g . Events = { on : function ( a , b , c ) { var d , e , f , g , j ; if ( ! b ) return this ; a = a . split ( p ) ; for ( d = this . _callbacks || ( this . _callbacks =
{ } ) ; e = a . shift ( ) ; ) f = ( j = d [ e ] ) ? j . tail : { } , f . next = g = { } , f . context = c , f . callback = b , d [ e ] = { tail : g , next : j ? j . next : f } ; return this } , off : function ( a , b , c ) { var d , e , h , g , j , q ; if ( e = this . _callbacks ) { if ( ! a && ! b && ! c ) return delete this . _callbacks , this ; for ( a = a ? a . split ( p ) : f . keys ( e ) ; d = a . shift ( ) ; ) if ( h = e [ d ] , delete e [ d ] , h && ( b || c ) ) for ( g = h . tail ; ( h = h . next ) !== g ; ) if ( j = h . callback , q = h . context , b && j !== b || c && q !== c ) this . on ( d , j , q ) ; return this } } , trigger : function ( a ) { var b , c , d , e , f , g ; if ( ! ( d = this . _callbacks ) ) return this ; f = d . all ; a = a . split ( p ) ; for ( g =
z . call ( arguments , 1 ) ; b = a . shift ( ) ; ) { if ( c = d [ b ] ) for ( e = c . tail ; ( c = c . next ) !== e ; ) c . callback . apply ( c . context || this , g ) ; if ( c = f ) { e = c . tail ; for ( b = [ b ] . concat ( g ) ; ( c = c . next ) !== e ; ) c . callback . apply ( c . context || this , b ) } } return this } } ; k . bind = k . on ; k . unbind = k . off ; var o = g . Model = function ( a , b ) { var c ; a || ( a = { } ) ; b && b . parse && ( a = this . parse ( a ) ) ; if ( c = n ( this , "defaults" ) ) a = f . extend ( { } , c , a ) ; b && b . collection && ( this . collection = b . collection ) ; this . attributes = { } ; this . _escapedAttributes = { } ; this . cid = f . uniqueId ( "c" ) ; this . changed = { } ; this . _silent =
{ } ; this . _pending = { } ; this . set ( a , { silent : ! 0 } ) ; this . changed = { } ; this . _silent = { } ; this . _pending = { } ; this . _previousAttributes = f . clone ( this . attributes ) ; this . initialize . apply ( this , arguments ) } ; f . extend ( o . prototype , k , { changed : null , _silent : null , _pending : null , idAttribute : "id" , initialize : function ( ) { } , toJSON : function ( ) { return f . clone ( this . attributes ) } , get : function ( a ) { return this . attributes [ a ] } , escape : function ( a ) { var b ; if ( b = this . _escapedAttributes [ a ] ) return b ; b = this . get ( a ) ; return this . _escapedAttributes [ a ] = f . escape ( null ==
b ? "" : "" + b ) } , has : function ( a ) { return null != this . get ( a ) } , set : function ( a , b , c ) { var d , e ; f . isObject ( a ) || null == a ? ( d = a , c = b ) : ( d = { } , d [ a ] = b ) ; c || ( c = { } ) ; if ( ! d ) return this ; d instanceof o && ( d = d . attributes ) ; if ( c . unset ) for ( e in d ) d [ e ] = void 0 ; if ( ! this . _validate ( d , c ) ) return ! 1 ; this . idAttribute in d && ( this . id = d [ this . idAttribute ] ) ; var b = c . changes = { } , h = this . attributes , g = this . _escapedAttributes , j = this . _previousAttributes || { } ; for ( e in d ) { a = d [ e ] ; if ( ! f . isEqual ( h [ e ] , a ) || c . unset && f . has ( h , e ) ) delete g [ e ] , ( c . silent ? this . _silent :
b ) [ e ] = ! 0 ; c . unset ? delete h [ e ] : h [ e ] = a ; ! f . isEqual ( j [ e ] , a ) || f . has ( h , e ) != f . has ( j , e ) ? ( this . changed [ e ] = a , c . silent || ( this . _pending [ e ] = ! 0 ) ) : ( delete this . changed [ e ] , delete this . _pending [ e ] ) } c . silent || this . change ( c ) ; return this } , unset : function ( a , b ) { ( b || ( b = { } ) ) . unset = ! 0 ; return this . set ( a , null , b ) } , clear : function ( a ) { ( a || ( a = { } ) ) . unset = ! 0 ; return this . set ( f . clone ( this . attributes ) , a ) } , fetch : function ( a ) { var a = a ? f . clone ( a ) : { } , b = this , c = a . success ; a . success = function ( d , e , f ) { if ( ! b . set ( b . parse ( d , f ) , a ) ) return ! 1 ; c && c ( b , d ) } ;
a . error = g . wrapError ( a . error , b , a ) ; return ( this . sync || g . sync ) . call ( this , "read" , this , a ) } , save : function ( a , b , c ) { var d , e ; f . isObject ( a ) || null == a ? ( d = a , c = b ) : ( d = { } , d [ a ] = b ) ; c = c ? f . clone ( c ) : { } ; if ( c . wait ) { if ( ! this . _validate ( d , c ) ) return ! 1 ; e = f . clone ( this . attributes ) } a = f . extend ( { } , c , { silent : ! 0 } ) ; if ( d && ! this . set ( d , c . wait ? a : c ) ) return ! 1 ; var h = this , i = c . success ; c . success = function ( a , b , e ) { b = h . parse ( a , e ) ; if ( c . wait ) { delete c . wait ; b = f . extend ( d || { } , b ) } if ( ! h . set ( b , c ) ) return false ; i ? i ( h , a ) : h . trigger ( "sync" , h , a , c ) } ; c . error = g . wrapError ( c . error ,
h , c ) ; b = this . isNew ( ) ? "create" : "update" ; b = ( this . sync || g . sync ) . call ( this , b , this , c ) ; c . wait && this . set ( e , a ) ; return b } , destroy : function ( a ) { var a = a ? f . clone ( a ) : { } , b = this , c = a . success , d = function ( ) { b . trigger ( "destroy" , b , b . collection , a ) } ; if ( this . isNew ( ) ) return d ( ) , ! 1 ; a . success = function ( e ) { a . wait && d ( ) ; c ? c ( b , e ) : b . trigger ( "sync" , b , e , a ) } ; a . error = g . wrapError ( a . error , b , a ) ; var e = ( this . sync || g . sync ) . call ( this , "delete" , this , a ) ; a . wait || d ( ) ; return e } , url : function ( ) { var a = n ( this , "urlRoot" ) || n ( this . collection , "url" ) || t ( ) ;
return this . isNew ( ) ? a : a + ( "/" == a . charAt ( a . length - 1 ) ? "" : "/" ) + encodeURIComponent ( this . id ) } , parse : function ( a ) { return a } , clone : function ( ) { return new this . constructor ( this . attributes ) } , isNew : function ( ) { return null == this . id } , change : function ( a ) { a || ( a = { } ) ; var b = this . _changing ; this . _changing = ! 0 ; for ( var c in this . _silent ) this . _pending [ c ] = ! 0 ; var d = f . extend ( { } , a . changes , this . _silent ) ; this . _silent = { } ; for ( c in d ) this . trigger ( "change:" + c , this , this . get ( c ) , a ) ; if ( b ) return this ; for ( ; ! f . isEmpty ( this . _pending ) ; ) { this . _pending =
{ } ; this . trigger ( "change" , this , a ) ; for ( c in this . changed ) ! this . _pending [ c ] && ! this . _silent [ c ] && delete this . changed [ c ] ; this . _previousAttributes = f . clone ( this . attributes ) } this . _changing = ! 1 ; return this } , hasChanged : function ( a ) { return ! arguments . length ? ! f . isEmpty ( this . changed ) : f . has ( this . changed , a ) } , changedAttributes : function ( a ) { if ( ! a ) return this . hasChanged ( ) ? f . clone ( this . changed ) : ! 1 ; var b , c = ! 1 , d = this . _previousAttributes , e ; for ( e in a ) if ( ! f . isEqual ( d [ e ] , b = a [ e ] ) ) ( c || ( c = { } ) ) [ e ] = b ; return c } , previous : function ( a ) { return ! arguments . length ||
! this . _previousAttributes ? null : this . _previousAttributes [ a ] } , previousAttributes : function ( ) { return f . clone ( this . _previousAttributes ) } , isValid : function ( ) { return ! this . validate ( this . attributes ) } , _validate : function ( a , b ) { if ( b . silent || ! this . validate ) return ! 0 ; var a = f . extend ( { } , this . attributes , a ) , c = this . validate ( a , b ) ; if ( ! c ) return ! 0 ; b && b . error ? b . error ( this , c , b ) : this . trigger ( "error" , this , c , b ) ; return ! 1 } } ) ; var r = g . Collection = function ( a , b ) { b || ( b = { } ) ; b . model && ( this . model = b . model ) ; b . comparator && ( this . comparator = b . comparator ) ;
this . _reset ( ) ; this . initialize . apply ( this , arguments ) ; a && this . reset ( a , { silent : ! 0 , parse : b . parse } ) } ; f . extend ( r . prototype , k , { model : o , initialize : function ( ) { } , toJSON : function ( a ) { return this . map ( function ( b ) { return b . toJSON ( a ) } ) } , add : function ( a , b ) { var c , d , e , g , i , j = { } , k = { } , l = [ ] ; b || ( b = { } ) ; a = f . isArray ( a ) ? a . slice ( ) : [ a ] ; c = 0 ; for ( d = a . length ; c < d ; c ++ ) { if ( ! ( e = a [ c ] = this . _prepareModel ( a [ c ] , b ) ) ) throw Error ( "Can't add an invalid model to a collection" ) ; g = e . cid ; i = e . id ; j [ g ] || this . _byCid [ g ] || null != i && ( k [ i ] || this . _byId [ i ] ) ?
l . push ( c ) : j [ g ] = k [ i ] = e } for ( c = l . length ; c -- ; ) a . splice ( l [ c ] , 1 ) ; c = 0 ; for ( d = a . length ; c < d ; c ++ ) ( e = a [ c ] ) . on ( "all" , this . _onModelEvent , this ) , this . _byCid [ e . cid ] = e , null != e . id && ( this . _byId [ e . id ] = e ) ; this . length += d ; A . apply ( this . models , [ null != b . at ? b . at : this . models . length , 0 ] . concat ( a ) ) ; this . comparator && this . sort ( { silent : ! 0 } ) ; if ( b . silent ) return this ; c = 0 ; for ( d = this . models . length ; c < d ; c ++ ) if ( j [ ( e = this . models [ c ] ) . cid ] ) b . index = c , e . trigger ( "add" , e , this , b ) ; return this } , remove : function ( a , b ) { var c , d , e , g ; b || ( b = { } ) ; a = f . isArray ( a ) ?
a . slice ( ) : [ a ] ; c = 0 ; for ( d = a . length ; c < d ; c ++ ) if ( g = this . getByCid ( a [ c ] ) || this . get ( a [ c ] ) ) delete this . _byId [ g . id ] , delete this . _byCid [ g . cid ] , e = this . indexOf ( g ) , this . models . splice ( e , 1 ) , this . length -- , b . silent || ( b . index = e , g . trigger ( "remove" , g , this , b ) ) , this . _removeReference ( g ) ; return this } , push : function ( a , b ) { a = this . _prepareModel ( a , b ) ; this . add ( a , b ) ; return a } , pop : function ( a ) { var b = this . at ( this . length - 1 ) ; this . remove ( b , a ) ; return b } , unshift : function ( a , b ) { a = this . _prepareModel ( a , b ) ; this . add ( a , f . extend ( { at : 0 } , b ) ) ; return a } ,
shift : function ( a ) { var b = this . at ( 0 ) ; this . remove ( b , a ) ; return b } , get : function ( a ) { return null == a ? void 0 : this . _byId [ null != a . id ? a . id : a ] } , getByCid : function ( a ) { return a && this . _byCid [ a . cid || a ] } , at : function ( a ) { return this . models [ a ] } , where : function ( a ) { return f . isEmpty ( a ) ? [ ] : this . filter ( function ( b ) { for ( var c in a ) if ( a [ c ] !== b . get ( c ) ) return ! 1 ; return ! 0 } ) } , sort : function ( a ) { a || ( a = { } ) ; if ( ! this . comparator ) throw Error ( "Cannot sort a set without a comparator" ) ; var b = f . bind ( this . comparator , this ) ; 1 == this . comparator . length ?
this . models = this . sortBy ( b ) : this . models . sort ( b ) ; a . silent || this . trigger ( "reset" , this , a ) ; return this } , pluck : function ( a ) { return f . map ( this . models , function ( b ) { return b . get ( a ) } ) } , reset : function ( a , b ) { a || ( a = [ ] ) ; b || ( b = { } ) ; for ( var c = 0 , d = this . models . length ; c < d ; c ++ ) this . _removeReference ( this . models [ c ] ) ; this . _reset ( ) ; this . add ( a , f . extend ( { silent : ! 0 } , b ) ) ; b . silent || this . trigger ( "reset" , this , b ) ; return this } , fetch : function ( a ) { a = a ? f . clone ( a ) : { } ; void 0 === a . parse && ( a . parse = ! 0 ) ; var b = this , c = a . success ; a . success = function ( d ,
e , f ) { b [ a . add ? "add" : "reset" ] ( b . parse ( d , f ) , a ) ; c && c ( b , d ) } ; a . error = g . wrapError ( a . error , b , a ) ; return ( this . sync || g . sync ) . call ( this , "read" , this , a ) } , create : function ( a , b ) { var c = this , b = b ? f . clone ( b ) : { } , a = this . _prepareModel ( a , b ) ; if ( ! a ) return ! 1 ; b . wait || c . add ( a , b ) ; var d = b . success ; b . success = function ( e , f ) { b . wait && c . add ( e , b ) ; d ? d ( e , f ) : e . trigger ( "sync" , a , f , b ) } ; a . save ( null , b ) ; return a } , parse : function ( a ) { return a } , chain : function ( ) { return f ( this . models ) . chain ( ) } , _reset : function ( ) { this . length = 0 ; this . models = [ ] ; this . _byId =
{ } ; this . _byCid = { } } , _prepareModel : function ( a , b ) { b || ( b = { } ) ; a instanceof o ? a . collection || ( a . collection = this ) : ( b . collection = this , a = new this . model ( a , b ) , a . _validate ( a . attributes , b ) || ( a = ! 1 ) ) ; return a } , _removeReference : function ( a ) { this == a . collection && delete a . collection ; a . off ( "all" , this . _onModelEvent , this ) } , _onModelEvent : function ( a , b , c , d ) { ( "add" == a || "remove" == a ) && c != this || ( "destroy" == a && this . remove ( b , d ) , b && a === "change:" + b . idAttribute && ( delete this . _byId [ b . previous ( b . idAttribute ) ] , this . _byId [ b . id ] = b ) , this . trigger . apply ( this ,
arguments ) ) } } ) ; f . each ( "forEach,each,map,reduce,reduceRight,find,detect,filter,select,reject,every,all,some,any,include,contains,invoke,max,min,sortBy,sortedIndex,toArray,size,first,initial,rest,last,without,indexOf,shuffle,lastIndexOf,isEmpty,groupBy" . split ( "," ) , function ( a ) { r . prototype [ a ] = function ( ) { return f [ a ] . apply ( f , [ this . models ] . concat ( f . toArray ( arguments ) ) ) } } ) ; var u = g . Router = function ( a ) { a || ( a = { } ) ; a . routes && ( this . routes = a . routes ) ; this . _bindRoutes ( ) ; this . initialize . apply ( this , arguments ) } , B = /:\w+/g ,
C = /\*\w+/g , D = /[-[\]{}()+?.,\\^$|#\s]/g ; f . extend ( u . prototype , k , { initialize : function ( ) { } , route : function ( a , b , c ) { g . history || ( g . history = new m ) ; f . isRegExp ( a ) || ( a = this . _routeToRegExp ( a ) ) ; c || ( c = this [ b ] ) ; g . history . route ( a , f . bind ( function ( d ) { d = this . _extractParameters ( a , d ) ; c && c . apply ( this , d ) ; this . trigger . apply ( this , [ "route:" + b ] . concat ( d ) ) ; g . history . trigger ( "route" , this , b , d ) } , this ) ) ; return this } , navigate : function ( a , b ) { g . history . navigate ( a , b ) } , _bindRoutes : function ( ) { if ( this . routes ) { var a = [ ] , b ; for ( b in this . routes ) a . unshift ( [ b ,
this . routes [ b ] ] ) ; b = 0 ; for ( var c = a . length ; b < c ; b ++ ) this . route ( a [ b ] [ 0 ] , a [ b ] [ 1 ] , this [ a [ b ] [ 1 ] ] ) } } , _routeToRegExp : function ( a ) { a = a . replace ( D , "\\$&" ) . replace ( B , "([^/]+)" ) . replace ( C , "(.*?)" ) ; return RegExp ( "^" + a + "$" ) } , _extractParameters : function ( a , b ) { return a . exec ( b ) . slice ( 1 ) } } ) ; var m = g . History = function ( ) { this . handlers = [ ] ; f . bindAll ( this , "checkUrl" ) } , s = /^[#\/]/ , E = /msie [\w.]+/ ; m . started = ! 1 ; f . extend ( m . prototype , k , { interval : 50 , getHash : function ( a ) { return ( a = ( a ? a . location : window . location ) . href . match ( /#(.*)$/ ) ) ? a [ 1 ] :
"" } , getFragment : function ( a , b ) { if ( null == a ) if ( this . _hasPushState || b ) { var a = window . location . pathname , c = window . location . search ; c && ( a += c ) } else a = this . getHash ( ) ; a . indexOf ( this . options . root ) || ( a = a . substr ( this . options . root . length ) ) ; return a . replace ( s , "" ) } , start : function ( a ) { if ( m . started ) throw Error ( "Backbone.history has already been started" ) ; m . started = ! 0 ; this . options = f . extend ( { } , { root : "/" } , this . options , a ) ; this . _wantsHashChange = ! 1 !== this . options . hashChange ; this . _wantsPushState = ! ! this . options . pushState ; this . _hasPushState =
! ( ! this . options . pushState || ! window . history || ! window . history . pushState ) ; var a = this . getFragment ( ) , b = document . documentMode ; if ( b = E . exec ( navigator . userAgent . toLowerCase ( ) ) && ( ! b || 7 >= b ) ) this . iframe = i ( '<iframe src="javascript:0" tabindex="-1" />' ) . hide ( ) . appendTo ( "body" ) [ 0 ] . contentWindow , this . navigate ( a ) ; this . _hasPushState ? i ( window ) . bind ( "popstate" , this . checkUrl ) : this . _wantsHashChange && "onhashchange" in window && ! b ? i ( window ) . bind ( "hashchange" , this . checkUrl ) : this . _wantsHashChange && ( this . _checkUrlInterval = setInterval ( this . checkUrl ,
this . interval ) ) ; this . fragment = a ; a = window . location ; b = a . pathname == this . options . root ; if ( this . _wantsHashChange && this . _wantsPushState && ! this . _hasPushState && ! b ) return this . fragment = this . getFragment ( null , ! 0 ) , window . location . replace ( this . options . root + "#" + this . fragment ) , ! 0 ; this . _wantsPushState && this . _hasPushState && b && a . hash && ( this . fragment = this . getHash ( ) . replace ( s , "" ) , window . history . replaceState ( { } , document . title , a . protocol + "//" + a . host + this . options . root + this . fragment ) ) ; if ( ! this . options . silent ) return this . loadUrl ( ) } ,
stop : function ( ) { i ( window ) . unbind ( "popstate" , this . checkUrl ) . unbind ( "hashchange" , this . checkUrl ) ; clearInterval ( this . _checkUrlInterval ) ; m . started = ! 1 } , route : function ( a , b ) { this . handlers . unshift ( { route : a , callback : b } ) } , checkUrl : function ( ) { var a = this . getFragment ( ) ; a == this . fragment && this . iframe && ( a = this . getFragment ( this . getHash ( this . iframe ) ) ) ; if ( a == this . fragment ) return ! 1 ; this . iframe && this . navigate ( a ) ; this . loadUrl ( ) || this . loadUrl ( this . getHash ( ) ) } , loadUrl : function ( a ) { var b = this . fragment = this . getFragment ( a ) ; return f . any ( this . handlers ,
function ( a ) { if ( a . route . test ( b ) ) return a . callback ( b ) , ! 0 } ) } , navigate : function ( a , b ) { if ( ! m . started ) return ! 1 ; if ( ! b || ! 0 === b ) b = { trigger : b } ; var c = ( a || "" ) . replace ( s , "" ) ; this . fragment != c && ( this . _hasPushState ? ( 0 != c . indexOf ( this . options . root ) && ( c = this . options . root + c ) , this . fragment = c , window . history [ b . replace ? "replaceState" : "pushState" ] ( { } , document . title , c ) ) : this . _wantsHashChange ? ( this . fragment = c , this . _updateHash ( window . location , c , b . replace ) , this . iframe && c != this . getFragment ( this . getHash ( this . iframe ) ) && ( b . replace ||
this . iframe . document . open ( ) . close ( ) , this . _updateHash ( this . iframe . location , c , b . replace ) ) ) : window . location . assign ( this . options . root + a ) , b . trigger && this . loadUrl ( a ) ) } , _updateHash : function ( a , b , c ) { c ? a . replace ( a . toString ( ) . replace ( /(javascript:|#).*$/ , "" ) + "#" + b ) : a . hash = b } } ) ; var v = g . View = function ( a ) { this . cid = f . uniqueId ( "view" ) ; this . _configure ( a || { } ) ; this . _ensureElement ( ) ; this . initialize . apply ( this , arguments ) ; this . delegateEvents ( ) } , F = /^(\S+)\s*(.*)$/ , w = "model,collection,el,id,attributes,className,tagName" . split ( "," ) ;
f . extend ( v . prototype , k , { tagName : "div" , $ : function ( a ) { return this . $el . find ( a ) } , initialize : function ( ) { } , render : function ( ) { return this } , remove : function ( ) { this . $el . remove ( ) ; return this } , make : function ( a , b , c ) { a = document . createElement ( a ) ; b && i ( a ) . attr ( b ) ; c && i ( a ) . html ( c ) ; return a } , setElement : function ( a , b ) { this . $el && this . undelegateEvents ( ) ; this . $el = a instanceof i ? a : i ( a ) ; this . el = this . $el [ 0 ] ; ! 1 !== b && this . delegateEvents ( ) ; return this } , delegateEvents : function ( a ) { if ( a || ( a = n ( this , "events" ) ) ) { this . undelegateEvents ( ) ;
for ( var b in a ) { var c = a [ b ] ; f . isFunction ( c ) || ( c = this [ a [ b ] ] ) ; if ( ! c ) throw Error ( 'Method "' + a [ b ] + '" does not exist' ) ; var d = b . match ( F ) , e = d [ 1 ] , d = d [ 2 ] , c = f . bind ( c , this ) , e = e + ( ".delegateEvents" + this . cid ) ; "" === d ? this . $el . bind ( e , c ) : this . $el . delegate ( d , e , c ) } } } , undelegateEvents : function ( ) { this . $el . unbind ( ".delegateEvents" + this . cid ) } , _configure : function ( a ) { this . options && ( a = f . extend ( { } , this . options , a ) ) ; for ( var b = 0 , c = w . length ; b < c ; b ++ ) { var d = w [ b ] ; a [ d ] && ( this [ d ] = a [ d ] ) } this . options = a } , _ensureElement : function ( ) { if ( this . el ) this . setElement ( this . el ,
! 1 ) ; else { var a = n ( this , "attributes" ) || { } ; this . id && ( a . id = this . id ) ; this . className && ( a [ "class" ] = this . className ) ; this . setElement ( this . make ( this . tagName , a ) , ! 1 ) } } } ) ; o . extend = r . extend = u . extend = v . extend = function ( a , b ) { var c = G ( this , a , b ) ; c . extend = this . extend ; return c } ; var H = { create : "POST" , update : "PUT" , "delete" : "DELETE" , read : "GET" } ; g . sync = function ( a , b , c ) { var d = H [ a ] ; c || ( c = { } ) ; var e = { type : d , dataType : "json" } ; c . url || ( e . url = n ( b , "url" ) || t ( ) ) ; if ( ! c . data && b && ( "create" == a || "update" == a ) ) e . contentType = "application/json" ,
e . data = JSON . stringify ( b . toJSON ( ) ) ; g . emulateJSON && ( e . contentType = "application/x-www-form-urlencoded" , e . data = e . data ? { model : e . data } : { } ) ; if ( g . emulateHTTP && ( "PUT" === d || "DELETE" === d ) ) g . emulateJSON && ( e . data . _method = d ) , e . type = "POST" , e . beforeSend = function ( a ) { a . setRequestHeader ( "X-HTTP-Method-Override" , d ) } ; "GET" !== e . type && ! g . emulateJSON && ( e . processData = ! 1 ) ; return i . ajax ( f . extend ( e , c ) ) } ; g . wrapError = function ( a , b , c ) { return function ( d , e ) { e = d === b ? e : d ; a ? a ( b , e , c ) : b . trigger ( "error" , b , e , c ) } } ; var x = function ( ) { } , G = function ( a ,
b , c ) { var d ; d = b && b . hasOwnProperty ( "constructor" ) ? b . constructor : function ( ) { a . apply ( this , arguments ) } ; f . extend ( d , a ) ; x . prototype = a . prototype ; d . prototype = new x ; b && f . extend ( d . prototype , b ) ; c && f . extend ( d , c ) ; d . prototype . constructor = d ; d . _ _super _ _ = a . prototype ; return d } , n = function ( a , b ) { return ! a || ! a [ b ] ? null : f . isFunction ( a [ b ] ) ? a [ b ] ( ) : a [ b ] } , t = function ( ) { throw Error ( 'A "url" property or function must be specified' ) ; } } ) . call ( this ) ;
2012-06-20 13:25:41 -07:00
/ * !
* Bootstrap . js by @ fat & @ mdo
* Copyright 2012 Twitter , Inc .
* http : //www.apache.org/licenses/LICENSE-2.0.txt
* /
2013-02-21 18:30:03 -08:00
! function ( e ) { "use strict" ; e ( function ( ) { e . support . transition = function ( ) { var e = function ( ) { var e = document . createElement ( "bootstrap" ) , t = { WebkitTransition : "webkitTransitionEnd" , MozTransition : "transitionend" , OTransition : "oTransitionEnd otransitionend" , transition : "transitionend" } , n ; for ( n in t ) if ( e . style [ n ] !== undefined ) return t [ n ] } ( ) ; return e && { end : e } } ( ) } ) } ( window . jQuery ) , ! function ( e ) { "use strict" ; var t = '[data-dismiss="alert"]' , n = function ( n ) { e ( n ) . on ( "click" , t , this . close ) } ; n . prototype . close = function ( t ) { function s ( ) { i . trigger ( "closed" ) . remove ( ) } var n = e ( this ) , r = n . attr ( "data-target" ) , i ; r || ( r = n . attr ( "href" ) , r = r && r . replace ( /.*(?=#[^\s]*$)/ , "" ) ) , i = e ( r ) , t && t . preventDefault ( ) , i . length || ( i = n . hasClass ( "alert" ) ? n : n . parent ( ) ) , i . trigger ( t = e . Event ( "close" ) ) ; if ( t . isDefaultPrevented ( ) ) return ; i . removeClass ( "in" ) , e . support . transition && i . hasClass ( "fade" ) ? i . on ( e . support . transition . end , s ) : s ( ) } ; var r = e . fn . alert ; e . fn . alert = function ( t ) { return this . each ( function ( ) { var r = e ( this ) , i = r . data ( "alert" ) ; i || r . data ( "alert" , i = new n ( this ) ) , typeof t == "string" && i [ t ] . call ( r ) } ) } , e . fn . alert . Constructor = n , e . fn . alert . noConflict = function ( ) { return e . fn . alert = r , this } , e ( document ) . on ( "click.alert.data-api" , t , n . prototype . close ) } ( window . jQuery ) , ! function ( e ) { "use strict" ; var t = function ( t , n ) { this . $element = e ( t ) , this . options = e . extend ( { } , e . fn . button . defaults , n ) } ; t . prototype . setState = function ( e ) { var t = "disabled" , n = this . $element , r = n . data ( ) , i = n . is ( "input" ) ? "val" : "html" ; e += "Text" , r . resetText || n . data ( "resetText" , n [ i ] ( ) ) , n [ i ] ( r [ e ] || this . options [ e ] ) , setTimeout ( function ( ) { e == "loadingText" ? n . addClass ( t ) . attr ( t , t ) : n . removeClass ( t ) . removeAttr ( t ) } , 0 ) } , t . prototype . toggle = function ( ) { var e = this . $element . closest ( '[data-toggle="buttons-radio"]' ) ; e && e . find ( ".active" ) . removeClass ( "active" ) , this . $element . toggleClass ( "active" ) } ; var n = e . fn . button ; e . fn . button = function ( n ) { return this . each ( function ( ) { var r = e ( this ) , i = r . data ( "button" ) , s = typeof n == "object" && n ; i || r . data ( "button" , i = new t ( this , s ) ) , n == "toggle" ? i . toggle ( ) : n && i . setState ( n ) } ) } , e . fn . button . defaults = { loadingText : "loading..." } , e . fn . button . Constructor = t , e . fn . button . noConflict = function ( ) { return e . fn . button = n , this } , e ( document ) . on ( "click.button.data-api" , "[data-toggle^=button]" , function ( t ) { var n = e ( t . target ) ; n . hasClass ( "btn" ) || ( n = n . closest ( ".btn" ) ) , n . button ( "toggle" ) } ) } ( window . jQuery ) , ! function ( e ) { "use strict" ; var t = function ( t , n ) { this . $element = e ( t ) , this . $indicators = this . $element . find ( ".carousel-indicators" ) , this . options = n , this . options . pause == "hover" && this . $element . on ( "mouseenter" , e . proxy ( this . pause , this ) ) . on ( "mouseleave" , e . proxy ( this . cycle , this ) ) } ; t . prototype = { cycle : function ( t ) { return t || ( this . paused = ! 1 ) , this . interval && clearInterval ( this . interval ) , this . options . interval && ! this . paused && ( this . interval = setInterval ( e . proxy ( this . next , this ) , this . options . interval ) ) , this } , getActiveIndex : function ( ) { return this . $active = this . $element . find ( ".item.active" ) , this . $items = this . $active . parent ( ) . children ( ) , this . $items . index ( this . $active ) } , to : function ( t ) { var n = this . getActiveIndex ( ) , r = this ; if ( t > this . $items . length - 1 || t < 0 ) return ; return this . sliding ? this . $element . one ( "slid" , function ( ) { r . to ( t ) } ) : n == t ? this . pause ( ) . cycle ( ) : this . slide ( t > n ? "next" : "prev" , e ( this . $items [ t ] ) ) } , pause : function ( t ) { return t || ( this . paused = ! 0 ) , this . $element . find ( ".next, .prev" ) . length && e . support . transition . end && ( this . $element . trigger ( e . support . transition . end ) , this . cycle ( ) ) , clearInterval ( this . interval ) , this . interval = null , this } , next : function ( ) { if ( this . sliding ) return ; return this . slide ( "next" ) } , prev : function ( ) { if ( this . sliding ) return ; return this . slide ( "prev" ) } , slide : function ( t , n ) { var r = this . $element . find ( ".item.active" ) , i = n || r [ t ] ( ) , s = this . interval , o = t == "next" ? "left" : "right" , u = t == "next" ? "first" : "last" , a = this , f ; this . sliding = ! 0 , s && this . pause ( ) , i = i . length ? i : this . $element . find ( ".item" ) [ u ] ( ) , f = e . Event ( "slide" , { relatedTarget : i [ 0 ] , direction : o } ) ; if ( i . hasClass ( "active" ) ) return ; this . $indicators . length && ( this . $indicators . find ( ".active" ) . removeClass ( "active" ) , this . $element . one ( "slid" , function ( ) { var t = e ( a . $indicators . children ( ) [ a . getActiveIndex ( ) ] ) ; t && t . addClass ( "active" ) } ) ) ; if ( e . support . transition && this . $element . hasClass ( "slide" ) ) { t
2012-06-20 13:25:41 -07:00
( function ( jQuery ) { jQuery . hotkeys = { version : "0.8" , specialKeys : { 8 : "backspace" , 9 : "tab" , 13 : "return" , 16 : "shift" , 17 : "ctrl" , 18 : "alt" , 19 : "pause" , 20 : "capslock" , 27 : "esc" , 32 : "space" , 33 : "pageup" , 34 : "pagedown" , 35 : "end" , 36 : "home" , 37 : "left" , 38 : "up" , 39 : "right" , 40 : "down" , 45 : "insert" , 46 : "del" , 96 : "0" , 97 : "1" , 98 : "2" , 99 : "3" , 100 : "4" , 101 : "5" , 102 : "6" , 103 : "7" , 104 : "8" , 105 : "9" , 106 : "*" , 107 : "+" , 109 : "-" , 110 : "." , 111 : "/" , 112 : "f1" , 113 : "f2" , 114 : "f3" , 115 : "f4" , 116 : "f5" , 117 : "f6" , 118 : "f7" , 119 : "f8" , 120 : "f9" , 121 : "f10" , 122 : "f11" , 123 : "f12" , 144 : "numlock" , 145 : "scroll" , 191 : "/" , 224 : "meta" } , shiftNums : { "`" : "~" , "1" : "!" , "2" : "@" , "3" : "#" , "4" : "$" , "5" : "%" , "6" : "^" , "7" : "&" , "8" : "*" , "9" : "(" , "0" : ")" , "-" : "_" , "=" : "+" , ";" : ": " , "'" : "\"" , "," : "<" , "." : ">" , "/" : "?" , "\\" : "|" } } ; function keyHandler ( handleObj ) { if ( typeof handleObj . data !== "string" ) { return ; }
var origHandler = handleObj . handler , keys = handleObj . data . toLowerCase ( ) . split ( " " ) ; handleObj . handler = function ( event ) { if ( this !== event . target && ( /textarea|select/i . test ( event . target . nodeName ) || event . target . type === "text" || event . target . type === "password" ) ) { return ; }
var special = event . type !== "keypress" && jQuery . hotkeys . specialKeys [ event . which ] , character = String . fromCharCode ( event . which ) . toLowerCase ( ) , key , modif = "" , possible = { } ; if ( event . altKey && special !== "alt" ) { modif += "alt+" ; }
if ( event . ctrlKey && special !== "ctrl" ) { modif += "ctrl+" ; }
if ( event . metaKey && ! event . ctrlKey && special !== "meta" ) { modif += "meta+" ; }
if ( event . shiftKey && special !== "shift" ) { modif += "shift+" ; }
if ( special ) { possible [ modif + special ] = true ; } else { possible [ modif + character ] = true ; possible [ modif + jQuery . hotkeys . shiftNums [ character ] ] = true ; if ( modif === "shift+" ) { possible [ jQuery . hotkeys . shiftNums [ character ] ] = true ; } }
for ( var i = 0 , l = keys . length ; i < l ; i ++ ) { if ( possible [ keys [ i ] ] ) { return origHandler . apply ( this , arguments ) ; } } } ; }
jQuery . each ( [ "keydown" , "keyup" , "keypress" ] , function ( ) { jQuery . event . special [ this ] = { add : keyHandler } ; } ) ; } ) ( jQuery ) ;
( function ( $ ) { $ . InFieldLabels = function ( label , field , options ) { var base = this ; base . $label = $ ( label ) ; base . label = label ; base . $field = $ ( field ) ; base . field = field ; base . $label . data ( "InFieldLabels" , base ) ; base . showing = true ; base . init = function ( ) { base . options = $ . extend ( { } , $ . InFieldLabels . defaultOptions , options ) ; if ( base . $field . val ( ) !== "" ) { base . $label . hide ( ) ; base . showing = false ; }
base . $field . focus ( function ( ) { base . fadeOnFocus ( ) ; } ) . blur ( function ( ) { base . checkForEmpty ( true ) ; } ) . bind ( 'keydown.infieldlabel' , function ( e ) { base . hideOnChange ( e ) ; } ) . bind ( 'paste' , function ( e ) { base . setOpacity ( 0.0 ) ; } ) . change ( function ( e ) { base . checkForEmpty ( ) ; } ) . bind ( 'onPropertyChange' , function ( ) { base . checkForEmpty ( ) ; } ) ; } ; base . fadeOnFocus = function ( ) { if ( base . showing ) { base . setOpacity ( base . options . fadeOpacity ) ; } } ; base . setOpacity = function ( opacity ) { base . $label . stop ( ) . animate ( { opacity : opacity } , base . options . fadeDuration ) ; base . showing = ( opacity > 0.0 ) ; } ; base . checkForEmpty = function ( blur ) { if ( base . $field . val ( ) === "" ) { base . prepForShow ( ) ; base . setOpacity ( blur ? 1.0 : base . options . fadeOpacity ) ; } else { base . setOpacity ( 0.0 ) ; } } ; base . prepForShow = function ( e ) { if ( ! base . showing ) { base . $label . css ( { opacity : 0.0 } ) . show ( ) ; base . $field . bind ( 'keydown.infieldlabel' , function ( e ) { base . hideOnChange ( e ) ; } ) ; } } ; base . hideOnChange = function ( e ) { if ( ( e . keyCode === 16 ) || ( e . keyCode === 9 ) || ( e . keyCode === 27 ) ) { return ; }
if ( base . showing ) { base . $label . hide ( ) ; base . showing = false ; }
base . $field . unbind ( 'keydown.infieldlabel' ) ; } ; base . init ( ) ; } ; $ . InFieldLabels . defaultOptions = { fadeOpacity : 0.5 , fadeDuration : 300 } ; $ . fn . inFieldLabels = function ( options ) { return this . each ( function ( ) { var for _attr = $ ( this ) . attr ( 'for' ) , $field ; if ( ! for _attr ) { return ; }
$field = $ ( "input#" + for _attr + "[type='text']," + "input#" + for _attr + "[type='search']," + "input#" + for _attr + "[type='tel']," + "input#" + for _attr + "[type='url']," + "input#" + for _attr + "[type='email']," + "input#" + for _attr + "[type='password']," + "textarea#" + for _attr ) ; if ( $field . length === 0 ) { return ; }
( new $ . InFieldLabels ( this , $field [ 0 ] , options ) ) ; } ) ; } ; } ( jQuery ) ) ;
2014-04-30 09:35:20 -07:00
/* Chosen v1.1.0 | (c) 2011-2013 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */
! function ( ) { var a , AbstractChosen , Chosen , SelectParser , b , c = { } . hasOwnProperty , d = function ( a , b ) { function d ( ) { this . constructor = a } for ( var e in b ) c . call ( b , e ) && ( a [ e ] = b [ e ] ) ; return d . prototype = b . prototype , a . prototype = new d , a . _ _super _ _ = b . prototype , a } ; SelectParser = function ( ) { function SelectParser ( ) { this . options _index = 0 , this . parsed = [ ] } return SelectParser . prototype . add _node = function ( a ) { return "OPTGROUP" === a . nodeName . toUpperCase ( ) ? this . add _group ( a ) : this . add _option ( a ) } , SelectParser . prototype . add _group = function ( a ) { var b , c , d , e , f , g ; for ( b = this . parsed . length , this . parsed . push ( { array _index : b , group : ! 0 , label : this . escapeExpression ( a . label ) , children : 0 , disabled : a . disabled } ) , f = a . childNodes , g = [ ] , d = 0 , e = f . length ; e > d ; d ++ ) c = f [ d ] , g . push ( this . add _option ( c , b , a . disabled ) ) ; return g } , SelectParser . prototype . add _option = function ( a , b , c ) { return "OPTION" === a . nodeName . toUpperCase ( ) ? ( "" !== a . text ? ( null != b && ( this . parsed [ b ] . children += 1 ) , this . parsed . push ( { array _index : this . parsed . length , options _index : this . options _index , value : a . value , text : a . text , html : a . innerHTML , selected : a . selected , disabled : c === ! 0 ? c : a . disabled , group _array _index : b , classes : a . className , style : a . style . cssText } ) ) : this . parsed . push ( { array _index : this . parsed . length , options _index : this . options _index , empty : ! 0 } ) , this . options _index += 1 ) : void 0 } , SelectParser . prototype . escapeExpression = function ( a ) { var b , c ; return null == a || a === ! 1 ? "" : /[\&\<\>\"\'\`]/ . test ( a ) ? ( b = { "<" : "<" , ">" : ">" , '"' : """ , "'" : "'" , "`" : "`" } , c = /&(?!\w+;)|[\<\>\"\'\`]/g , a . replace ( c , function ( a ) { return b [ a ] || "&" } ) ) : a } , SelectParser } ( ) , SelectParser . select _to _array = function ( a ) { var b , c , d , e , f ; for ( c = new SelectParser , f = a . childNodes , d = 0 , e = f . length ; e > d ; d ++ ) b = f [ d ] , c . add _node ( b ) ; return c . parsed } , AbstractChosen = function ( ) { function AbstractChosen ( a , b ) { this . form _field = a , this . options = null != b ? b : { } , AbstractChosen . browser _is _supported ( ) && ( this . is _multiple = this . form _field . multiple , this . set _default _text ( ) , this . set _default _values ( ) , this . setup ( ) , this . set _up _html ( ) , this . register _observers ( ) ) } return AbstractChosen . prototype . set _default _values = function ( ) { var a = this ; return this . click _test _action = function ( b ) { return a . test _active _click ( b ) } , this . activate _action = function ( b ) { return a . activate _field ( b ) } , this . active _field = ! 1 , this . mouse _on _container = ! 1 , this . results _showing = ! 1 , this . result _highlighted = null , this . allow _single _deselect = null != this . options . allow _single _deselect && null != this . form _field . options [ 0 ] && "" === this . form _field . options [ 0 ] . text ? this . options . allow _single _deselect : ! 1 , this . disable _search _threshold = this . options . disable _search _threshold || 0 , this . disable _search = this . options . disable _search || ! 1 , this . enable _split _word _search = null != this . options . enable _split _word _search ? this . options . enable _split _word _search : ! 0 , this . group _search = null != this . options . group _search ? this . options . group _search : ! 0 , this . search _contains = this . options . search _contains || ! 1 , this . single _backstroke _delete = null != this . options . single _backstroke _delete ? this . options . single _backstroke _delete : ! 0 , this . max _selected _options = this . options . max _selected _options || 1 / 0 , this . inherit _select _classes = this . options . inherit _select _classes || ! 1 , this . display _selected _options = null != this . options . display _selected _options ? this . options . display _selected _options : ! 0 , this . display _disabled _options = null != this . options . display _disabled _options ? this . options . display _disabled _options : ! 0 } , AbstractChosen . prototype . set _default _text = function ( ) { return this . default _text = this . form _field . getAttribute ( "data-placeholder" ) ? this . form _field . getAttribute ( "data-placeholder" ) : this . is _multiple ? this . options . placeholder _text _multiple || this . options . placeholder _text || AbstractChosen . default _multiple _text : this . options . placeholder _text _single || this . options . placeholder _text || AbstractChosen . default _single _text , this . results _none _found = this . form _field . getAttribute ( "data-no_results_text" ) || this . options . no _results _text || AbstractChosen . default _no _result _text } , AbstractChosen . prototype . mouse _enter = function ( ) { return this . mouse _on _container = ! 0 } , AbstractChosen . prototype . mouse _leave = function ( ) { return this . mouse _on _container = ! 1 } , AbstractChosen . prototype . input _focus = function ( ) { var a = this ; if ( thi
2016-11-01 11:21:39 -07:00
'use strict' ;
var snipt = {
module : function ( ) {
var modules = { } ;
return function ( name ) {
if ( modules [ name ] ) {
return modules [ name ] ;
}
return modules [ name ] = { } ;
} ;
} ( )
} ;
jQuery ( function ( $ ) {
var SiteView = snipt . module ( 'site' ) . SiteView ;
window . site = new SiteView ( ) ;
var $pres = $ ( 'td.code pre' ) ;
$pres . each ( function ( i ) {
var pre = $pres . eq ( i ) ;
pre . width ( pre . parents ( 'section.code' ) . width ( ) - 30 ) ;
} ) ;
} ) ;
// Angular app init.
( function ( ) {
var root = this ;
// App definition.
var app = angular . module ( 'Snipt' , [ 'ngRoute' ] , function ( $locationProvider ) {
$locationProvider . html5Mode ( true ) ;
} ) ;
// Use non-Django-style interpolation.
app . config ( function ( $interpolateProvider ) {
$interpolateProvider . startSymbol ( '{[{' ) ;
$interpolateProvider . endSymbol ( '}]}' ) ;
} ) ;
root . app = app ;
if ( root . ll ) {
if ( root . location . pathname === '/account/stats/' ) {
root . ll ( 'tagEvent' , 'Viewed stats page' ) ;
}
}
app . controller ( 'AppController' , function ( $scope ) {
$scope . ads = [
{
url : 'http://showroom.is/?from=snipt' ,
image : 'https://snipt.s3.amazonaws.com/img/logo-showroom.png' ,
company : 'Showroom.is' ,
title : 'New-car research for the modern web.'
} ,
{
url : 'http://showroom.is/?from=snipt' ,
image : 'https://snipt.s3.amazonaws.com/img/logo-showroom.png' ,
company : 'Showroom.is' ,
title : 'New-car research for the modern web.'
} ,
{
url : 'http://showroom.is/?from=snipt' ,
image : 'https://snipt.s3.amazonaws.com/img/logo-showroom.png' ,
company : 'Showroom.is' ,
title : 'New-car research for the modern web.'
} ,
{
url : 'http://showroom.is/?from=snipt' ,
image : 'https://snipt.s3.amazonaws.com/img/logo-showroom.png' ,
company : 'Showroom.is' ,
title : 'New-car research for the modern web.'
} ,
{
url : 'http://showroom.is/?from=snipt' ,
image : 'https://snipt.s3.amazonaws.com/img/logo-showroom.png' ,
company : 'Showroom.is' ,
title : 'New-car research for the modern web.'
} ,
{
url : 'http://showroom.is/?from=snipt' ,
image : 'https://snipt.s3.amazonaws.com/img/logo-showroom.png' ,
company : 'Showroom.is' ,
title : 'New-car research for the modern web.'
} ,
{
url : 'http://showroom.is/?from=snipt' ,
image : 'https://snipt.s3.amazonaws.com/img/logo-showroom.png' ,
company : 'Showroom.is' ,
title : 'New-car research for the modern web.'
} ,
{
url : 'http://showroom.is/?from=snipt' ,
image : 'https://snipt.s3.amazonaws.com/img/logo-showroom.png' ,
company : 'Showroom.is' ,
title : 'New-car research for the modern web.'
} ,
{
url : 'http://showroom.is/?from=snipt' ,
image : 'https://snipt.s3.amazonaws.com/img/logo-showroom.png' ,
company : 'Showroom.is' ,
title : 'New-car research for the modern web.'
} ,
{
url : 'http://showroom.is/?from=snipt' ,
image : 'https://snipt.s3.amazonaws.com/img/logo-showroom.png' ,
company : 'Showroom.is' ,
title : 'New-car research for the modern web.'
} ,
{
url : 'http://showroom.is/?from=snipt' ,
image : 'https://snipt.s3.amazonaws.com/img/logo-showroom.png' ,
company : 'Showroom.is' ,
title : 'New-car research for the modern web.'
} ,
{
url : 'http://showroom.is/?from=snipt' ,
image : 'https://snipt.s3.amazonaws.com/img/logo-showroom.png' ,
company : 'Showroom.is' ,
title : 'New-car research for the modern web.'
} ,
{
url : 'http://showroom.is/?from=snipt' ,
image : 'https://snipt.s3.amazonaws.com/img/logo-showroom.png' ,
company : 'Showroom.is' ,
title : 'New-car research for the modern web.'
} ,
{
url : 'http://showroom.is/?from=snipt' ,
image : 'https://snipt.s3.amazonaws.com/img/logo-showroom.png' ,
company : 'Showroom.is' ,
title : 'New-car research for the modern web.'
} ,
{
url : 'http://showroom.is/?from=snipt' ,
image : 'https://snipt.s3.amazonaws.com/img/logo-showroom.png' ,
company : 'Showroom.is' ,
title : 'New-car research for the modern web.'
} ,
{
url : 'http://bruce-springsteen-the-e-street-band.gigs.is/?from=snipt' ,
image : 'http://cdn.chairnerd.com/images/performers-landscape/bruce-springsteen-bf99a8/4275/huge.jpg' ,
company : 'Gigs.is' ,
title : 'Bruce Springsteen & The E Street Band on tour.'
} ,
{
url : 'http://beyonce.gigs.is/?from=snipt' ,
image : 'http://cdn.chairnerd.com/images/performers-landscape/beyonce-b28ec9/37/huge.jpg' ,
company : 'Gigs.is' ,
title : 'Beyonce on tour. View current tour dates on:'
} ,
{
url : 'http://paul-mccartney.gigs.is/?from=snipt' ,
image : 'http://cdn.chairnerd.com/images/performers-landscape/paul-mccartney-0ab8df/1408/huge.jpg' ,
company : 'Gigs.is' ,
title : 'Paul McCartney on tour. View current tour dates on:'
} ,
{
url : 'http://rolling-stones.gigs.is/?from=snipt' ,
image : 'http://cdn.chairnerd.com/images/performers-landscape/rolling-stones-73ab94/2597/huge.jpg' ,
company : 'Gigs.is' ,
title : 'Rolling Stones on tour. View current tour dates on:'
} ,
{
url : 'http://justin-timberlake.gigs.is/?from=snipt' ,
image : 'http://cdn.chairnerd.com/images/performers-landscape/justin-timberlake-c30b82/1019/huge.jpg' ,
company : 'Gigs.is' ,
title : 'Justin Timberlake on tour. View current tour dates on:'
} ,
{
url : 'http://billy-joel.gigs.is/?from=snipt' ,
image : 'http://cdn.chairnerd.com/images/performers-landscape/billy-joel-254023/303/huge.jpg' ,
company : 'Gigs.is' ,
title : 'Billy Joel on tour. View current tour dates on:'
} ,
{
url : 'http://taylor-swift.gigs.is/?from=snipt' ,
image : 'http://cdn.chairnerd.com/images/performers-landscape/taylor-swift-1cdf83/35/huge.jpg' ,
company : 'Gigs.is' ,
title : 'Taylor Swift on tour. View current tour dates on:'
} ,
{
url : 'http://one-direction.gigs.is/?from=snipt' ,
image : 'http://cdn.chairnerd.com/images/performers-landscape/one-direction-a22937/12586/huge.jpg' ,
company : 'Gigs.is' ,
title : 'One Direction on tour. View current tour dates on:'
} ,
{
url : 'http://george-strait.gigs.is/?from=snipt' ,
image : 'http://cdn.chairnerd.com/images/performers-landscape/george-strait-92a4b8/780/huge.jpg' ,
company : 'Gigs.is' ,
title : 'George Strait on tour. View current tour dates on:'
} ,
{
url : 'http://pearl-jam.gigs.is/?from=snipt' ,
image : 'http://cdn.chairnerd.com/images/performers-landscape/pearl-jam-fb4480/1416/huge.jpg' ,
company : 'Gigs.is' ,
title : 'Pearl Jam on tour. View current tour dates on:'
}
] ;
var randomIndex = Math . floor ( Math . random ( ) * ( ( $scope . ads . length - 1 ) - 0 + 1 ) ) + 0 ;
$scope . randomAd = $scope . ads [ randomIndex ] ;
} ) ;
} ) . call ( this ) ;
( function ( Site ) {
var Snipt = snipt . module ( 'snipt' ) ;
Backbone . oldSync = Backbone . sync ;
Backbone . Model . prototype . idAttribute = 'resource_uri' ;
var addSlash = function ( str ) {
return str + ( ( str . length > 0 && str . charAt ( str . length - 1 ) === '/' ) ? '' : '/' ) ;
} ;
Backbone . sync = function ( method , model , options ) {
options . headers = _ . extend ( {
'Authorization' : 'ApiKey ' + window . user + ':' + window . api _key
} , options . headers ) ;
return Backbone . oldSync ( method , model , options ) ;
} ;
Backbone . Model . prototype . url = function ( ) {
var url = this . id ;
if ( ! url ) {
url = this . urlRoot ;
url = url || this . collection && ( _ . isFunction ( this . collection . url ) ? this . collection . url ( ) : this . collection . url ) ;
if ( url && this . has ( 'id' ) ) {
url = addSlash ( url ) + this . get ( 'id' ) ;
}
}
url = url && addSlash ( url ) ;
if ( typeof url === 'undefined' ) {
url = '/api/private/snipt/' ;
this . unset ( 'id' , { 'silent' : true } ) ;
this . unset ( 'user' , { 'silent' : true } ) ;
}
return url || null ;
} ;
Site . SiteView = Backbone . View . extend ( {
el : 'body' ,
initialize : function ( opts ) {
this . $body = $ ( this . el ) ;
this . $html = $ ( 'html' ) ;
this . $html _body = this . $body . add ( this . $html ) ;
this . $aside _main = $ ( 'aside.main' , this . $body ) ;
this . $aside _nav = $ ( 'aside.nav' , this . $body ) ;
this . $teams _nav = $ ( 'li.teams-nav' , this . $body ) ;
this . $add _snipt = $ ( 'li.add-snipt' , this . $body ) ;
this . $aside _nav _ul = $ ( 'ul' , this . $aside _nav ) ;
this . $search _form = $ ( 'form.search' , this . $body ) ;
this . $search _query = $ ( 'input#search-query' , this . $body ) ;
this . $search _page _query = $ ( 'input.search-query' , this . $body ) ;
this . $search _queries = this . $search _query . add ( this . $search _page _query ) ;
this . $snipts = $ ( 'section#snipts article.snipt' , this . $body ) ;
this . $modals = $ ( 'div.modal' , this . $snipts ) ;
this . $main _edit = $ ( 'section#main-edit' ) ;
this . $main = $ ( 'section#main' ) ;
this . $keyboard _shortcuts = $ ( '#keyboard-shortcuts' , this . $body ) ;
this . keyboardShortcuts ( ) ;
this . inFieldLabels ( ) ;
var SniptListView = Snipt . SniptListView ;
this . snipt _list = new SniptListView ( { 'snipts' : this . $snipts } ) ;
var that = this ;
this . $body . click ( function ( ) {
if ( ! window . ui _halted && ! window . from _modal && window . $selected ) {
window . $selected . trigger ( 'deselect' ) ;
}
if ( window . from _modal ) {
window . from _modal = false ;
}
that . $aside _nav . removeClass ( 'open' ) ;
that . $teams _nav . removeClass ( 'open' ) ;
that . $add _snipt . removeClass ( 'open' ) ;
} ) ;
this . $aside _nav _ul . click ( function ( e ) {
e . stopPropagation ( ) ;
} ) ;
$search _queries = this . $search _queries ;
$search _queries . focus ( function ( ) {
if ( window . $selected ) {
$selected . trigger ( 'deselect' ) ;
}
} ) ;
this . $body . on ( 'click' , 'a.close' , function ( ) {
$ ( this ) . parent ( ) . parent ( ) . modal ( 'hide' ) ;
window . ui _halted = false ;
return false ;
} ) ;
this . $keyboard _shortcuts . on ( 'hidden' , function ( ) {
window . ui _halted = false ;
} ) ;
if ( this . $body . hasClass ( 'login' ) ) {
$ ( 'input#id_username' ) . focus ( ) ;
}
// Populate any GitTip widgets.
if ( window . gittip _username ) {
this . $aside _main . html ( this . $aside _main . html ( ) . replace (
/\[\[.*gittip.*\]\]/ ,
'<iframe style="border: 0; margin: 0; padding: 0;" src="https://www.gittip.com/' + window . gittip _username + '/widget.html" width="48pt" height="22pt"></iframe>' )
) ;
$ ( 'iframe' , this . $aside _main ) . parent ( 'p' ) . prev ( 'p' ) . css ( 'margin-bottom' , '10px' ) ;
}
// Highlight any Markdown code.
$ ( 'div.markdown pre code' ) . each ( function ( i , e ) {
hljs . highlightBlock ( e ) ;
} ) ;
// Populate any embedded tweets.
var $embeddedTweets = $ ( 'div.embedded-tweet' ) ;
if ( $embeddedTweets . length ) {
$ . each ( $embeddedTweets , function ( ) {
var $tweetPlaceholder = $ ( this ) ;
var tweetID = $tweetPlaceholder . attr ( 'data-tweet-id' ) ;
$ . ajax ( {
url : 'https://api.twitter.com/1/statuses/oembed.json?id=' + tweetID + '&align=center' ,
dataType : 'jsonp' ,
type : 'get' ,
success : function ( resp ) {
$tweetPlaceholder . replaceWith ( $ ( resp . html ) ) ;
}
} ) ;
} ) ;
}
window . ui _halted = false ;
} ,
events : {
'showKeyboardShortcuts' : 'showKeyboardShortcuts' ,
'click a.mini-profile' : 'toggleMiniProfile' ,
'click a.teams-nav' : 'toggleTeamsNav'
} ,
keyboardShortcuts : function ( ) {
var $body = this . $body ;
var that = this ;
$search _queries = this . $search _queries ;
$search _page _query = this . $search _page _query ;
$search _query = this . $search _query ;
$document = $ ( document ) ;
$document . bind ( 'keydown' , '/' , function ( e ) {
if ( ! window . ui _halted ) {
e . preventDefault ( ) ;
if ( $body . hasClass ( 'search' ) ) {
$search _page _query . focus ( ) ;
} else {
$search _query . focus ( ) ;
}
}
} ) ;
$document . bind ( 'keydown' , 'Ctrl+h' , function ( e ) {
if ( ! window . ui _halted ) {
window . ui _halted = true ;
$body . trigger ( 'showKeyboardShortcuts' ) ;
} else {
if ( that . $keyboard _shortcuts . is ( ':visible' ) ) {
that . $keyboard _shortcuts . modal ( 'hide' ) ;
}
}
} ) ;
this . $search _queries . bind ( 'keydown' , 'esc' , function ( e ) {
if ( ! window . ui _halted ) {
e . preventDefault ( ) ;
this . blur ( ) ;
}
} ) ;
} ,
showKeyboardShortcuts : function ( ) {
this . $keyboard _shortcuts . modal ( 'toggle' ) ;
} ,
toggleMiniProfile : function ( e ) {
this . $aside _nav . toggleClass ( 'open' ) ;
return false ;
} ,
toggleTeamsNav : function ( e ) {
this . $teams _nav . toggleClass ( 'open' ) ;
return false ;
} ,
inFieldLabels : function ( ) {
$ ( 'div.infield label' , this . $body ) . inFieldLabels ( {
fadeDuration : 200
} ) ;
}
} ) ;
} ) ( snipt . module ( 'site' ) ) ;
( function ( Snipt ) {
Snipt . SniptModel = Backbone . Model . extend ( {
toSafe : function ( ) {
var snipt = this . toJSON ( ) ;
snipt . code = this . escape ( 'code' ) ;
snipt . title = this . escape ( 'title' ) ;
snipt . tags _list = this . escape ( 'tags_list' ) ;
if ( typeof snipt . tags === 'object' ) {
for ( var i ; i < snipt . tags . length ; i ++ ) {
snipt . tags [ i ] . name = _ . escape ( snipt . tags [ i ] . name ) ;
}
}
return snipt ;
}
} ) ;
Snipt . SniptView = Backbone . View . extend ( {
tagName : 'article' ,
initialize : function ( ) {
this . model . view = this ;
this . model . bind ( 'change' , this . render , this ) ;
this . template = _ . template ( $ ( '#snipt' ) . html ( ) ) ;
this . editTemplate = _ . template ( $ ( '#edit' ) . html ( ) ) ;
this . initLocalVars ( ) ;
this . initLineNumbers ( ) ;
} ,
events : {
'click a.copy' : 'copyFromClick' ,
'click a.history' : 'toggleHistory' ,
'click a.secure-view-log' : 'toggleSecureView' ,
'click a.edit' : 'edit' ,
'click a.favorite' : 'favoriteToggle' ,
'click a.embed' : 'embedFromClick' ,
'click a.expand' : 'expand' ,
'click .container' : 'selectFromClick' ,
'copyClose' : 'copyClose' ,
'copyRaw' : 'copy' ,
'detail' : 'detail' ,
'deselect' : 'deselect' ,
'destroy' : 'destroy' ,
'edit' : 'edit' ,
'embed' : 'embed' ,
'embedClose' : 'embedClose' ,
'expand' : 'expand' ,
'fadeAndRemove' : 'fadeAndRemove' ,
'goToAuthor' : 'goToAuthor' ,
'next' : 'next' ,
'prev' : 'prev' ,
'selectSnipt' : 'select'
} ,
copy : function ( ) {
$ ( 'textarea' , this . $copyModal ) . remove ( ) ;
window . ui _halted = true ;
this . $copyModalBody . append ( '<textarea class="raw"></textarea>' ) ;
$textarea = $ ( 'textarea.raw' , this . $copyModalBody ) . val ( this . model . get ( 'code' ) ) ;
this . $copyModal . modal ( 'show' ) ;
$textarea . select ( ) ;
} ,
copyClose : function ( ) {
$ ( 'textarea' , this . $copyModal ) . remove ( ) ;
} ,
copyFromClick : function ( ) {
this . copy ( ) ;
return false ;
} ,
deselect : function ( ) {
this . $el . removeClass ( 'selected' ) ;
window . $selected = false ;
} ,
detail : function ( ) {
window . location = this . model . get ( 'absolute_url' ) ;
} ,
destroy : function ( ) {
this . model . destroy ( ) ;
} ,
edit : function ( adding ) {
window . editing = true ;
window . ui _halted = true ;
this . select ( ) ;
that = this ;
var editPane = this . editTemplate ( {
snipt : this . model . toSafe ( )
} ) ;
// Init main view
window . site . $main . hide ( ) ;
window . site . $body . addClass ( 'detail editing' ) ;
window . site . $main _edit . html ( editPane ) ;
// Select lexer
$ ( 'option[value="' + this . model . get ( 'lexer' ) + '"]' , window . site . $main _edit ) . attr ( 'selected' , 'selected' ) ;
// Init chosen
var $selectLexer = $ ( 'select#id_lexer' , window . site . $main _edit ) ;
$selectLexer . chosen ( ) ;
// Blog post
$ ( 'label.blog-post input' , window . site . $main _edit ) . change ( function ( ) {
var $checkbox = $ ( this ) ;
var $label = $checkbox . parent ( ) ;
var $publish _date = $label . siblings ( 'label.publish-date' ) ;
if ( $checkbox . is ( ':checked' ) ) {
$label . removeClass ( 'is-not-blog-post' ) . addClass ( 'is-blog-post' ) ;
$publish _date . show ( ) ;
} else {
$label . addClass ( 'is-not-blog-post' ) . removeClass ( 'is-blog-post' ) ;
$publish _date . hide ( ) ;
}
return false ;
} ) . change ( ) ;
// Public / private
$ ( 'label.public input' , window . site . $main _edit ) . change ( function ( ) {
var $checkbox = $ ( this ) ;
var $label = $checkbox . parent ( ) ;
if ( $checkbox . is ( ':checked' ) ) {
$label . removeClass ( 'is-private' ) . addClass ( 'is-public' ) ;
$ ( 'label.secure' ) . addClass ( 'disabled' ) ;
$ ( 'label.secure' ) . removeClass ( 'is-secure' ) ;
$ ( 'label.secure input' ) . attr ( 'checked' , false ) ;
} else {
$label . addClass ( 'is-private' ) . removeClass ( 'is-public' ) ;
$ ( 'label.secure' ) . removeClass ( 'disabled' ) ;
}
return false ;
} ) . change ( ) ;
// Secure / insecure
$ ( 'label.secure' , window . site . $main _edit ) . click ( function ( e ) {
if ( $ ( 'label.public input' ) . is ( ':checked' ) ) {
e . preventDefault ( ) ;
e . stopPropagation ( ) ;
}
} ) ;
// Secure / insecure
$ ( 'label.secure input' , window . site . $main _edit ) . change ( function ( e ) {
var $checkbox = $ ( this ) ;
var $label = $checkbox . parent ( ) ;
if ( $checkbox . is ( ':checked' ) ) {
$label . addClass ( 'is-secure' ) ;
} else {
$label . removeClass ( 'is-secure' ) ;
}
return false ;
} ) . change ( ) ;
window . site . $main _edit . show ( ) ;
// CodeMirror editor
this . $editorCodeMirror = $ ( 'div.editor' , window . site . $main _edit ) ;
// Textarea editor
this . $editorTextarea = $ ( 'textarea.editor' , window . site . $main _edit ) ;
window . editor = CodeMirror ( this . $editorCodeMirror . get ( 0 ) , {
autofocus : true ,
fixedGutter : true ,
gutter : true ,
indentUnit : 4 ,
lineNumbers : true ,
javascriptHint : true ,
matchBrackets : true ,
mode : that . guessCodeMirrorLexer ( $selectLexer . val ( ) ) ,
value : that . model . get ( 'code' )
} ) ;
// Lexer selector.
$selectLexer . change ( function ( ) {
var $selectedLexer = $ ( 'option:selected' , $selectLexer ) ;
var lexer = $selectLexer . val ( ) ;
window . editor . setOption ( 'mode' , that . guessCodeMirrorLexer ( $selectedLexer . val ( ) ) ) ;
// Markdown switch.
if ( lexer === 'markdown' || lexer === 'text' ) {
window . editor . setOption ( 'lineWrapping' , true ) ;
} else {
window . editor . setOption ( 'lineWrapping' , false ) ;
}
} ) ;
$selectLexer . trigger ( 'change' ) ;
// Set the heights.
window . editorHeight = $ ( window ) . height ( ) - 147 ;
window . editor . setSize ( '100%' , window . editorHeight ) ;
this . $editorTextarea . height ( window . editorHeight - 8 ) ;
$ ( 'textarea, input' , window . site . $main _edit ) . bind ( 'keydown' , 'esc' , function ( e ) {
$ ( this ) . blur ( ) ;
return false ;
} ) ;
// Editor settings
var $selectEditor = $ ( 'select#id_editor' , window . site . $main _edit ) ;
var $selectTheme = $ ( 'select#id_theme' , window . site . $main _edit ) ;
$selectEditor . chosen ( ) ;
$selectEditor . change ( function ( ) {
var newEditor = $selectEditor . val ( ) ;
if ( newEditor === 'textarea' ) {
that . $editorCodeMirror . hide ( ) ;
that . $editorTextarea . show ( ) ;
// TODO: if we introduce other editors, we'll want to make this smarter, obviously.
that . $editorTextarea . val ( window . editor . getValue ( ) ) ;
}
if ( newEditor === 'codemirror' ) {
that . $editorTextarea . hide ( ) ;
that . $editorCodeMirror . show ( ) ;
// TODO: Ditto above.
window . editor . setValue ( that . $editorTextarea . val ( ) ) ;
}
} ) ;
$selectTheme . chosen ( ) ;
$selectTheme . change ( function ( ) {
window . editor . setOption ( 'theme' , $selectTheme . val ( ) ) ;
} ) ;
if ( window . editor _theme != 'default' ) {
$selectTheme . val ( window . editor _theme ) ;
$selectTheme . trigger ( 'chosen:updated' ) ;
$selectTheme . trigger ( 'change' ) ;
}
if ( window . default _editor != 'codemirror' ) {
$selectEditor . val ( window . default _editor ) ;
$selectEditor . trigger ( 'chosen:updated' ) ;
$selectEditor . trigger ( 'change' ) ;
}
// Init user
if ( window . teams . length ) {
var $selectUser = $ ( 'select#id_user' , window . site . $main _edit ) ;
$selectUser . chosen ( ) ;
$selectUser . val ( window . intended _user ) ;
$selectUser . trigger ( 'chosen:updated' ) ;
}
// Full-screen mode.
this . setupCodeMirrorFullScreen ( ) ;
// Edit buttons
$ ( 'button.delete' , window . site . $main _edit ) . on ( 'click' , function ( ) {
if ( confirm ( 'Are you sure you want to delete this snipt?' ) ) {
that . model . destroy ( ) ;
window . site . snipt _list . escapeUI ( true ) ;
}
return false ;
} ) ;
$ ( 'button.cancel' , window . site . $main _edit ) . on ( 'click' , function ( ) {
window . site . snipt _list . escapeUI ( ) ;
return false ;
} ) ;
$ ( 'button.save' , window . site . $main _edit ) . on ( 'click' , function ( ) {
$ ( 'button.cancel' ) . text ( 'Close' ) ;
that . save ( ) ;
return false ;
} ) ;
$ ( 'button.save-and-close' , window . site . $main _edit ) . on ( 'click' , function ( ) {
that . save ( ) ;
window . site . snipt _list . escapeUI ( ) ;
return false ;
} ) ;
window . scrollTo ( 0 , 0 ) ;
return false ;
} ,
embed : function ( ) {
$ ( 'textarea' , this . $embedModal ) . remove ( ) ;
window . ui _halted = true ;
this . $embedModalBody . append ( '<textarea class="raw"></textarea>' ) ;
$textarea = $ ( 'textarea.raw' , this . $embedModalBody ) . val ( '<script type="text/javascript" src="' + this . model . get ( 'embed_url' ) + '"></script>' ) ;
this . $embedModal . modal ( 'show' ) ;
$textarea . select ( ) ;
} ,
embedFromClick : function ( ) {
this . embed ( ) ;
return false ;
} ,
embedClose : function ( ) {
$ ( 'textarea' , this . $embedModal ) . remove ( ) ;
} ,
expand : function ( ) {
this . $container . toggleClass ( 'expanded' , 100 ) ;
this . $tags . toggleClass ( 'expanded' ) ;
this . select ( true ) ;
return false ;
} ,
fadeAndRemove : function ( ) {
var $toRemove = $ ( this . el ) ;
var $nextSnipt = $toRemove . next ( 'article.snipt' ) ;
window . $selected = false ;
$toRemove . fadeOut ( 'fast' , function ( ) {
$ ( this ) . remove ( ) ;
$nextSnipt . trigger ( 'selectSnipt' ) ;
} ) ;
return false ;
} ,
goToAuthor : function ( ) {
window . location = this . model . get ( 'user' ) . absolute _url ;
} ,
guessCodeMirrorLexer : function ( val ) {
if ( val === 'html' ) { return 'htmlmixed' ; }
if ( val === 'js' ) return 'javascript' ;
if ( val === 'rb' ) return 'ruby' ;
if ( val === 'java' ) return 'clike' ;
if ( val === 'c' ) return 'clike' ;
if ( val === 'cpp' ) return 'clike' ;
if ( val === 'csharp' ) return 'clike' ;
return val ;
} ,
favoriteToggle : function ( ) {
var that = this ;
if ( this . $el . hasClass ( 'favorited' ) ) {
$ . ajax ( '/api/private/favorite/' + this . model . get ( 'favorite_id' ) + '/' , {
type : 'delete' ,
success : function ( ) {
that . $el . removeClass ( 'favorited' ) ;
that . $favorite . text ( 'Favorite' ) ;
} ,
headers : {
'Authorization' : 'ApiKey ' + window . user + ':' + window . api _key
}
} ) ;
} else {
$ . ajax ( '/api/private/favorite/' , {
data : '{"snipt": ' + this . model . get ( 'id' ) + '}' ,
contentType : 'application/json' ,
type : 'post' ,
success : function ( resp ) {
that . $el . addClass ( 'favorited' ) ;
that . model . set ( { 'favorite_id' : resp . id } , { 'silent' : true } ) ;
that . $favorite . text ( 'Favorited' ) ;
} ,
headers : {
'Authorization' : 'ApiKey ' + window . user + ':' + window . api _key
}
} ) ;
}
return false ;
} ,
initEmbeddedTweets : function ( ) {
var $embeddedTweets = $ ( 'div.embedded-tweet' ) ;
if ( $embeddedTweets . length ) {
$ . each ( $embeddedTweets , function ( ) {
var $tweetPlaceholder = $ ( this ) ;
var tweetID = $tweetPlaceholder . attr ( 'data-tweet-id' ) ;
$ . ajax ( {
url : 'https://api.twitter.com/1/statuses/oembed.json?id=' + tweetID + '&align=center' ,
dataType : 'jsonp' ,
type : 'get' ,
success : function ( resp ) {
$tweetPlaceholder . replaceWith ( $ ( resp . html ) ) ;
}
} ) ;
} ) ;
}
} ,
initLineNumbers : function ( ) {
var lines = $ ( 'span.special' , this . $el ) ;
var that = this ;
$ . each ( lines , function ( ) {
var l = $ ( this ) ;
var num = l . text ( ) . trim ( ) ;
var url = that . model . get ( 'absolute_url' ) ;
l . replaceWith ( '<a href="' + url + '#line-' + num + '">' + num + '</a>' ) ;
} ) ;
} ,
initLocalVars : function ( ) {
this . $aside = $ ( 'aside' , this . $el ) ;
this . $container = $ ( 'div.container' , this . $el ) ;
this . $copyModal = $ ( 'div.copy-modal' , this . $el ) ;
this . $copyModalBody = $ ( 'div.modal-body' , this . $copyModal ) ;
this . $embedModal = $ ( 'div.embed-modal' , this . $el ) ;
this . $embedModalBody = $ ( 'div.modal-body' , this . $embedModal ) ;
this . $favorite = $ ( 'a.favorite' , this . $el ) ;
this . $h1 = $ ( 'header h1 a' , this . $el ) ;
this . $tags = $ ( 'section.tags ul' , this . $aside ) ;
this . $copyModal . on ( 'hidden' , function ( e ) {
$ ( this ) . parent ( ) . trigger ( 'copyClose' ) ;
window . ui _halted = false ;
window . from _modal = true ;
} ) ;
this . $embedModal . on ( 'hidden' , function ( e ) {
$ ( this ) . parent ( ) . trigger ( 'embedClose' ) ;
window . ui _halted = false ;
window . from _modal = true ;
} ) ;
} ,
next : function ( ) {
if ( ! window . ui _halted ) {
nextSnipt = this . $el . next ( 'article.snipt' ) ;
if ( nextSnipt . length ) {
return nextSnipt . trigger ( 'selectSnipt' ) ;
}
}
} ,
prev : function ( ) {
if ( ! window . ui _halted ) {
prevSnipt = this . $el . prev ( 'article.snipt' ) ;
if ( prevSnipt . length ) {
return prevSnipt . trigger ( 'selectSnipt' ) ;
}
}
} ,
remove : function ( ) {
return false ;
} ,
render : function ( ) {
this . $el . html ( this . template ( { snipt : this . model . toSafe ( ) } ) ) ;
this . initLocalVars ( ) ;
this . initLineNumbers ( ) ;
this . initEmbeddedTweets ( ) ;
if ( this . model . get ( 'blog_post' ) === true ) {
this . $el . addClass ( 'blog-post' ) ;
} else {
this . $el . removeClass ( 'blog-post' ) ;
}
if ( this . model . get ( 'public' ) === true ) {
this . $el . removeClass ( 'private-snipt' ) ;
} else {
this . $el . addClass ( 'private-snipt' ) ;
}
if ( this . model . get ( 'secure' ) === true ) {
this . $el . addClass ( 'secure-snipt' ) ;
} else {
this . $el . removeClass ( 'secure-snipt' ) ;
}
if ( this . model . get ( 'user' ) . username === window . user ) {
this . $el . addClass ( 'editable' ) ;
} else {
this . $el . removeClass ( 'editable' ) ;
}
if ( this . model . get ( 'line_count' ) > 8 && ! window . detail ) {
this . $el . addClass ( 'expandable' ) ;
} else {
this . $el . removeClass ( 'expandable' ) ;
}
// For new snipts.
if ( this . $el . attr ( 'id' ) === 'new-snipt' ) {
this . $el . fadeIn ( 'fast' ) ;
this . $el . attr ( 'id' , 'snipt-' + this . model . get ( 'id' ) ) ;
}
return this ;
} ,
save : function ( ) {
$ ( 'button.save, button.save-and-close, button.delete, button.cancel' ,
window . site . $main _edit ) . attr ( 'disabled' , 'disabled' ) ;
var code ;
if ( this . $editorTextarea . is ( ':visible' ) ) {
code = this . $editorTextarea . val ( ) ;
} else {
code = window . editor . getValue ( ) ;
}
var intendedUser ;
if ( window . teams . length ) {
intendedUser = $ ( 'select[name="user"]' ) . val ( ) ;
} else {
intendedUser = window . intended _user ;
}
that . model . save ( {
'title' : $ ( 'input#snipt_title' ) . val ( ) ,
'tags' : $ ( 'label.tags textarea' ) . val ( ) ,
'tags_list' : $ ( 'label.tags textarea' ) . val ( ) ,
'lexer' : $ ( 'select[name="lexer"]' ) . val ( ) ,
'intended_user' : intendedUser ,
'lexer_name' : $ ( 'select[name="lexer"] option:selected' ) . text ( ) ,
'code' : code ,
'description' : $ ( 'textarea[name="description"]' ) . val ( ) ,
'blog_post' : $ ( 'label.blog-post input' ) . is ( ':checked' ) ,
'publish_date' : $ ( 'label.publish-date input' ) . val ( ) ,
'public' : $ ( 'label.public input' ) . is ( ':checked' ) ,
'secure' : $ ( 'label.secure input' ) . is ( ':checked' )
} , {
success : function ( model , response ) {
$ ( 'button.save, button.save-and-close, button.delete, button.cancel' ,
window . site . $main _edit ) . removeAttr ( 'disabled' ) ;
that . model . set ( 'new_from_js' , false ) ;
var $pres = $ ( 'td.code pre' ) ;
$pres . each ( function ( i ) {
var pre = $pres . eq ( i ) ;
pre . width ( pre . parents ( 'section.code' ) . width ( ) - 30 ) ;
} ) ;
} ,
error : function ( model , response ) {
if ( response . responseJSON ) {
alert ( JSON . stringify ( response . responseJSON . snipt ) ) ;
} else {
alert ( JSON . stringify ( response . statusText ) ) ;
}
}
} ) ;
} ,
select : function ( fromClick ) {
$ ( 'article.selected' , window . site . snipt _list . $el ) . removeClass ( 'selected' ) ;
this . $el . addClass ( 'selected' ) ;
if ( fromClick !== true ) {
if ( window . site . $snipts . index ( this . $el ) === 0 ) {
window . scrollTo ( 0 , 0 ) ;
} else {
window . site . $html _body . animate ( {
scrollTop : this . $el . offset ( ) . top - 50
} , 0 ) ;
}
}
window . $selected = this . $el ;
} ,
selectFromClick : function ( e ) {
this . select ( true ) ;
e . stopPropagation ( ) ;
window . site . $aside _nav . removeClass ( 'open' ) ;
} ,
setupCodeMirrorFullScreen : function ( ) {
// This is kind of messy (taken from the CodeMirror docs). Clean it up some day.
function isFullScreen ( cm ) {
return ( /\bCodeMirror-fullscreen\b/ ) . test ( cm . getWrapperElement ( ) . className ) ;
}
function winHeight ( ) {
return window . innerHeight || ( document . documentElement || document . body ) . clientHeight ;
}
function setFullScreen ( cm , full ) {
var wrap = cm . getWrapperElement ( ) ;
if ( full ) {
wrap . className += ' CodeMirror-fullscreen' ;
wrap . style . height = winHeight ( ) + 'px' ;
document . documentElement . style . overflow = 'hidden' ;
// Hax.
$ ( 'header.fixed-save' ) . hide ( ) ;
$ ( 'div.container' ) . addClass ( 'full-screened' ) ;
} else {
wrap . className = wrap . className . replace ( ' CodeMirror-fullscreen' , '' ) ;
window . editor . setSize ( '100%' , window . editorHeight ) ;
document . documentElement . style . overflow = '' ;
// Hax.
$ ( 'header.fixed-save' ) . show ( ) ;
$ ( 'div.container' ) . removeClass ( 'full-screened' ) ;
}
cm . refresh ( ) ;
}
window . editor . on ( window , 'resize' , function ( ) {
var showing = document . body . getElementsByClassName ( 'CodeMirror-fullscreen' ) [ 0 ] ;
if ( ! showing ) return ;
showing . CodeMirror . getWrapperElement ( ) . style . height = winHeight ( ) + 'px' ;
} ) ;
window . editor . setOption ( 'extraKeys' , {
'Cmd-Enter' : function ( cm ) {
that . save ( ) ;
window . site . snipt _list . escapeUI ( ) ;
return false ;
} ,
'F11' : function ( cm ) {
setFullScreen ( cm , ! isFullScreen ( cm ) ) ;
} ,
'Esc' : function ( cm ) {
if ( isFullScreen ( cm ) ) setFullScreen ( cm , false ) ;
}
} ) ;
} ,
toggleSecureView : function ( ) {
$ ( 'div.secure-view-log' ) . toggle ( ) ;
} ,
toggleHistory : function ( ) {
$ ( 'div.snipt-log' ) . toggle ( ) ;
}
} ) ;
Snipt . SniptListView = Backbone . View . extend ( {
el : 'section#snipts' ,
initialize : function ( opts ) {
var that = this ;
opts . snipts . each ( this . addExistingSnipt ) ;
this . keyboardShortcuts ( ) ;
var cmd ;
if ( navigator . platform == 'MacPPC' ||
navigator . platform == 'MacIntel' ) {
cmd = 'Cmd' ;
}
else {
cmd = 'Ctrl' ;
}
$ ( 'span.cmd-ctrl' ) . text ( cmd ) ;
var $buttonAddSnipt = $ ( 'button#add-snipt' ) ;
$buttonAddSnipt . click ( function ( e ) {
if ( window . teams . length ) {
e . stopPropagation ( ) ;
$buttonAddSnipt . parent ( ) . toggleClass ( 'open' ) ;
} else {
that . addNewSnipt ( ) ;
}
} ) ;
var $addSniptTeams = $ ( 'ul.add-snipt-teams a' ) ;
$addSniptTeams . click ( function ( e ) {
e . stopPropagation ( ) ;
window . intended _user = $ ( e . target ) . attr ( 'data-intended-user' ) ||
$ ( e . target ) . parent ( ) . attr ( 'data-intended-user' ) ;
that . addNewSnipt ( ) ;
} ) ;
} ,
addExistingSnipt : function ( ) {
var $el = $ ( this ) ;
var $created = $ ( 'li.created' , $el ) ;
var $h1 = $ ( 'header h1 a' , $el ) ;
var $public = $ ( 'div.public' , $el ) ;
var $secure = $ ( 'div.secure' , $el ) ;
var $blog _post = $ ( 'div.blog-post' , $el ) ;
var $publish _date = $ ( 'div.publish-date' , $el ) ;
var $user = $ ( 'li.author > a' , $el ) ;
var is _public = $public . text ( ) === 'True' ? true : false ;
var is _secure = $secure . text ( ) === 'True' ? true : false ;
var is _blog _post = $blog _post . text ( ) === 'True' ? true : false ;
var tag _lis = $ ( 'section.tags li' , $el ) ;
var tags = [ ] ;
for ( var i = 0 ; i < tag _lis . length ; i ++ ) {
var $tag = $ ( 'a' , tag _lis . eq ( i ) ) ;
tags [ i ] = {
name : $tag . text ( ) ,
absolute _url : $tag . attr ( 'href' )
} ;
}
var data = {
code : $ ( 'textarea.raw' , $el ) . text ( ) ,
description : $ ( 'textarea.description' , $el ) . text ( ) ,
created : $created . attr ( 'title' ) ,
created _formatted : $created . text ( ) ,
embed _url : $ ( 'div.embed-url' , $el ) . text ( ) ,
raw _url : $ ( 'div.raw-url' , $el ) . text ( ) ,
absolute _url : $h1 . attr ( 'href' ) ,
favorite _id : $el . data ( 'favorite-id' ) ,
id : parseInt ( $el . attr ( 'id' ) . replace ( 'snipt-' , '' ) , 0 ) ,
key : $ ( 'div.key' , $el ) . text ( ) ,
lexer : $ ( 'div.lexer' , $el ) . text ( ) ,
lexer _name : $ ( 'div.lexer-name' , $el ) . text ( ) ,
line _count : parseInt ( $ ( 'div.line-count' , $el ) . text ( ) , 0 ) ,
modified : $ ( 'div.modified' , $el ) . text ( ) ,
resource _uri : $ ( 'div.resource-uri' , $el ) . text ( ) ,
slug : $ ( 'div.slug' , $el ) . text ( ) ,
stylized : $ ( 'div.stylized' , $el ) . text ( ) ,
tags : tags ,
publish _date : $publish _date . text ( ) ,
tags _list : $ ( 'div.tags-list' , $el ) . text ( ) ,
title : $h1 . text ( ) ,
user : {
absolute _url : $user . attr ( 'href' ) ,
username : $user . text ( ) ,
profile : { }
}
} ;
data [ 'secure' ] = is _secure ;
data [ 'public' ] = is _public ;
data . blog _post = is _blog _post ;
var view = new Snipt . SniptView ( {
el : this ,
model : new Snipt . SniptModel ( data )
} ) ;
} ,
addNewSnipt : function ( ) {
var $articleNewSnipt = $ ( 'article#new-snipt' ) ;
if ( $articleNewSnipt . length === 0 ) {
window . site . snipt _list . $el . prepend ( '<article id="new-snipt" class="hidden snipt"></article>' ) ;
var data = {
id : '' ,
blog _post : false ,
code : '' ,
description : '' ,
tags : [ ] ,
tags _list : '' ,
title : '' ,
lexer : 'text' ,
lexer _name : 'Text only' ,
new _from _js : true ,
public : true ,
secure : false ,
user : {
username : '' ,
profile : { }
}
} ;
var newSniptView = new Snipt . SniptView ( {
el : $ ( 'article#new-snipt' ) ,
model : new Snipt . SniptModel ( data )
} ) ;
newSniptView . edit ( true ) ;
} else {
$articleNewSnipt . trigger ( 'edit' ) ;
}
return false ;
} ,
escapeUI : function ( destroyed ) {
if ( window . editing || destroyed ) {
if ( ! window . site . $html . hasClass ( 'detail' ) ) {
window . site . $body . removeClass ( 'detail' ) ;
}
window . site . $main _edit . hide ( ) ;
window . site . $body . removeClass ( 'editing' ) ;
window . site . $main . show ( ) ;
window . editing = true ;
window . ui _halted = false ;
if ( window . site . $snipts . index ( window . $selected ) === 0 ) {
window . scrollTo ( 0 , 0 ) ;
} else {
window . site . $html _body . animate ( {
scrollTop : window . $selected . offset ( ) . top - 50
} , 0 ) ;
}
if ( destroyed ) {
window . $selected . trigger ( 'fadeAndRemove' ) ;
}
} else {
if ( ! window . ui _halted ) {
if ( $selected ) {
$selected . trigger ( 'deselect' ) ;
}
window . site . $aside _nav . removeClass ( 'open' ) ;
}
}
} ,
keyboardShortcuts : function ( ) {
var that = this ;
$selected = window . selected ;
$document = $ ( document ) ;
$document . bind ( 'keydown' , 'j' , function ( ) {
if ( ! window . ui _halted ) {
if ( ! $selected ) {
window . site . $snipts . eq ( 0 ) . trigger ( 'selectSnipt' ) ;
} else {
$selected . trigger ( 'next' ) ;
}
}
} ) ;
$document . bind ( 'keydown' , 'k' , function ( ) {
if ( ! window . ui _halted ) {
if ( ! $selected ) {
window . site . $snipts . eq ( 0 ) . trigger ( 'selectSnipt' ) ;
} else {
$selected . trigger ( 'prev' ) ;
}
}
} ) ;
$document . bind ( 'keydown' , 'c' , function ( e ) {
if ( ! window . ui _halted && ! window . blog _post ) {
if ( $selected ) {
e . preventDefault ( ) ;
$selected . trigger ( 'copyRaw' ) ;
}
}
} ) ;
$document . bind ( 'keydown' , 'Ctrl+e' , function ( ) {
if ( ! window . ui _halted ) {
if ( $selected ) {
if ( $selected . hasClass ( 'editable' ) ) {
$selected . trigger ( 'edit' ) ;
}
}
}
} ) ;
$document . bind ( 'keydown' , 'Ctrl+backspace' , function ( ) {
if ( ! window . ui _halted || window . editing ) {
if ( $selected ) {
if ( $selected . hasClass ( 'editable' ) ) {
if ( confirm ( 'Are you sure you want to delete this snipt?' ) ) {
$selected . trigger ( 'destroy' ) ;
window . site . snipt _list . escapeUI ( true ) ;
}
}
}
}
} ) ;
$document . bind ( 'keydown' , 'Ctrl+del' , function ( ) {
if ( ! window . ui _halted || window . editing ) {
if ( $selected ) {
if ( $selected . hasClass ( 'editable' ) ) {
if ( confirm ( 'Are you sure you want to delete this snipt?' ) ) {
$selected . trigger ( 'destroy' ) ;
window . site . snipt _list . escapeUI ( true ) ;
}
}
}
}
} ) ;
$document . bind ( 'keydown' , 'Alt+n' , function ( ) {
if ( ! window . ui _halted ) {
that . addNewSnipt ( ) ;
}
} ) ;
$document . bind ( 'keydown' , 'Ctrl+n' , function ( ) {
if ( ! window . ui _halted ) {
that . addNewSnipt ( ) ;
}
} ) ;
$document . bind ( 'keydown' , 'Ctrl+s' , function ( ) {
if ( window . editing ) {
if ( $selected ) {
if ( $selected . hasClass ( 'editable' ) ) {
$ ( 'button.save' ) . click ( ) ;
}
}
}
} ) ;
$document . bind ( 'keydown' , 'Ctrl+c' , function ( ) {
if ( window . editing ) {
if ( $selected ) {
if ( $selected . hasClass ( 'editable' ) ) {
$ ( 'button.save-and-close' ) . click ( ) ;
}
}
}
} ) ;
$document . bind ( 'keydown' , 'esc' , function ( ) {
that . escapeUI ( ) ;
} ) ;
$document . bind ( 'keydown' , 'n' , function ( ) {
if ( ! window . ui _halted ) {
var $anc = $ ( 'li.next a' ) ;
if ( $anc . length ) {
if ( $anc . attr ( 'href' ) !== '#' ) {
window . location = $anc . attr ( 'href' ) ;
}
}
}
} ) ;
$document . bind ( 'keydown' , 'e' , function ( ) {
if ( ! window . ui _halted ) {
if ( $selected ) {
if ( $selected . hasClass ( 'expandable' ) ) {
$selected . trigger ( 'expand' ) ;
}
}
}
} ) ;
$document . bind ( 'keydown' , 'u' , function ( ) {
if ( ! window . ui _halted ) {
if ( $selected ) {
$selected . trigger ( 'goToAuthor' ) ;
}
}
} ) ;
$document . bind ( 'keydown' , 'p' , function ( ) {
if ( ! window . ui _halted ) {
var $anc = $ ( 'li.prev a' ) ;
if ( $anc . length ) {
if ( $anc . attr ( 'href' ) !== '#' ) {
window . location = $anc . attr ( 'href' ) ;
}
}
}
} ) ;
$document . bind ( 'keydown' , 'v' , function ( e ) {
if ( ! window . ui _halted && ! window . blog _post ) {
if ( $selected ) {
e . preventDefault ( ) ;
$selected . trigger ( 'embed' ) ;
}
}
} ) ;
$document . bind ( 'keydown' , 'o' , function ( ) {
if ( ! window . ui _halted ) {
if ( $selected ) {
$selected . trigger ( 'detail' ) ;
}
}
} ) ;
$document . bind ( 'keydown' , 'return' , function ( ) {
if ( ! window . ui _halted ) {
if ( $selected ) {
$selected . trigger ( 'detail' ) ;
}
}
} ) ;
}
} ) ;
} ) ( snipt . module ( 'snipt' ) ) ;
( function ( ) { 'use strict' ;
if ( typeof angular !== 'undefined' ) {
var root = this ;
var $ = root . jQuery ;
var controllers = { } ;
var app = root . app ;
// App definition.
app . config ( function ( $routeProvider ) {
// Routes.
$routeProvider . when ( '/account/' , {
templateUrl : '/static/js/src/modules/partials/profile.html' ,
controller : controllers . ProfileController
} ) ;
$routeProvider . when ( '/account/blogging/' , {
templateUrl : '/static/js/src/modules/partials/blogging.html' ,
controller : controllers . BloggingController
} ) ;
$routeProvider . when ( '/account/editor/' , {
templateUrl : '/static/js/src/modules/partials/editor.html' ,
controller : controllers . EditorController
} ) ;
$routeProvider . otherwise ( {
'redirectTo' : function ( routeParams , locationPath ) {
window . location = locationPath ;
}
} ) ;
} ) ;
// Services.
app . factory ( 'AccountStorage' , function ( $http ) {
return {
cancelSubscription : function ( ) {
var promise = $http ( {
method : 'GET' ,
url : '/account/cancel-subscription/' ,
headers : {
'Authorization' : 'ApiKey ' + window . user + ':' + window . api _key
}
} ) ;
return promise ;
} ,
getAccount : function ( ) {
var promise = $http ( {
method : 'GET' ,
url : '/api/private/profile/' + window . user _profile _id + '/' ,
headers : {
'Authorization' : 'ApiKey ' + window . user + ':' + window . api _key
}
} ) ;
return promise ;
} ,
saveAccount : function ( user , fields ) {
var promise = $http ( {
method : 'PUT' ,
url : '/api/private/profile/' + window . user _profile _id + '/' ,
headers : {
'Authorization' : 'ApiKey ' + window . user + ':' + window . api _key
} ,
data : function ( ) {
var userData = { } ;
for ( var i = 0 ; i < fields . length ; i ++ ) {
userData [ fields [ i ] ] = user [ fields [ i ] ] ;
}
return userData ;
} ( )
} ) ;
return promise ;
}
} ;
} ) ;
// Controllers.
controllers . BloggingController = function ( $scope ) {
$scope . fields = [
'blog_title' ,
'blog_theme' ,
'blog_domain' ,
'gittip_username' ,
'disqus_shortname' ,
'google_analytics_tracking_id' ,
'gauges_site_id' ,
'google_ad_client' ,
'google_ad_slot' ,
'google_ad_width' ,
'google_ad_height'
] ;
$scope . section = 'Blogging' ;
$scope . blogThemeOptions = [
{ id : 'D' , label : 'Default' } ,
{ id : 'A' , label : 'Pro Adams' }
] ;
} ;
controllers . EditorController = function ( $scope ) {
$scope . fields = [ 'default_editor' , 'editor_theme' ] ;
$scope . section = 'Editor' ;
$scope . editorOptions = [
{ id : 'C' , label : 'CodeMirror' } ,
{ id : 'T' , label : 'Textarea' }
] ;
$scope . editorThemeOptions = [
{ id : 'default' , label : 'Default' } ,
{ id : 'ambiance' , label : 'Ambiance' } ,
{ id : 'blackboard' , label : 'Blackboard' } ,
{ id : 'cobalt' , label : 'Cobalt' } ,
{ id : 'eclipse' , label : 'Eclipse' } ,
{ id : 'elegant' , label : 'Elegant' } ,
{ id : 'erlang-dark' , label : 'Erlang Dark' } ,
{ id : 'lesser-dark' , label : 'Lesser Dark' } ,
{ id : 'monokai' , label : 'Monokai' } ,
{ id : 'neat' , label : 'Neat' } ,
{ id : 'night' , label : 'Night' } ,
{ id : 'rubyblue' , label : 'Ruby Blue' } ,
{ id : 'solarized dark' , label : 'Solarized Dark' } ,
{ id : 'solarized light' , label : 'Solarized Light' } ,
{ id : 'twilight' , label : 'Twilight' } ,
{ id : 'vibrant-ink' , label : 'Vibrant Ink' } ,
{ id : 'xq-dark' , label : 'XQ Dark' }
] ;
} ;
controllers . AccountController = function ( $scope , $route , AccountStorage ) {
$scope . errors = [ ] ;
$scope . saveButtonText = 'Save' ;
$scope . route = $route ;
AccountStorage . getAccount ( ) . then ( function ( response ) {
$scope . user = response . data ;
} ) ;
$scope . saveFields = function ( fields ) {
$scope . saveButtonText = 'Saving…' ;
AccountStorage . saveAccount ( $scope . user , fields ) . then ( function onSuccess ( response ) {
// Save the new user object.
$scope . user = response . data ;
// Signal that we have a successful response.
$scope . success = true ;
// Success message.
$scope . message = $scope . route . current . scope . section + ' settings saved.' ;
// Reset the save button text.
$scope . saveButtonText = 'Save' ;
// Clear out any marked errors.
$scope . errors = [ ] ;
// Remove the success message after a while.
setTimeout ( function ( ) {
$scope . success = null ;
$scope . message = '' ;
// We have to apply since we're outside of the scope context.
$scope . $apply ( ) ;
} , 3000 ) ;
} , function onError ( response ) {
// Signal that we have an error.
$scope . success = false ;
// Reset the save button text.
$scope . saveButtonText = 'Save' ;
// If we have a response, then it's probably a validation error.
if ( response ) {
// Set the errors on the scope.
$scope . errors = response . data . profile ;
$scope . message = 'Only spaces, letters, numbers, underscores, dashes, periods, forward slashes, and "at sign" are valid.' ;
} else {
$scope . message = 'There was an error saving your settings.' ;
}
} ) ;
} ;
} ;
controllers . ProfileController = function ( $scope ) {
$scope . section = 'Profile' ;
} ;
// Assign the controllers.
app . controller ( controllers ) ;
}
} ) . call ( this ) ;
( function ( ) {
'use strict' ;
if ( typeof angular !== 'undefined' ) {
var root = this ;
var $ = root . jQuery ;
var controllers = { } ;
var app = root . app ;
// Controllers.
controllers . SniptListController = function ( $scope , AccountStorage ) {
$scope . $root . account = {
list _view : 'N'
} ;
AccountStorage . getAccount ( ) . then ( function ( response ) {
$scope . $root . account = response . data ;
$scope . $root . $watch ( 'account.list_view' , function ( newView , oldView ) {
if ( oldView !== newView ) {
AccountStorage . saveAccount ( $scope . $root . account , [ 'list_view' ] ) . then ( function ( response ) {
$scope . $root . account = response . data ;
} ) ;
}
} ) ;
} ) ;
} ;
// Assign the controllers.
app . controller ( controllers ) ;
}
} ) . call ( this ) ;
'use strict' ;
( function ( window ) {
if ( typeof angular !== 'undefined' ) {
var root = window ;
var $ = root . jQuery ;
var controllers = { } ;
var app = root . app ;
app . filter ( 'startFrom' , function ( ) {
return function ( input , start ) {
start = + start ;
return input ? input . slice ( start ) : input ;
} ;
} ) ;
// Controllers.
controllers . JobSearchController = function ( $http , $scope , filterFilter , $timeout ) {
$scope . currentPage = 0 ;
$scope . pageSize = 10 ;
$http . get ( '/jobs-json/' ) . then ( function ( response ) {
$scope . jobs = response . data ;
$scope . filterJobs ( ) ;
} ) ;
$scope . filterJobs = function ( ) {
$scope . filteredJobs = filterFilter ( $scope . jobs , $scope . query ) ;
$scope . currentPage = 0 ;
} ;
$scope . numberOfPages = function ( ) {
if ( $scope . filteredJobs ) {
return Math . ceil ( $scope . filteredJobs . length / $scope . pageSize ) ;
}
} ;
$scope . $watch ( 'query' , function ( val ) {
$scope . filterJobs ( ) ;
} ) ;
} ;
// Assign the controllers.
app . controller ( controllers ) ;
}
} ) ( window ) ;
( function ( ) { 'use strict' ;
if ( typeof angular !== 'undefined' ) {
var root = this ;
var $ = root . jQuery ;
var controllers = { } ;
var app = root . app ;
// Services.
app . factory ( 'TeamStorage' , function ( $http , $q ) {
return {
searchUsers : function ( query ) {
var promise = $http ( {
method : 'GET' ,
url : '/api/public/user/?format=json&limit=100&username__contains=' + query
} ) ;
return promise ;
}
} ;
} ) ;
// Controllers.
controllers . TeamController = function ( $scope , $timeout , TeamStorage ) {
$scope . users = [ ] ;
$scope . search = '' ;
$scope . $watch ( 'search' , function ( val ) {
$timeout . cancel ( $scope . timeout ) ;
if ( ! val ) return $scope . users = [ ] ;
$scope . timeout = $timeout ( function ( ) {
TeamStorage . searchUsers ( val ) . then ( function ( response ) {
$scope . users = response . data . objects ;
} ) ;
} , 350 ) ;
} ) ;
} ;
// Assign the controllers.
app . controller ( controllers ) ;
}
} ) . call ( this ) ;
window . CodeMirror = function ( ) { "use strict" ; function s ( a , c ) { if ( ! ( this instanceof s ) ) return new s ( a , c ) ; this . options = c = c || { } ; for ( var d in vc ) ! c . hasOwnProperty ( d ) && vc . hasOwnProperty ( d ) && ( c [ d ] = vc [ d ] ) ; D ( c ) ; var e = this . display = t ( a ) ; e . wrapper . CodeMirror = this , A ( this ) , c . autofocus && ! o && sb ( this ) , this . view = u ( new qd ( [ new pd ( [ cd ( "" , null , ib ( e ) ) ] ) ] ) ) , this . nextOpId = 0 , v ( this ) , y ( this ) , c . lineWrapping && ( this . display . wrapper . className += " CodeMirror-wrap" ) , this . setValue ( c . value || "" ) , b && setTimeout ( Wd ( rb , this , ! 0 ) , 20 ) , this . view . history = xd ( ) , ub ( this ) ; var f ; try { f = document . activeElement == e . input } catch ( g ) { } f || c . autofocus && ! o ? setTimeout ( Wd ( Ub , this ) , 20 ) : Vb ( this ) , mb ( this , function ( ) { for ( var a in uc ) uc . propertyIsEnumerable ( a ) && uc [ a ] ( this , c [ a ] , xc ) ; for ( var b = 0 ; Bc . length > b ; ++ b ) Bc [ b ] ( this ) } ) ( ) } function t ( a ) { var b = { } , d = b . input = _d ( "textarea" , null , null , "position: absolute; padding: 0; width: 1px; height: 1em; outline: none;" ) ; d . setAttribute ( "wrap" , "off" ) , d . setAttribute ( "autocorrect" , "off" ) , d . setAttribute ( "autocapitalize" , "off" ) , b . inputDiv = _d ( "div" , [ d ] , null , "overflow: hidden; position: relative; width: 3px; height: 0px;" ) , b . scrollbarH = _d ( "div" , [ _d ( "div" , null , null , "height: 1px" ) ] , "CodeMirror-hscrollbar" ) , b . scrollbarV = _d ( "div" , [ _d ( "div" , null , null , "width: 1px" ) ] , "CodeMirror-vscrollbar" ) , b . scrollbarFiller = _d ( "div" , null , "CodeMirror-scrollbar-filler" ) , b . lineDiv = _d ( "div" ) , b . selectionDiv = _d ( "div" , null , null , "position: relative; z-index: 1" ) , b . cursor = _d ( "pre" , "\u00a0" , "CodeMirror-cursor" ) , b . otherCursor = _d ( "pre" , "\u00a0" , "CodeMirror-cursor CodeMirror-secondarycursor" ) , b . measure = _d ( "div" , null , "CodeMirror-measure" ) , b . lineSpace = _d ( "div" , [ b . measure , b . selectionDiv , b . lineDiv , b . cursor , b . otherCursor ] , null , "position: relative; outline: none" ) , b . mover = _d ( "div" , [ _d ( "div" , [ b . lineSpace ] , "CodeMirror-lines" ) ] , null , "position: relative" ) , b . sizer = _d ( "div" , [ b . mover ] , "CodeMirror-sizer" ) , b . heightForcer = _d ( "div" , "\u00a0" , null , "position: absolute; height: " + Md + "px" ) , b . gutters = _d ( "div" , null , "CodeMirror-gutters" ) , b . lineGutter = null ; var f = _d ( "div" , [ b . sizer , b . heightForcer , b . gutters ] , null , "position: relative; min-height: 100%" ) ; return b . scroller = _d ( "div" , [ f ] , "CodeMirror-scroll" ) , b . scroller . setAttribute ( "tabIndex" , "-1" ) , b . wrapper = _d ( "div" , [ b . inputDiv , b . scrollbarH , b . scrollbarV , b . scrollbarFiller , b . scroller ] , "CodeMirror" ) , c && ( b . gutters . style . zIndex = - 1 , b . scroller . style . paddingRight = 0 ) , a . appendChild ? a . appendChild ( b . wrapper ) : a ( b . wrapper ) , n && ( d . style . width = "0px" ) , e || ( b . scroller . draggable = ! 0 ) , j ? ( b . inputDiv . style . height = "1px" , b . inputDiv . style . position = "absolute" ) : c && ( b . scrollbarH . style . minWidth = b . scrollbarV . style . minWidth = "18px" ) , b . viewOffset = b . showingFrom = b . showingTo = b . lastSizeC = 0 , b . lineNumWidth = b . lineNumInnerWidth = b . lineNumChars = null , b . prevInput = "" , b . alignWidgets = ! 1 , b . pollingFast = ! 1 , b . poll = new Od , b . draggingText = ! 1 , b . cachedCharWidth = b . cachedTextHeight = null , b . measureLineCache = [ ] , b . measureLineCachePos = 0 , b . inaccurateSelection = ! 1 , b . pasteIncoming = ! 1 , b } function u ( a ) { var b = { line : 0 , ch : 0 } ; return { doc : a , frontier : 0 , highlight : new Od , sel : { from : b , to : b , head : b , anchor : b , shift : ! 1 , extend : ! 1 } , scrollTop : 0 , scrollLeft : 0 , overwrite : ! 1 , focused : ! 1 , maxLine : rd ( a , 0 ) , maxLineLength : 0 , maxLineChanged : ! 1 , suppressEdits : ! 1 , goalColumn : null , cantEdit : ! 1 , keyMaps : [ ] } } function v ( a ) { var b = a . view . doc ; a . view . mode = s . getMode ( a . options , a . options . mode ) , b . iter ( 0 , b . size , function ( a ) { a . stateAfter = null } ) , a . view . frontier = 0 , U ( a , 100 ) } function w ( a ) { var b = a . view . doc , c = ib ( a . display ) ; if ( a . options . lineWrapping ) { a . display . wrapper . className += " CodeMirror-wrap" ; var d = a . display . scroller . clientWidth / jb ( a . display ) - 3 ; b . iter ( 0 , b . size , function ( a ) { if ( 0 != a . height ) { var b = Math . ceil ( a . text . length / d ) || 1 ; 1 != b && sd ( a , b * c ) } } ) , a . display . sizer . style . minWidth = "" } else a . display . wrapper . className = a . display . wrapper . className . replace ( " CodeMirror-wrap" , "" ) , C ( a . view ) , b . iter ( 0 , b . size , function ( a ) { 0 != a . height && sd ( a , c ) } ) ; nb ( a , 0 , b . size ) , bb ( a ) , setTimeout ( function ( ) { E ( a . display , a . view . doc . height ) } , 100 ) } function x ( a ) { var b = Fc [ a . options . keyMap ] . style ; a . display . wrapper . className = a . display . wrapper . className . replace ( /\s*cm-keymap-\S+/g , "" ) + ( b ? " cm-keymap-" + b : "" ) } function y ( a ) { a . display . wrapper . className = a . display .
2013-01-13 19:30:54 -08:00
var a = e . input . value = " " + ( bc ( f . from , f . to ) ? "" : e . input . value ) , c = 0 ; e . prevInput = " " , e . input . selectionStart = 1 , e . input . selectionEnd = a . length , Wb = setTimeout ( function g ( ) { " " == e . prevInput && 0 == e . input . selectionStart ? mb ( b , Ec . selectAll ) ( b ) : 10 > c ++ ? Wb = setTimeout ( g , 500 ) : rb ( b ) } , 200 ) } } var e = b . display , f = b . view . sel , g = wb ( b , c ) , i = e . scroller . scrollTop ; if ( g && ! h ) { ( bc ( f . from , f . to ) || cc ( g , f . from ) || ! cc ( g , f . to ) ) && mb ( b , ic ) ( b , g , g ) ; var j = e . input . style . cssText ; e . inputDiv . style . position = "absolute" , e . input . style . cssText = "position: fixed; width: 30px; height: 30px; top: " + ( c . clientY - 5 ) + "px; left: " + ( c . clientX - 5 ) + "px; z-index: 1000; background: white; outline: none;" + "border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);" , sb ( b ) , rb ( b , ! 0 ) , bc ( f . from , f . to ) && ( e . input . value = e . prevInput = " " ) , a ? ( Dd ( c ) , Hd ( window , "mouseup" , function l ( ) { Id ( window , "mouseup" , l ) , setTimeout ( k , 20 ) } ) ) : setTimeout ( k , 50 ) } } function Yb ( a , b , c , d , e , f ) { var g = q && Sc ( a . view . doc , b , c ) ; if ( ! g ) return Zb ( a , b , c , d , e , f ) ; for ( var h = g . length - 1 ; h >= 1 ; -- h ) Zb ( a , g [ h ] . from , g [ h ] . to , [ "" ] , f ) ; return g . length ? Zb ( a , g [ 0 ] . from , g [ 0 ] . to , d , e , f ) : void 0 } function Zb ( a , b , c , d , e , f ) { if ( ! a . view . suppressEdits ) { var g = a . view , h = g . doc , i = [ ] ; h . iter ( b . line , c . line + 1 , function ( a ) { i . push ( _c ( a . text , a . markedSpans ) ) } ) ; var j = g . sel . from , k = g . sel . to , l = Rc ( $c ( i [ 0 ] ) , $c ( Sd ( i ) ) , b . ch , c . ch , d ) , m = _b ( a , b , c , l , e , f ) ; return g . history && yd ( a , b . line , d . length , i , f , j , k , g . sel . from , g . sel . to ) , m } } function $b ( a , b ) { var c = a . view . doc , d = a . view . history , e = ( "undo" == b ? d . done : d . undone ) . pop ( ) ; if ( e ) { for ( var f = { events : [ ] , fromBefore : e . fromAfter , toBefore : e . toAfter , fromAfter : e . fromBefore , toAfter : e . toBefore } , g = e . events . length - 1 ; g >= 0 ; g -= 1 ) { d . dirtyCounter += "undo" == b ? - 1 : 1 ; var h = e . events [ g ] , i = [ ] , j = h . start + h . added ; c . iter ( h . start , j , function ( a ) { i . push ( _c ( a . text , a . markedSpans ) ) } ) , f . events . push ( { start : h . start , added : h . old . length , old : i } ) ; var k = g ? null : { from : e . fromBefore , to : e . toBefore } ; _b ( a , { line : h . start , ch : 0 } , { line : j - 1 , ch : rd ( c , j - 1 ) . text . length } , h . old , k , b ) } ( "undo" == b ? d . undone : d . done ) . push ( f ) } } function _b ( a , b , c , d , e , f ) { var g = a . view , h = g . doc , i = a . display ; if ( ! g . suppressEdits ) { var j = c . line - b . line , k = rd ( h , b . line ) , l = rd ( h , c . line ) , m = ! 1 , n = b . line ; a . options . lineWrapping || ( n = td ( Wc ( h , k ) ) , h . iter ( n , c . line + 1 , function ( a ) { return B ( h , a ) == g . maxLineLength ? ( m = ! 0 , ! 0 ) : void 0 } ) ) ; var o = Sd ( d ) , p = ib ( i ) ; if ( 0 == b . ch && 0 == c . ch && "" == Zc ( o ) ) { for ( var q = [ ] , r = 0 , s = d . length - 1 ; s > r ; ++ r ) q . push ( cd ( Zc ( d [ r ] ) , $c ( d [ r ] ) , p ) ) ; dd ( a , l , l . text , $c ( o ) ) , j && h . remove ( b . line , j , a ) , q . length && h . insert ( b . line , q ) } else if ( k == l ) if ( 1 == d . length ) dd ( a , k , k . text . slice ( 0 , b . ch ) + Zc ( d [ 0 ] ) + k . text . slice ( c . ch ) , $c ( d [ 0 ] ) ) ; else { for ( var q = [ ] , r = 1 , s = d . length - 1 ; s > r ; ++ r ) q . push ( cd ( Zc ( d [ r ] ) , $c ( d [ r ] ) , p ) ) ; q . push ( cd ( Zc ( o ) + k . text . slice ( c . ch ) , $c ( o ) , p ) ) , dd ( a , k , k . text . slice ( 0 , b . ch ) + Zc ( d [ 0 ] ) , $c ( d [ 0 ] ) ) , h . insert ( b . line + 1 , q ) } else if ( 1 == d . length ) dd ( a , k , k . text . slice ( 0 , b . ch ) + Zc ( d [ 0 ] ) + l . text . slice ( c . ch ) , $c ( d [ 0 ] ) ) , h . remove ( b . line + 1 , j , a ) ; else { var q = [ ] ; dd ( a , k , k . text . slice ( 0 , b . ch ) + Zc ( d [ 0 ] ) , $c ( d [ 0 ] ) ) , dd ( a , l , Zc ( o ) + l . text . slice ( c . ch ) , $c ( o ) ) ; for ( var r = 1 , s = d . length - 1 ; s > r ; ++ r ) q . push ( cd ( Zc ( d [ r ] ) , $c ( d [ r ] ) , p ) ) ; j > 1 && h . remove ( b . line + 1 , j - 1 , a ) , h . insert ( b . line + 1 , q ) } if ( a . options . lineWrapping ) { var t = Math . max ( 5 , i . scroller . clientWidth / jb ( i ) - 3 ) ; h . iter ( b . line , b . line + d . length , function ( a ) { if ( 0 != a . height ) { var b = ( Math . ceil ( a . text . length / t ) || 1 ) * p ; b != a . height && sd ( a , b ) } } ) } else h . iter ( n , b . line + d . length , function ( a ) { var b = B ( h , a ) ; b > g . maxLineLength && ( g . maxLine = a , g . maxLineLength = b , g . maxLineChanged = ! 0 , m = ! 1 ) } ) , m && ( a . curOp . updateMaxLine = ! 0 ) ; g . frontier = Math . min ( g . frontier , b . line ) , U ( a , 400 ) ; var u = d . length - j - 1 ; if ( nb ( a , b . line , c . line + 1 , u ) , Ld ( a , "change" ) ) { for ( var r = 0 ; d . length > r ; ++ r ) "string" != typeof d [ r ] && ( d [ r ] = d [ r ] . text ) ; var v = { from : b , to : c , text : d , origin : f } ; if ( a . curOp . textChanged ) { for ( var w = a . curOp . textChanged ; w . next ; w = w . next ) ; w . next = v } else a . curOp . textChanged = v } var x , y , z = { line : b . line + d . length - 1 , ch : Zc ( o ) . length + ( 1 == d . length ? b . ch : 0 ) } ; if ( e && "string" != typeof e ) e . from ? ( x = e . from , y = e . to ) : x = y = e ; else if ( "end" == e ) x = y = z ; else if ( "start" == e ) x = y = b ; else if ( "around" == e ) x = b , y = z ; else { var A = function ( a ) { if ( cc ( a , b ) ) return a ; if ( ! cc ( c , a ) ) return z ; var d = a . line + u , e = a . ch ; return a . line == c . line && ( e += Zc ( o ) . length - ( c . ch - ( c . line == b . line ? b . ch : 0 ) ) ) , { line : d , ch : e } } ;
} ) , g . push ( rd ( d , f ) . text . slice ( 0 , b . ch ) ) , g . join ( c || "\n" ) } , triggerOnKeyDown : mb ( null , Sb ) , execCommand : function ( a ) { return Ec [ a ] ( this ) } , moveH : mb ( null , function ( a , b ) { var c = this . view . sel , d = 0 > a ? c . from : c . to ; ( c . shift || c . extend || bc ( c . from , c . to ) ) && ( d = rc ( this , a , b , ! 0 ) ) , hc ( this , d , d , a ) } ) , deleteH : mb ( null , function ( a , b ) { var c = this . view . sel ; bc ( c . from , c . to ) ? ac ( this , "" , c . from , rc ( this , a , b , ! 1 ) , "delete" ) : ac ( this , "" , c . from , c . to , "delete" ) , this . curOp . userSelChange = ! 0 } ) , moveV : mb ( null , function ( a , b ) { var i , c = this . view , d = c . doc , e = this . display , f = c . sel . head , g = eb ( this , f , "div" ) , h = g . left ; if ( null != c . goalColumn && ( h = c . goalColumn ) , "page" == b ) { var j = Math . min ( e . wrapper . clientHeight , window . innerHeight || document . documentElement . clientHeight ) ; i = g . top + a * j } else "line" == b && ( i = a > 0 ? g . bottom + 3 : g . top - 3 ) ; do { var k = fb ( this , h , i ) ; i += 5 * a } while ( k . outside && ( 0 > a ? i > 0 : d . height > i ) ) ; "page" == b && ( e . scrollbarV . scrollTop += db ( this , k , "div" ) . top - g . top ) , hc ( this , k , k , a ) , c . goalColumn = h } ) , toggleOverwrite : function ( ) { ( this . view . overwrite = ! this . view . overwrite ) ? this . display . cursor . className += " CodeMirror-overwrite" : this . display . cursor . className = this . display . cursor . className . replace ( " CodeMirror-overwrite" , "" ) } , posFromIndex : function ( a ) { var c , b = 0 , d = this . view . doc ; return d . iter ( 0 , d . size , function ( d ) { var e = d . text . length + 1 ; return e > a ? ( c = a , ! 0 ) : ( a -= e , ++ b , void 0 ) } ) , fc ( d , { line : b , ch : c } ) } , indexFromPos : function ( a ) { if ( 0 > a . line || 0 > a . ch ) return 0 ; var b = a . ch ; return this . view . doc . iter ( 0 , a . line , function ( a ) { b += a . text . length + 1 } ) , b } , scrollTo : function ( a , b ) { null != a && ( this . display . scrollbarH . scrollLeft = this . display . scroller . scrollLeft = a ) , null != b && ( this . display . scrollbarV . scrollTop = this . display . scroller . scrollTop = b ) , K ( this , [ ] ) } , getScrollInfo : function ( ) { var a = this . display . scroller , b = Md ; return { left : a . scrollLeft , top : a . scrollTop , height : a . scrollHeight - b , width : a . scrollWidth - b , clientHeight : a . clientHeight - b , clientWidth : a . clientWidth - b } } , scrollIntoView : function ( a ) { "number" == typeof a && ( a = { line : a , ch : 0 } ) , a = a ? fc ( this . view . doc , a ) : this . view . sel . head , mc ( this , a ) } , setSize : function ( a , b ) { function c ( a ) { return "number" == typeof a || /^\d+$/ . test ( a + "" ) ? a + "px" : a } null != a && ( this . display . wrapper . style . width = c ( a ) ) , null != b && ( this . display . wrapper . style . height = c ( b ) ) , this . refresh ( ) } , on : function ( a , b ) { Hd ( this , a , b ) } , off : function ( a , b ) { Id ( this , a , b ) } , operation : function ( a ) { return mb ( this , a ) ( ) } , refresh : function ( ) { bb ( this ) , this . display . scroller . scrollHeight > this . view . scrollTop && ( this . display . scrollbarV . scrollTop = this . display . scroller . scrollTop = this . view . scrollTop ) , K ( this , ! 0 ) } , getInputField : function ( ) { return this . display . input } , getWrapperElement : function ( ) { return this . display . wrapper } , getScrollerElement : function ( ) { return this . display . scroller } , getGutterElement : function ( ) { return this . display . gutters } } ; var uc = s . optionHandlers = { } , vc = s . defaults = { } , xc = s . Init = { toString : function ( ) { return "CodeMirror.Init" } } ; wc ( "value" , "" , function ( a , b ) { a . setValue ( b ) } , ! 0 ) , wc ( "mode" , null , v , ! 0 ) , wc ( "indentUnit" , 2 , v , ! 0 ) , wc ( "indentWithTabs" , ! 1 ) , wc ( "smartIndent" , ! 0 ) , wc ( "tabSize" , 4 , function ( a ) { v ( a ) , bb ( a ) , K ( a , ! 0 ) } , ! 0 ) , wc ( "electricChars" , ! 0 ) , wc ( "theme" , "default" , function ( a ) { y ( a ) , z ( a ) } , ! 0 ) , wc ( "keyMap" , "default" , x ) , wc ( "extraKeys" , null ) , wc ( "onKeyEvent" , null ) , wc ( "onDragEvent" , null ) , wc ( "lineWrapping" , ! 1 , w , ! 0 ) , wc ( "gutters" , [ ] , function ( a ) { D ( a . options ) , z ( a ) } , ! 0 ) , wc ( "lineNumbers" , ! 1 , function ( a ) { D ( a . options ) , z ( a ) } , ! 0 ) , wc ( "firstLineNumber" , 1 , z , ! 0 ) , wc ( "lineNumberFormatter" , function ( a ) { return a } , z , ! 0 ) , wc ( "showCursorWhenSelecting" , ! 1 , Q , ! 0 ) , wc ( "readOnly" , ! 1 , function ( a , b ) { "nocursor" == b ? ( Vb ( a ) , a . display . input . blur ( ) ) : b || rb ( a , ! 0 ) } ) , wc ( "dragDrop" , ! 0 ) , wc ( "cursorBlinkRate" , 530 ) , wc ( "cursorHeight" , 1 ) , wc ( "workTime" , 100 ) , wc ( "workDelay" , 100 ) , wc ( "flattenSpans" , ! 0 ) , wc ( "pollInterval" , 100 ) , wc ( "undoDepth" , 40 ) , wc ( "viewportMargin" , 10 , function ( a ) { a . refresh ( ) } , ! 0 ) , wc ( "tabindex" , null , function ( a , b ) { a . display . input . tabIndex = b || "" } ) , wc ( "autofocus" , null ) ; var yc = s . modes = { } , zc = s . mimeModes = { } ; s . defineMode = function ( a , b ) { if ( s . defaults . mode || "null" == a || ( s . defaults . mode = a ) , arguments . length > 2 ) { b . dependencies = [ ] ; for ( var c = 2 ; arguments . length > c ; ++ c ) b . dependencies . push ( arguments [ c ] ) } yc [ a ] = b } , s . defineMIME = function ( a , b ) { zc [ a ] = b } , s . resolveMode = function ( a ) { if ( "string" == t
} s = c ; break ; default : var v = i . next ( ) ; if ( '"' == v ) o . mode = "string" , s = c ; else if ( "'" != v || n . digit _or _colon . test ( i . peek ( ) ) ) if ( ";" == v ) i . skipToEnd ( ) , s = b ; else if ( r ( v , i ) ) s = e ; else if ( "(" == v || "[" == v ) { var y , w = "" , x = i . column ( ) ; if ( "(" == v ) for ( ; null != ( y = i . eat ( n . keyword _char ) ) ; ) w += y ; w . length > 0 && ( m . propertyIsEnumerable ( w ) || /^(?:def|with)/ . test ( w ) ) ? p ( o , x + h , v ) : ( i . eatSpace ( ) , i . eol ( ) || ";" == i . peek ( ) ? p ( o , x + 1 , v ) : p ( o , x + i . current ( ) . length , v ) ) , i . backUp ( i . current ( ) . length - 1 ) , s = f } else if ( ")" == v || "]" == v ) s = f , null != o . indentStack && o . indentStack . type == ( ")" == v ? "(" : "[" ) && q ( o ) ; else { if ( ":" == v ) return i . eatWhile ( n . lang _keyword ) , d ; i . eatWhile ( n . basic ) , s = k && k . propertyIsEnumerable ( i . current ( ) ) ? g : l && l . propertyIsEnumerable ( i . current ( ) ) ? a : j && j . propertyIsEnumerable ( i . current ( ) ) ? d : null } else s = d } return s } , indent : function ( a ) { return null == a . indentStack ? a . indentation : a . indentStack . indent } } } ) , CodeMirror . defineMIME ( "text/x-clojure" , "clojure" ) , CodeMirror . defineMode ( "coffeescript" , function ( a ) { function c ( a ) { return RegExp ( "^((" + a . join ( ")|(" ) + "))\\b" ) } function s ( a , c ) { if ( a . sol ( ) ) { var l = c . scopes [ 0 ] . offset ; if ( a . eatSpace ( ) ) { var m = a . indentation ( ) ; return m > l ? "indent" : l > m ? "dedent" : null } l > 0 && w ( a , c ) } if ( a . eatSpace ( ) ) return null ; var q = a . peek ( ) ; if ( a . match ( "####" ) ) return a . skipToEnd ( ) , "comment" ; if ( a . match ( "###" ) ) return c . tokenize = u , c . tokenize ( a , c ) ; if ( "#" === q ) return a . skipToEnd ( ) , "comment" ; if ( a . match ( /^-?[0-9\.]/ , ! 1 ) ) { var s = ! 1 ; if ( a . match ( /^-?\d*\.\d+(e[\+\-]?\d+)?/i ) && ( s = ! 0 ) , a . match ( /^-?\d+\.\d*/ ) && ( s = ! 0 ) , a . match ( /^-?\.\d+/ ) && ( s = ! 0 ) , s ) return "." == a . peek ( ) && a . backUp ( 1 ) , "number" ; var v = ! 1 ; if ( a . match ( /^-?0x[0-9a-f]+/i ) && ( v = ! 0 ) , a . match ( /^-?[1-9]\d*(e[\+\-]?\d+)?/ ) && ( v = ! 0 ) , a . match ( /^-?0(?![\dx])/i ) && ( v = ! 0 ) , v ) return "number" } if ( a . match ( o ) ) return c . tokenize = t ( a . current ( ) , "string" ) , c . tokenize ( a , c ) ; if ( a . match ( p ) ) { if ( "/" != a . current ( ) || a . match ( /^.*\// , ! 1 ) ) return c . tokenize = t ( a . current ( ) , "string-2" ) , c . tokenize ( a , c ) ; a . backUp ( 1 ) } return a . match ( h ) || a . match ( g ) ? "punctuation" : a . match ( f ) || a . match ( d ) || a . match ( k ) ? "operator" : a . match ( e ) ? "punctuation" : a . match ( r ) ? "atom" : a . match ( n ) ? "keyword" : a . match ( i ) ? "variable" : a . match ( j ) ? "property" : ( a . next ( ) , b ) } function t ( c , d ) { var e = 1 == c . length ; return function ( f , g ) { for ( ; ! f . eol ( ) ; ) if ( f . eatWhile ( /[^'"\/\\]/ ) , f . eat ( "\\" ) ) { if ( f . next ( ) , e && f . eol ( ) ) return d } else { if ( f . match ( c ) ) return g . tokenize = s , d ; f . eat ( /['"\/]/ ) } return e && ( a . mode . singleLineStringErrors ? d = b : g . tokenize = s ) , d } } function u ( a , b ) { for ( ; ! a . eol ( ) ; ) { if ( a . eatWhile ( /[^#]/ ) , a . match ( "###" ) ) { b . tokenize = s ; break } a . eatWhile ( "#" ) } return "comment" } function v ( b , c , d ) { d = d || "coffee" ; var e = 0 ; if ( "coffee" === d ) { for ( var f = 0 ; c . scopes . length > f ; f ++ ) if ( "coffee" === c . scopes [ f ] . type ) { e = c . scopes [ f ] . offset + a . indentUnit ; break } } else e = b . column ( ) + b . current ( ) . length ; c . scopes . unshift ( { offset : e , type : d } ) } function w ( a , b ) { if ( 1 != b . scopes . length ) { if ( "coffee" === b . scopes [ 0 ] . type ) { for ( var c = a . indentation ( ) , d = - 1 , e = 0 ; b . scopes . length > e ; ++ e ) if ( c === b . scopes [ e ] . offset ) { d = e ; break } if ( - 1 === d ) return ! 0 ; for ( ; b . scopes [ 0 ] . offset !== c ; ) b . scopes . shift ( ) ; return ! 1 } return b . scopes . shift ( ) , ! 1 } } function x ( a , c ) { var d = c . tokenize ( a , c ) , e = a . current ( ) ; if ( "." === e ) return d = c . tokenize ( a , c ) , e = a . current ( ) , "variable" === d ? "variable" : b ; "return" === e && ( c . dedent += 1 ) , ( "->" !== e && "=>" !== e || c . lambda || "coffee" != c . scopes [ 0 ] . type || "" !== a . peek ( ) ) && "indent" !== d || v ( a , c ) ; var f = "[({" . indexOf ( e ) ; return - 1 !== f && v ( a , c , "])}" . slice ( f , f + 1 ) ) , l . exec ( e ) && v ( a , c ) , "then" == e && w ( a , c ) , "dedent" === d && w ( a , c ) ? b : ( f = "])}" . indexOf ( e ) , - 1 !== f && w ( a , c ) ? b : ( c . dedent > 0 && a . eol ( ) && "coffee" == c . scopes [ 0 ] . type && ( c . scopes . length > 1 && c . scopes . shift ( ) , c . dedent -= 1 ) , d ) ) } var b = "error" , d = RegExp ( "^[\\+\\-\\*/%&|\\^~<>!?]" ) , e = RegExp ( "^[\\(\\)\\[\\]\\{\\},:`=;\\.]" ) , f = RegExp ( "^((->)|(=>)|(\\+\\+)|(\\+\\=)|(\\-\\-)|(\\-\\=)|(\\*\\*)|(\\*\\=)|(\\/\\/)|(\\/\\=)|(==)|(!=)|(<=)|(>=)|(<>)|(<<)|(>>)|(//))" ) , g = RegExp ( "^((\\.\\.)|(\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))" ) , h = RegExp ( "^((\\.\\.\\.)|(//=)|(>>=)|(<<=)|(\\*\\*=))" ) , i = RegExp ( "^[_A-Za-z$][_A-Za-z$0-9]*" ) , j = RegExp ( "^(@|this.)[_A-Za-z$][_A-Za-z$0-9]*" ) , k = c ( [ "and" , "or" , "not" , "is" , "isnt" , "in" , "instanceof" , "typeof" ] ) , l = [ "for" , "while" , "loop" , "if" , "unless" , "else" , "switch" , "try" , "catch" , "finally" , "class" ] , m = [ "break" , "by" , " contin
return { startState : function ( ) { return { tokenStack : [ ] , context : ! 1 , lastToken : null } } , token : function ( a , b ) { return x ( a , b ) } , indent : function ( a , b ) { return E ( a , b ) } } } ) , CodeMirror . defineMode ( "gfm" , function ( a ) { function c ( a ) { return a . code = ! 1 , null } var b = 0 , d = { startState : function ( ) { return { code : ! 1 , codeBlock : ! 1 , ateSpace : ! 1 } } , copyState : function ( a ) { return { code : a . code , codeBlock : a . codeBlock , ateSpace : a . ateSpace } } , token : function ( a , c ) { if ( c . codeBlock ) return a . match ( /^```/ ) ? ( c . codeBlock = ! 1 , null ) : ( a . skipToEnd ( ) , null ) ; if ( a . sol ( ) && ( c . code = ! 1 ) , a . sol ( ) && a . match ( /^```/ ) ) return a . skipToEnd ( ) , c . codeBlock = ! 0 , null ; if ( "`" === a . peek ( ) ) { a . next ( ) ; var d = a . pos ; a . eatWhile ( "`" ) ; var e = 1 + a . pos - d ; return c . code ? e === b && ( c . code = ! 1 ) : ( b = e , c . code = ! 0 ) , null } if ( c . code ) return a . next ( ) , null ; if ( a . eatSpace ( ) ) return c . ateSpace = ! 0 , null ; if ( a . sol ( ) || c . ateSpace ) { if ( c . ateSpace = ! 1 , a . match ( /^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?:[a-f0-9]{7,40}\b)/ ) ) return "link" ; if ( a . match ( /^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/ ) ) return "link" } return a . match ( /^((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?\u00ab\u00bb\u201c\u201d\u2018\u2019]))/i ) ? "link" : ( a . next ( ) , null ) } , blankLine : c } ; return CodeMirror . defineMIME ( "gfmBase" , { name : "markdown" , underscoresBreakWords : ! 1 , fencedCodeBlocks : ! 0 } ) , CodeMirror . overlayMode ( CodeMirror . getMode ( a , "gfmBase" ) , d ) } , "markdown" ) , CodeMirror . defineMode ( "go" , function ( a ) { function g ( a , b ) { var g = a . next ( ) ; if ( '"' == g || "'" == g || "`" == g ) return b . tokenize = h ( g ) , b . tokenize ( a , b ) ; if ( /[\d\.]/ . test ( g ) ) return "." == g ? a . match ( /^[0-9]+([eE][\-+]?[0-9]+)?/ ) : "0" == g ? a . match ( /^[xX][0-9a-fA-F]+/ ) || a . match ( /^0[0-7]+/ ) : a . match ( /^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/ ) , "number" ; if ( /[\[\]{}\(\),;\:\.]/ . test ( g ) ) return f = g , null ; if ( "/" == g ) { if ( a . eat ( "*" ) ) return b . tokenize = i , i ( a , b ) ; if ( a . eat ( "/" ) ) return a . skipToEnd ( ) , "comment" } if ( e . test ( g ) ) return a . eatWhile ( e ) , "operator" ; a . eatWhile ( /[\w\$_]/ ) ; var j = a . current ( ) ; return c . propertyIsEnumerable ( j ) ? ( ( "case" == j || "default" == j ) && ( f = "case" ) , "keyword" ) : d . propertyIsEnumerable ( j ) ? "atom" : "variable" } function h ( a ) { return function ( b , c ) { for ( var e , d = ! 1 , f = ! 1 ; null != ( e = b . next ( ) ) ; ) { if ( e == a && ! d ) { f = ! 0 ; break } d = ! d && "\\" == e } return ( f || ! d && "`" != a ) && ( c . tokenize = g ) , "string" } } function i ( a , b ) { for ( var d , c = ! 1 ; d = a . next ( ) ; ) { if ( "/" == d && c ) { b . tokenize = g ; break } c = "*" == d } return "comment" } function j ( a , b , c , d , e ) { this . indented = a , this . column = b , this . type = c , this . align = d , this . prev = e } function k ( a , b , c ) { return a . context = new j ( a . indented , b , c , null , a . context ) } function l ( a ) { var b = a . context . type ; return ( ")" == b || "]" == b || "}" == b ) && ( a . indented = a . context . indented ) , a . context = a . context . prev } var f , b = a . indentUnit , c = { "break" : ! 0 , "case" : ! 0 , chan : ! 0 , "const" : ! 0 , "continue" : ! 0 , "default" : ! 0 , defer : ! 0 , "else" : ! 0 , fallthrough : ! 0 , "for" : ! 0 , func : ! 0 , go : ! 0 , "goto" : ! 0 , "if" : ! 0 , "import" : ! 0 , "interface" : ! 0 , map : ! 0 , "package" : ! 0 , range : ! 0 , "return" : ! 0 , select : ! 0 , struct : ! 0 , "switch" : ! 0 , type : ! 0 , "var" : ! 0 , bool : ! 0 , "byte" : ! 0 , complex64 : ! 0 , complex128 : ! 0 , float32 : ! 0 , float64 : ! 0 , int8 : ! 0 , int16 : ! 0 , int32 : ! 0 , int64 : ! 0 , string : ! 0 , uint8 : ! 0 , uint16 : ! 0 , uint32 : ! 0 , uint64 : ! 0 , "int" : ! 0 , uint : ! 0 , uintptr : ! 0 } , d = { "true" : ! 0 , "false" : ! 0 , iota : ! 0 , nil : ! 0 , append : ! 0 , cap : ! 0 , close : ! 0 , complex : ! 0 , copy : ! 0 , imag : ! 0 , len : ! 0 , make : ! 0 , "new" : ! 0 , panic : ! 0 , print : ! 0 , println : ! 0 , real : ! 0 , recover : ! 0 } , e = /[+\-*&^%:=<>!|\/]/ ; return { startState : function ( a ) { return { tokenize : null , context : new j ( ( a || 0 ) - b , 0 , "top" , ! 1 ) , indented : 0 , startOfLine : ! 0 } } , token : function ( a , b ) { var c = b . context ; if ( a . sol ( ) && ( null == c . align && ( c . align = ! 1 ) , b . indented = a . indentation ( ) , b . startOfLine = ! 0 , "case" == c . type && ( c . type = "}" ) ) , a . eatSpace ( ) ) return null ; f = null ; var d = ( b . tokenize || g ) ( a , b ) ; return "comment" == d ? d : ( null == c . align && ( c . align = ! 0 ) , "{" == f ? k ( b , a . column ( ) , "}" ) : "[" == f ? k ( b , a . column ( ) , "]" ) : "(" == f ? k ( b , a . column ( ) , ")" ) : "case" == f ? c . type = "case" : "}" == f && "}" == c . type ? c = l ( b ) : f == c . type && l ( b ) , b . startOfLine = ! 1 , d ) } , indent : function ( a , c ) { if ( a . tokenize != g && null != a . tokenize ) return 0 ; var d = a . context , e = c && c . charAt ( 0 ) ; if ( "case" == d . type && /^(?:case|default)\b/ . test ( c ) ) return a . context . type = "}" , d . indented ; var f = e == d . type ; return d . align ? d . column + ( f ?
if ( "&" == e ) return a . eatWhile ( /[\w\-]/ ) , d ( null , e ) ; if ( a . eatWhile ( /[\w\\\-_%.{]/ ) , "string" == c ) return d ( "string" , "string" ) ; if ( null != a . current ( ) . match ( /(^http$|^https$)/ ) ) return a . eatWhile ( /[\w\\\-_%.{:\/]/ ) , d ( "string" , "string" ) ; if ( "<" == a . peek ( ) || ">" == a . peek ( ) ) return d ( "tag" , "tag" ) ; if ( /\(/ . test ( a . peek ( ) ) ) return d ( null , e ) ; if ( "/" == a . peek ( ) && void 0 != b . stack [ b . stack . length - 1 ] ) return d ( "string" , "string" ) ; if ( a . current ( ) . match ( /\-\d|\-.\d/ ) ) return d ( "number" , "unit" ) ; if ( f ( a . current ( ) . toLowerCase ( ) ) ) return d ( "tag" , "tag" ) ; if ( /\/|[\s\)]/ . test ( a . peek ( ) || a . eol ( ) || a . eatSpace ( ) && "/" == a . peek ( ) ) && - 1 !== a . current ( ) . indexOf ( "." ) ) return "{" == a . current ( ) . substring ( a . current ( ) . length - 1 , a . current ( ) . length ) ? ( a . backUp ( 1 ) , d ( "tag" , "tag" ) ) : ( a . eatSpace ( ) , /[{<>.a-zA-Z\/]/ . test ( a . peek ( ) ) || a . eol ( ) ? d ( "tag" , "tag" ) : d ( "string" , "string" ) ) ; if ( a . eol ( ) || "[" == a . peek ( ) || "#" == a . peek ( ) || "tag" == c ) return "{" == a . current ( ) . substring ( a . current ( ) . length - 1 , a . current ( ) . length ) && a . backUp ( 1 ) , d ( "tag" , "tag" ) ; if ( "compare" == c || "a" == c || "(" == c ) return d ( "string" , "string" ) ; if ( "|" == c || "-" == a . current ( ) || "[" == c ) return d ( null , e ) ; if ( ":" == a . peek ( ) ) { a . next ( ) ; var h = ":" == a . peek ( ) ? ! 0 : ! 1 ; if ( h ) a . backUp ( 1 ) ; else { var m = a . pos , n = a . current ( ) . length ; a . eatWhile ( /[a-z\\\-]/ ) ; var o = a . pos ; if ( null != a . current ( ) . substring ( n - 1 ) . match ( g ) ) return a . backUp ( o - ( m - 1 ) ) , d ( "tag" , "tag" ) ; a . backUp ( o - ( m - 1 ) ) } return h ? d ( "tag" , "tag" ) : d ( "variable" , "variable" ) } return d ( "variable" , "variable" ) } if ( ":" == e ) return a . eatWhile ( /[a-z\\\-]/ ) , g . test ( a . current ( ) ) ? d ( "tag" , "tag" ) : ":" == a . peek ( ) ? ( a . next ( ) , a . eatWhile ( /[a-z\\\-]/ ) , a . current ( ) . match ( /\:\:\-(o|ms|moz|webkit)\-/ ) ? d ( "string" , "string" ) : g . test ( a . current ( ) . substring ( 1 ) ) ? d ( "tag" , "tag" ) : d ( null , e ) ) : d ( null , e ) ; if ( "~" != e ) return d ( null , e ) ; if ( "r" == c ) return d ( "string" , "string" ) } } } function i ( a , b ) { return a . skipToEnd ( ) , b . tokenize = h , d ( "comment" , "comment" ) } function j ( a , b ) { for ( var e , c = ! 1 ; null != ( e = a . next ( ) ) ; ) { if ( c && "/" == e ) { b . tokenize = h ; break } c = "*" == e } return d ( "comment" , "comment" ) } function k ( a , b ) { for ( var e , c = 0 ; null != ( e = a . next ( ) ) ; ) { if ( c >= 2 && ">" == e ) { b . tokenize = h ; break } c = "-" == e ? c + 1 : 0 } return d ( "comment" , "comment" ) } function l ( a ) { return function ( b , c ) { for ( var f , e = ! 1 ; null != ( f = b . next ( ) ) && ( f != a || e ) ; ) e = ! e && "\\" == f ; return e || ( c . tokenize = h ) , d ( "string" , "string" ) } } var c , b = a . indentUnit , e = "a abbr acronym address applet area article aside audio b base basefont bdi bdo big blockquote body br button canvas caption cite code col colgroup command datalist dd del details dfn dir div dl dt em embed fieldset figcaption figure font footer form frame frameset h1 h2 h3 h4 h5 h6 head header hgroup hr html i iframe img input ins keygen kbd label legend li link map mark menu meta meter nav noframes noscript object ol optgroup option output p param pre progress q rp rt ruby s samp script section select small source span strike strong style sub summary sup table tbody td textarea tfoot th thead time title tr track tt u ul var video wbr" . split ( " " ) , g = /(^\:root$|^\:nth\-child$|^\:nth\-last\-child$|^\:nth\-of\-type$|^\:nth\-last\-of\-type$|^\:first\-child$|^\:last\-child$|^\:first\-of\-type$|^\:last\-of\-type$|^\:only\-child$|^\:only\-of\-type$|^\:empty$|^\:link|^\:visited$|^\:active$|^\:hover$|^\:focus$|^\:target$|^\:lang$|^\:enabled^\:disabled$|^\:checked$|^\:first\-line$|^\:first\-letter$|^\:before$|^\:after$|^\:not$|^\:required$|^\:invalid$)/ ; return { startState : function ( a ) { return { tokenize : h , baseIndent : a || 0 , stack : [ ] } } , token : function ( a , b ) { if ( a . eatSpace ( ) ) return null ; var d = b . tokenize ( a , b ) , e = b . stack [ b . stack . length - 1 ] ; return "hash" == c && "rule" == e ? d = "atom" : "variable" == d && ( "rule" == e ? d = null : e && "@media{" != e || ( d = "when" == a . current ( ) ? "variable" : /[\s,|\s\)|\s]/ . test ( a . peek ( ) ) ? "tag" : c ) ) , "rule" == e && /^[\{\};]$/ . test ( c ) && b . stack . pop ( ) , "{" == c ? "@media" == e ? b . stack [ b . stack . length - 1 ] = "@media{" : b . stack . push ( "{" ) : "}" == c ? b . stack . pop ( ) : "@media" == c ? b . stack . push ( "@media" ) : "{" == e && "comment" != c && b . stack . push ( "rule" ) , d } , indent : function ( a , c ) { var d = a . stack . length ; return /^\}/ . test ( c ) && ( d -= "rule" == a . stack [ a . stack . length - 1 ] ? 2 : 1 ) , a . baseIndent + d * b } , electricChars : "}" } } ) , CodeMirror . defineMIME ( "text/x-less" , "less" ) , CodeMirror . mimeModes . hasOwnProperty ( "text/css" ) || CodeMirror . defineMIM
return { startState : function ( ) { return { tokenize : f , chain : null , style : null , tail : null } } , token : function ( a , b ) { return ( b . tokenize || f ) ( a , b ) } , electricChars : "{}" } } ) , CodeMirror . defineMIME ( "text/x-perl" , "perl" ) , CodeMirror . StringStream . prototype . look = function ( a ) { return this . string . charAt ( this . pos + ( a || 0 ) ) } , CodeMirror . StringStream . prototype . prefix = function ( a ) { if ( a ) { var b = this . pos - a ; return this . string . substr ( b >= 0 ? b : 0 , a ) } return this . string . substr ( 0 , this . pos - 1 ) } , CodeMirror . StringStream . prototype . suffix = function ( a ) { var b = this . string . length , c = b - this . pos + 1 ; return this . string . substr ( this . pos , a && b > a ? a : c ) } , CodeMirror . StringStream . prototype . nsuffix = function ( a ) { var b = this . pos , c = a || this . string . length - this . pos + 1 ; return this . pos += c , this . string . substr ( b , c ) } , CodeMirror . StringStream . prototype . eatSuffix = function ( a ) { var c , b = this . pos + a ; this . pos = 0 >= b ? 0 : b >= ( c = this . string . length - 1 ) ? c : b } , function ( ) { function a ( a ) { for ( var b = { } , c = a . split ( " " ) , d = 0 ; c . length > d ; ++ d ) b [ c [ d ] ] = ! 0 ; return b } function b ( a ) { return function ( b , c ) { return b . match ( a ) ? c . tokenize = null : b . skipToEnd ( ) , "string" } } var c = { name : "clike" , keywords : a ( "abstract and array as break case catch class clone const continue declare default do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final for foreach function global goto if implements interface instanceof namespace new or private protected public static switch throw trait try use var while xor die echo empty exit eval include include_once isset list require require_once return print unset __halt_compiler self static parent" ) , blockKeywords : a ( "catch do else elseif for foreach if switch try while" ) , atoms : a ( "true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__" ) , builtin : a ( " func _num _args func _get _arg func _get _args strlen strcmp strncmp strcasecmp strncasecmp each error _reporting define defined trigger _error user _error set _error _handler restore _error _handler get _declared _classes get _loaded _extensions extension _loaded get _extension _funcs debug _backtrace constant bin2hex sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html _entity _decode md5 md5 _file crc32 getimagesize image _type _to _mime _type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr _count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str _shuffle str _word _count strcoll substr substr _replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str _replace str _repeat count _chars chunk _split trim ltrim strip _tags similar _text explode implode setlocale localeconv parse _str str _pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse _url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell _exec proc _open proc _close rand srand getrandmax mt _rand mt _srand mt _getrandmax base64 _decode base64 _encode abs ceil floor round is _finite is _nan is _infinite bindec hexdec octdec decbin decoct dechex base _convert number _format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted _printable _decode set _time _limit get _cfg _var magic _quotes _runtime set _magic _quotes _runtime get _magic _quotes _gpc get _magic _quotes _runtime import _request _variables error _log serialize unserialize memory _get _usage var _dump var _export debug _zval _dump print _r highlight _file show _source highlight _string ini _get ini _get _all ini _set ini _alter ini _restore get _include _path set _include _path restore _include _path setcookie header headers _sent connection _aborted connection _status ignore _user _abort parse _ini _file is _uploaded _file move _uploaded _file intval floatval doubleval strval gettype settype is _null is _resource is _bool is _long is _float is _int is _integer is _double is _real is _numeric is _string is _array is _object is _scalar ereg ereg _replace eregi eregi _replace split spliti join sql _regcase dl pclose popen readfile rewind rmdir umask fclose
} return ":" == c ? a . eat ( "'" ) ? h ( k ( "'" , "atom" , ! 1 ) , a , b ) : a . eat ( '"' ) ? h ( k ( '"' , "atom" , ! 0 ) , a , b ) : ( a . eatWhile ( /[\w\?]/ ) , "atom" ) : "@" == c ? ( a . eat ( "@" ) , a . eatWhile ( /[\w\?]/ ) , "variable-2" ) : "$" == c ? ( a . next ( ) , a . eatWhile ( /[\w\?]/ ) , "variable-3" ) : /\w/ . test ( c ) ? ( a . eatWhile ( /[\w\?]/ ) , a . eat ( ":" ) ? "atom" : "ident" ) : "|" != c || ! b . varList && "{" != b . lastTok && "do" != b . lastTok ? /[\(\)\[\]{}\\;]/ . test ( c ) ? ( g = c , null ) : "-" == c && a . eat ( ">" ) ? "arrow" : /[=+\-\/*:\.^%<>~|]/ . test ( c ) ? ( a . eatWhile ( /[=+\-\/*:\.^%<>~|]/ ) , "operator" ) : null : ( g = "|" , null ) } function j ( ) { var a = 1 ; return function ( b , c ) { if ( "}" == b . peek ( ) ) { if ( a -- , 0 == a ) return c . tokenize . pop ( ) , c . tokenize [ c . tokenize . length - 1 ] ( b , c ) } else "{" == b . peek ( ) && a ++ ; return i ( b , c ) } } function k ( a , b , c , d ) { return function ( e , f ) { for ( var h , g = ! 1 ; null != ( h = e . next ( ) ) ; ) { if ( h == a && ( d || ! g ) ) { f . tokenize . pop ( ) ; break } if ( c && "#" == h && ! g && e . eat ( "{" ) ) { f . tokenize . push ( j ( arguments . callee ) ) ; break } g = ! g && "\\" == h } return b } } function l ( a ) { return function ( b , c ) { return b . match ( a ) ? c . tokenize . pop ( ) : b . skipToEnd ( ) , "string" } } function m ( a , b ) { return a . sol ( ) && a . match ( "=end" ) && a . eol ( ) && b . tokenize . pop ( ) , a . skipToEnd ( ) , "comment" } var g , c = b ( [ "alias" , "and" , "BEGIN" , "begin" , "break" , "case" , "class" , "def" , "defined?" , "do" , "else" , "elsif" , "END" , "end" , "ensure" , "false" , "for" , "if" , "in" , "module" , "next" , "not" , "or" , "redo" , "rescue" , "retry" , "return" , "self" , "super" , "then" , "true" , "undef" , "unless" , "until" , "when" , "while" , "yield" , "nil" , "raise" , "throw" , "catch" , "fail" , "loop" , "callcc" , "caller" , "lambda" , "proc" , "public" , "protected" , "private" , "require" , "load" , "require_relative" , "extend" , "autoload" ] ) , d = b ( [ "def" , "class" , "case" , "for" , "while" , "do" , "module" , "then" , "catch" , "loop" , "proc" , "begin" ] ) , e = b ( [ "end" , "until" ] ) , f = { "[" : "]" , "{" : "}" , "(" : ")" } ; return { startState : function ( ) { return { tokenize : [ i ] , indented : 0 , context : { type : "top" , indented : - a . indentUnit } , continuedLine : ! 1 , lastTok : null , varList : ! 1 } } , token : function ( a , b ) { a . sol ( ) && ( b . indented = a . indentation ( ) ) ; var h , f = b . tokenize [ b . tokenize . length - 1 ] ( a , b ) ; if ( "ident" == f ) { var i = a . current ( ) ; f = c . propertyIsEnumerable ( a . current ( ) ) ? "keyword" : /^[A-Z]/ . test ( i ) ? "tag" : "def" == b . lastTok || "class" == b . lastTok || b . varList ? "def" : "variable" , d . propertyIsEnumerable ( i ) ? h = "indent" : e . propertyIsEnumerable ( i ) ? h = "dedent" : "if" != i && "unless" != i || a . column ( ) != a . indentation ( ) || ( h = "indent" ) } return ( g || f && "comment" != f ) && ( b . lastTok = i || g || f ) , "|" == g && ( b . varList = ! b . varList ) , "indent" == h || /[\(\[\{]/ . test ( g ) ? b . context = { prev : b . context , type : g || f , indented : b . indented } : ( "dedent" == h || /[\)\]\}]/ . test ( g ) ) && b . context . prev && ( b . context = b . context . prev ) , a . eol ( ) && ( b . continuedLine = "\\" == g || "operator" == f ) , f } , indent : function ( b , c ) { if ( b . tokenize [ b . tokenize . length - 1 ] != i ) return 0 ; var d = c && c . charAt ( 0 ) , e = b . context , g = e . type == f [ d ] || "keyword" == e . type && /^(?:end|until|else|elsif|when|rescue)\b/ . test ( c ) ; return e . indented + ( g ? 0 : a . indentUnit ) + ( b . continuedLine ? a . indentUnit : 0 ) } , electricChars : "}de" } } ) , CodeMirror . defineMIME ( "text/x-ruby" , "ruby" ) , CodeMirror . defineMode ( "rust" , function ( ) { function h ( a , b ) { return f = a , b } function i ( a , b ) { var c = a . next ( ) ; if ( '"' == c ) return b . tokenize = j , b . tokenize ( a , b ) ; if ( "'" == c ) return f = "atom" , a . eat ( "\\" ) ? a . skipTo ( "'" ) ? ( a . next ( ) , "string" ) : "error" : ( a . next ( ) , a . eat ( "'" ) ? "string" : "error" ) ; if ( "/" == c ) { if ( a . eat ( "/" ) ) return a . skipToEnd ( ) , "comment" ; if ( a . eat ( "*" ) ) return b . tokenize = k ( 1 ) , b . tokenize ( a , b ) } if ( "#" == c ) return a . eat ( "[" ) ? ( f = "open-attr" , null ) : ( a . eatWhile ( /\w/ ) , h ( "macro" , "meta" ) ) ; if ( ":" == c && a . match ( ":<" ) ) return h ( "op" , null ) ; if ( c . match ( /\d/ ) || "." == c && a . eat ( /\d/ ) ) { var d = ! 1 ; return a . match ( /^x[\da-f]+/i ) || a . match ( /^b[01]+/ ) || ( a . eatWhile ( /\d/ ) , a . eat ( "." ) && ( d = ! 0 , a . eatWhile ( /\d/ ) ) , a . match ( /^e[+\-]?\d+/i ) && ( d = ! 0 ) ) , d ? a . match ( /^f(?:32|64)/ ) : a . match ( /^[ui](?:8|16|32|64)/ ) , h ( "atom" , "number" ) } return c . match ( /[()\[\]{}:;,]/ ) ? h ( c , null ) : "-" == c && a . eat ( ">" ) ? h ( "->" , null ) : c . match ( e ) ? ( a . eatWhile ( e ) , h ( "op" , null ) ) : ( a . eatWhile ( /\w/ ) , g = a . current ( ) , a . match ( /^::\w/ ) ? ( a . backUp ( 1 ) , h ( "prefix" , "variable-2" ) ) : b . keywords . propertyIsEnumerable ( g ) ? h ( b . keywords [ g ] , g . match ( /true|false/ ) ? "atom" : "keyword" ) : h ( "name" , "variable" ) ) } function j ( a , b ) { for ( var c , d = ! 1 ; c = a . next ( ) ; ) { if ( '"' == c && ! d ) return b . tokenize = i , h ( "atom" , "string" ) ; d = ! d && "\\" == c } return h ( "op" , "string" ) } function k ( a ) { return function ( b , c ) { fo
} function i ( a ) { return function ( b , c ) { for ( ; ! b . eol ( ) ; ) if ( b . next ( ) == a ) { c . tokenize = h ; break } return "string" } } function j ( ) { return function ( a , b ) { for ( ; ! a . eol ( ) ; ) { var c = a . next ( ) , d = a . peek ( ) ; if ( " " == c || "," == c || /[ )}]/ . test ( d ) ) { b . tokenize = h ; break } } return "string" } } function m ( ) { for ( var a = arguments . length - 1 ; a >= 0 ; a -- ) k . cc . push ( arguments [ a ] ) } function n ( ) { return m . apply ( null , arguments ) , ! 0 } function o ( a , b ) { var c = k . context && k . context . noIndent ; k . context = { prev : k . context , pluginName : a , indent : k . indented , startOfLine : b , noIndent : c } } function p ( ) { k . context && ( k . context = k . context . prev ) } function q ( a ) { if ( "openPlugin" == a ) return k . pluginName = f , n ( t , r ( k . startOfLine ) ) ; if ( "closePlugin" == a ) { var b = ! 1 ; return k . context ? ( b = k . context . pluginName != f , p ( ) ) : b = ! 0 , b && ( l = "error" ) , n ( s ( b ) ) } return "string" == a ? ( k . context && "!cdata" == k . context . name || o ( "!cdata" ) , k . tokenize == d && p ( ) , n ( ) ) : n ( ) } function r ( a ) { return function ( b ) { return "selfclosePlugin" == b || "endPlugin" == b ? n ( ) : "endPlugin" == b ? ( o ( k . pluginName , a ) , n ( ) ) : n ( ) } } function s ( a ) { return function ( b ) { return a && ( l = "error" ) , "endPlugin" == b ? n ( ) : m ( ) } } function t ( a ) { return "keyword" == a ? ( l = "attribute" , n ( t ) ) : "equals" == a ? n ( u , t ) : m ( ) } function u ( a ) { return "keyword" == a ? ( l = "string" , n ( ) ) : "string" == a ? n ( v ) : m ( ) } function v ( a ) { return "string" == a ? n ( v ) : m ( ) } var f , g , k , l , e = a . indentUnit ; return { startState : function ( ) { return { tokenize : d , cc : [ ] , indented : 0 , startOfLine : ! 0 , pluginName : null , context : null } } , token : function ( a , b ) { if ( a . sol ( ) && ( b . startOfLine = ! 0 , b . indented = a . indentation ( ) ) , a . eatSpace ( ) ) return null ; l = g = f = null ; var c = b . tokenize ( a , b ) ; if ( ( c || g ) && "comment" != c ) for ( k = b ; ; ) { var d = b . cc . pop ( ) || q ; if ( d ( g || c ) ) break } return b . startOfLine = ! 1 , l || c } , indent : function ( a , b ) { var c = a . context ; if ( c && c . noIndent ) return 0 ; for ( c && /^{\// . test ( b ) && ( c = c . prev ) ; c && ! c . startOfLine ; ) c = c . prev ; return c ? c . indent + e : 0 } , electricChars : "/" } } ) , CodeMirror . defineMIME ( "text/tiki" , "tiki" ) , CodeMirror . defineMode ( "vb" , function ( a , b ) { function d ( a ) { return RegExp ( "^((" + a . join ( ")|(" ) + "))\\b" , "i" ) } function z ( a , b ) { b . currentIndent ++ } function A ( a , b ) { b . currentIndent -- } function B ( a , b ) { if ( a . eatSpace ( ) ) return null ; var d = a . peek ( ) ; if ( "'" === d ) return a . skipToEnd ( ) , "comment" ; if ( a . match ( /^((&H)|(&O))?[0-9\.a-f]/i , ! 1 ) ) { var k = ! 1 ; if ( a . match ( /^\d*\.\d+F?/i ) ? k = ! 0 : a . match ( /^\d+\.\d*F?/ ) ? k = ! 0 : a . match ( /^\.\d+F?/ ) && ( k = ! 0 ) , k ) return a . eat ( /J/i ) , "number" ; var l = ! 1 ; if ( a . match ( /^&H[0-9a-f]+/i ) ? l = ! 0 : a . match ( /^&O[0-7]+/i ) ? l = ! 0 : a . match ( /^[1-9]\d*F?/ ) ? ( a . eat ( /J/i ) , l = ! 0 ) : a . match ( /^0(?![\dx])/i ) && ( l = ! 0 ) , l ) return a . eat ( /L/i ) , "number" } return a . match ( s ) ? ( b . tokenize = C ( a . current ( ) ) , b . tokenize ( a , b ) ) : a . match ( i ) || a . match ( h ) ? null : a . match ( g ) || a . match ( e ) || a . match ( n ) ? "operator" : a . match ( f ) ? null : a . match ( x ) ? ( z ( a , b ) , b . doInCurrentLine = ! 0 , "keyword" ) : a . match ( t ) ? ( b . doInCurrentLine ? b . doInCurrentLine = ! 1 : z ( a , b ) , "keyword" ) : a . match ( u ) ? "keyword" : a . match ( w ) ? ( A ( a , b ) , A ( a , b ) , "keyword" ) : a . match ( v ) ? ( A ( a , b ) , "keyword" ) : a . match ( r ) ? "keyword" : a . match ( q ) ? "keyword" : a . match ( j ) ? "variable" : ( a . next ( ) , c ) } function C ( a ) { var d = 1 == a . length , e = "string" ; return function ( f , g ) { for ( ; ! f . eol ( ) ; ) { if ( f . eatWhile ( /[^'"]/ ) , f . match ( a ) ) return g . tokenize = B , e ; f . eat ( /['"]/ ) } if ( d ) { if ( b . singleLineStringErrors ) return c ; g . tokenize = B } return e } } function D ( a , b ) { var d = b . tokenize ( a , b ) , e = a . current ( ) ; if ( "." === e ) return d = b . tokenize ( a , b ) , e = a . current ( ) , "variable" === d ? "variable" : c ; var f = "[({" . indexOf ( e ) ; return - 1 !== f && z ( a , b ) , "dedent" === y && A ( a , b ) ? c : ( f = "])}" . indexOf ( e ) , - 1 !== f && A ( a , b ) ? c : d ) } var c = "error" , e = RegExp ( "^[\\+\\-\\*/%&\\\\|\\^~<>!]" ) , f = RegExp ( "^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]" ) , g = RegExp ( "^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))" ) , h = RegExp ( "^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))" ) , i = RegExp ( "^((//=)|(>>=)|(<<=)|(\\*\\*=))" ) , j = RegExp ( "^[_A-Za-z][_A-Za-z0-9]*" ) , k = [ "class" , "module" , "sub" , "enum" , "select" , "while" , "if" , "function" , "get" , "set" , "property" , "try" ] , l = [ "else" , "elseif" , "case" , "catch" ] , m = [ "next" , "loop" ] , n = d ( [ "and" , "or" , "not" , "xor" , "in" ] ) , o = [ "as" , "dim" , "break" , "continue" , "optional" , "then" , "until" , "goto" , "byval" , "byref" , "new" , "handles" , "property" , "return" , "const" , "private" , "protected" , "friend" , "public" , "shared" , "static" , "true" , "false" ] , p = [ "integer" , "string" , "double" , "decimal" , "boolean" , "short" , "char" , "float" , "single" ] , q =
2013-02-09 19:08:30 -08:00
} function F ( ) { this . reset ( ) } function G ( a , b ) { this . clear ( ) , a && this . set ( a , b ) } function H ( a ) { this . registers = a , this . unamedRegister = a [ '"' ] = new G } function N ( a , b , c ) { var d = Math . min ( Math . max ( 0 , b . line ) , a . lineCount ( ) - 1 ) , e = Y ( a , d ) - 1 ; e = c ? e + 1 : e ; var f = Math . min ( Math . max ( 0 , b . ch ) , e ) ; return { line : d , ch : f } } function P ( a ) { var b = { } ; for ( var c in a ) a . hasOwnProperty ( c ) && ( b [ c ] = a [ c ] ) ; return b } function Q ( a , b , c ) { return { line : a . line + b , ch : a . ch + c } } function S ( a , b ) { for ( var c = 0 ; a . length > c ; c ++ ) if ( a [ c ] != b [ c ] && "character" != b [ c ] ) return ! 1 ; return ! 0 } function U ( a , b , c ) { return function ( ) { for ( var d = 0 ; c > d ; d ++ ) b ( a ) } } function V ( a ) { return { line : a . line , ch : a . ch } } function W ( a , b ) { return a . ch == b . ch && a . line == b . line } function X ( a , b ) { return a . line < b . line ? ! 0 : a . line == b . line && a . ch < b . ch ? ! 0 : ! 1 } function Y ( a , b ) { return a . getLine ( b ) . length } function Z ( a ) { return a . split ( "" ) . reverse ( ) . join ( "" ) } function $ ( a ) { return a . trim ? a . trim ( ) : a . replace ( /^\s+|\s+$/g , "" ) } function _ ( a ) { return a . replace ( /([.?*+$\[\]\/\\(){}|\-])/g , "\\$1" ) } function ab ( a , b ) { b . visualMode = ! 1 , b . visualLine = ! 1 ; var c = a . getCursor ( "anchor" ) , d = a . getCursor ( "head" ) ; W ( c , d ) || a . setCursor ( N ( a , d ) ) } function bb ( a , b , c ) { var d = a . getRange ( b , c ) , e = d . split ( "\n" ) ; e . length > 1 && y ( e . pop ( ) ) && ( c . line -- , c . ch = Y ( a , c . line ) ) } function cb ( a , b , c ) { b . ch = 0 , c . ch = 0 , c . line ++ } function db ( a ) { if ( ! a ) return 0 ; var b = a . search ( /\S/ ) ; return - 1 == b ? a . length : b } function eb ( a , b , c , d , e ) { var j , f = a . getCursor ( ) , g = a . getLine ( f . line ) , h = f . ch , i = g . substring ( h ) ; if ( j = e ? i . search ( /\w/ ) : i . search ( /\S/ ) , - 1 == j ) return null ; h += j , i = g . substring ( h ) ; var l , k = g . substring ( 0 , h ) ; l = d ? /^\S+/ : /\w/ . test ( g . charAt ( h ) ) ? /^\w+/ : /^[^\w\s]+/ ; var m = l . exec ( i ) , n = h , o = h + m [ 0 ] . length - 1 , p = l . exec ( Z ( k ) ) ; return p && ( n -= p [ 0 ] . length ) , b && o ++ , { start : { line : f . line , ch : n } , end : { line : f . line , ch : o } } } function fb ( a , b , c , d ) { for ( var e = b . line , h = b . ch , i = a . getLine ( e ) , j = c ? 1 : - 1 , k = d ? g : f ; ; ) { for ( var l = j > 0 ? i . length : - 1 , m = l , n = l ; h != l ; ) { for ( var o = ! 1 , p = 0 ; k . length > p && ! o ; ++ p ) if ( k [ p ] . test ( i . charAt ( h ) ) ) { for ( m = h ; h != l && k [ p ] . test ( i . charAt ( h ) ) ; ) h += j ; if ( n = h , o = m != n , m == b . ch && e == b . line && n == m + j ) continue ; return { from : Math . min ( m , n + 1 ) , to : Math . max ( m , n ) , line : e } } o || ( h += j ) } if ( e += j , ! r ( a , e ) ) return null ; i = a . getLine ( e ) , h = j > 0 ? 0 : i . length } throw "The impossible happened." } function gb ( a , b , c , d , e ) { for ( var f = a . getCursor ( ) , g = 0 ; b > g ; g ++ ) for ( var j , i = ( f . ch , f . line ) , k = ! 1 ; ! k ; ) { if ( j = fb ( a , f , c , e ) , k = ! 0 , ! j ) return c ? { line : f . line , ch : Y ( a , f . line ) } : { line : f . line , ch : 0 } ; f . line = j . line , c && d ? f . ch = j . to - 1 : c && ! d ? z ( f . ch , j . from , j . to ) && j . line == i ? ( k = ! 1 , f . ch = j . to - 1 ) : f . ch = j . from : ! c && d ? z ( f . ch , j . from , j . to ) && j . line == i ? ( k = ! 1 , f . ch = j . from ) : f . ch = j . to : c || d || ( f . ch = j . from ) } return f } function hb ( a , b , c , d ) { for ( var g , e = a . getCursor ( ) , f = e . ch , h = 0 ; b > h ; h ++ ) { var i = a . getLine ( e . line ) ; if ( g = jb ( f , i , d , c , ! 0 ) , - 1 == g ) return e ; f = g } return { line : a . getCursor ( ) . line , ch : g } } function ib ( a , b ) { var c = a . getCursor ( ) . line ; return N ( a , { line : c , ch : b - 1 } ) } function jb ( a , b , c , d , e ) { var f ; return d ? ( f = b . indexOf ( c , a + 1 ) , - 1 == f || e || ( f -= 1 ) ) : ( f = b . lastIndexOf ( c , a - 1 ) , - 1 == f || e || ( f += 1 ) ) , f } function kb ( a , b , c ) { var d = b . line ; c = c ? c : a . getLine ( d ) . charAt ( b . ch ) , A ( c , [ "(" , "[" , "{" ] ) ; var f = { "(" : ")" , ")" : "(" , "[" : "]" , "]" : "[" , "{" : "}" , "}" : "{" } [ c ] ; if ( ! f ) return b ; for ( var g = { "(" : 1 , "{" : 1 , "[" : 1 } [ c ] || - 1 , h = 1 , i = c , j = b . ch , k = a . getLine ( d ) ; i && h > 0 ; ) j += g , i = k . charAt ( j ) , i || ( d += g , j = 0 , k = a . getLine ( d ) || "" , i = k . charAt ( j ) ) , i === c ? h ++ : i === f && h -- ; return i ? { line : d , ch : j } : b } function lb ( a , b , c ) { var d = a . getCursor ( ) , e = kb ( a , d , b ) , f = kb ( a , e ) ; return f . ch += c ? 1 : 0 , e . ch += c ? 0 : 1 , { start : f , end : e } } function nb ( a , b , c ) { var g , h , i , j , d = a . getCursor ( ) , e = a . getLine ( d . line ) , f = e . split ( "" ) , k = f . indexOf ( b ) ; if ( k > d . ch ? d . ch = k : d . ch > k && f [ d . ch ] == b && ( h = d . ch , -- d . ch ) , f [ d . ch ] != b || h ) for ( i = d . ch ; i > - 1 && ! g ; i -- ) f [ i ] == b && ( g = i + 1 ) ; else g = d . ch + 1 ; if ( g && ! h ) for ( i = g , j = f . length ; j > i && ! h ; i ++ ) f [ i ] == b && ( h = i ) ; return g && h ? ( c && ( -- g , ++ h ) , { start : { line : d . line , ch : g } , end : { line : d . line , ch : h } } ) : { start : d , end : d } } function ob ( ) { this . marked = null } function pb ( a ) { var b = D ( a ) ; return b . searchState _ || ( b . searchState _ = new ob ) } function qb ( a , b , c , d ) { a . openDialog ? a . openDialog ( b , d , { bottom : ! 0 } ) : d ( prompt ( c , "" ) ) } function rb ( a ) { for ( var b = ! 1 , c = [ ] , d = 0 ; a . length > d ; d ++ ) { var e = a . charAt ( d ) ; b || "/" != e || c . push ( d ) , b = "\\" == e } return c } function sb ( a , b , c , d ) { var f , g , e = rb ( b ) ; if ( e . length ) { f = b . substring ( 0 , e [ 0 ] ) ; var h = b . substring ( e [ 0 ] ) ; g = - 1 != h . indexOf ( "i" ) } else f = b ; if ( ! f