2015-08-29 07:02:09 +02:00
/ * *
2016-06-20 04:51:17 +02:00
* simplemde v1 . 11.2
2015-08-29 07:02:09 +02:00
* Copyright Next Step Webs , Inc .
* @ link https : //github.com/NextStepWebs/simplemde-markdown-editor
* @ license MIT
* /
2016-06-20 04:51:17 +02:00
! function ( e ) { if ( "object" == typeof exports && "undefined" != typeof module ) module . exports = e ( ) ; else if ( "function" == typeof define && define . amd ) define ( [ ] , e ) ; else { var t ; t = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this , t . SimpleMDE = e ( ) } } ( function ( ) { var e ; return function t ( e , n , r ) { function i ( a , l ) { if ( ! n [ a ] ) { if ( ! e [ a ] ) { var s = "function" == typeof require && require ; if ( ! l && s ) return s ( a , ! 0 ) ; if ( o ) return o ( a , ! 0 ) ; var c = new Error ( "Cannot find module '" + a + "'" ) ; throw c . code = "MODULE_NOT_FOUND" , c } var u = n [ a ] = { exports : { } } ; e [ a ] [ 0 ] . call ( u . exports , function ( t ) { var n = e [ a ] [ 1 ] [ t ] ; return i ( n ? n : t ) } , u , u . exports , t , e , n , r ) } return n [ a ] . exports } for ( var o = "function" == typeof require && require , a = 0 ; a < r . length ; a ++ ) i ( r [ a ] ) ; return i } ( { 1 : [ function ( e , t , n ) { "use strict" ; function r ( ) { for ( var e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" , t = 0 , n = e . length ; n > t ; ++ t ) s [ t ] = e [ t ] , c [ e . charCodeAt ( t ) ] = t ; c [ "-" . charCodeAt ( 0 ) ] = 62 , c [ "_" . charCodeAt ( 0 ) ] = 63 } function i ( e ) { var t , n , r , i , o , a , l = e . length ; if ( l % 4 > 0 ) throw new Error ( "Invalid string. Length must be a multiple of 4" ) ; o = "=" === e [ l - 2 ] ? 2 : "=" === e [ l - 1 ] ? 1 : 0 , a = new u ( 3 * l / 4 - o ) , r = o > 0 ? l - 4 : l ; var s = 0 ; for ( t = 0 , n = 0 ; r > t ; t += 4 , n += 3 ) i = c [ e . charCodeAt ( t ) ] << 18 | c [ e . charCodeAt ( t + 1 ) ] << 12 | c [ e . charCodeAt ( t + 2 ) ] << 6 | c [ e . charCodeAt ( t + 3 ) ] , a [ s ++ ] = i >> 16 & 255 , a [ s ++ ] = i >> 8 & 255 , a [ s ++ ] = 255 & i ; return 2 === o ? ( i = c [ e . charCodeAt ( t ) ] << 2 | c [ e . charCodeAt ( t + 1 ) ] >> 4 , a [ s ++ ] = 255 & i ) : 1 === o && ( i = c [ e . charCodeAt ( t ) ] << 10 | c [ e . charCodeAt ( t + 1 ) ] << 4 | c [ e . charCodeAt ( t + 2 ) ] >> 2 , a [ s ++ ] = i >> 8 & 255 , a [ s ++ ] = 255 & i ) , a } function o ( e ) { return s [ e >> 18 & 63 ] + s [ e >> 12 & 63 ] + s [ e >> 6 & 63 ] + s [ 63 & e ] } function a ( e , t , n ) { for ( var r , i = [ ] , a = t ; n > a ; a += 3 ) r = ( e [ a ] << 16 ) + ( e [ a + 1 ] << 8 ) + e [ a + 2 ] , i . push ( o ( r ) ) ; return i . join ( "" ) } function l ( e ) { for ( var t , n = e . length , r = n % 3 , i = "" , o = [ ] , l = 16383 , c = 0 , u = n - r ; u > c ; c += l ) o . push ( a ( e , c , c + l > u ? u : c + l ) ) ; return 1 === r ? ( t = e [ n - 1 ] , i += s [ t >> 2 ] , i += s [ t << 4 & 63 ] , i += "==" ) : 2 === r && ( t = ( e [ n - 2 ] << 8 ) + e [ n - 1 ] , i += s [ t >> 10 ] , i += s [ t >> 4 & 63 ] , i += s [ t << 2 & 63 ] , i += "=" ) , o . push ( i ) , o . join ( "" ) } n . toByteArray = i , n . fromByteArray = l ; var s = [ ] , c = [ ] , u = "undefined" != typeof Uint8Array ? Uint8Array : Array ; r ( ) } , { } ] , 2 : [ function ( e , t , n ) { } , { } ] , 3 : [ function ( e , t , n ) { ( function ( t ) { "use strict" ; function r ( ) { try { var e = new Uint8Array ( 1 ) ; return e . foo = function ( ) { return 42 } , 42 === e . foo ( ) && "function" == typeof e . subarray && 0 === e . subarray ( 1 , 1 ) . byteLength } catch ( t ) { return ! 1 } } function i ( ) { return a . TYPED _ARRAY _SUPPORT ? 2147483647 : 1073741823 } function o ( e , t ) { if ( i ( ) < t ) throw new RangeError ( "Invalid typed array length" ) ; return a . TYPED _ARRAY _SUPPORT ? ( e = new Uint8Array ( t ) , e . _ _proto _ _ = a . prototype ) : ( null === e && ( e = new a ( t ) ) , e . length = t ) , e } function a ( e , t , n ) { if ( ! ( a . TYPED _ARRAY _SUPPORT || this instanceof a ) ) return new a ( e , t , n ) ; if ( "number" == typeof e ) { if ( "string" == typeof t ) throw new Error ( "If encoding is specified then the first argument must be a string" ) ; return u ( this , e ) } return l ( this , e , t , n ) } function l ( e , t , n , r ) { if ( "number" == typeof t ) throw new TypeError ( '"value" argument must not be a number' ) ; return "undefined" != typeof ArrayBuffer && t instanceof ArrayBuffer ? d ( e , t , n , r ) : "string" == typeof t ? f ( e , t , n ) : p ( e , t ) } function s ( e ) { if ( "number" != typeof e ) throw new TypeError ( '"size" argument must be a number' ) } function c ( e , t , n , r ) { return s ( t ) , 0 >= t ? o ( e , t ) : void 0 !== n ? "string" == typeof r ? o ( e , t ) . fill ( n , r ) : o ( e , t ) . fill ( n ) : o ( e , t ) } function u ( e , t ) { if ( s ( t ) , e = o ( e , 0 > t ? 0 : 0 | m ( t ) ) , ! a . TYPED _ARRAY _SUPPORT ) for ( var n = 0 ; t > n ; n ++ ) e [ n ] = 0 ; return e } function f ( e , t , n ) { if ( "string" == typeof n && "" !== n || ( n = "utf8" ) , ! a . isEncoding ( n ) ) throw new TypeError ( '"encoding" must be a valid string encoding' ) ; var r = 0 | v ( t , n ) ; return e = o ( e , r ) , e . write ( t , n ) , e } function h ( e , t ) { var n = 0 | m ( t . length ) ; e = o ( e , n ) ; for ( var r = 0 ; n > r ; r += 1 ) e [ r ] = 255 & t [ r ] ; return e } function d ( e , t , n , r ) { if ( t . byteLength , 0 > n || t . byteLength < n ) throw new RangeError ( "'offset' is out of bounds" ) ; if ( t . byteLength < n + ( r || 0 ) ) throw new RangeError ( "'length' is out of bounds" ) ; return t = void 0 === r ? new Uint8Array ( t , n ) : new Uint8Array ( t , n , r ) , a . TYPED _ARRAY _SUPPORT ? ( e = t , e . _ _proto _ _ = a . prototype ) : e = h ( e , t ) , e } function p ( e , t ) { if ( a . isBuffer ( t ) ) { var n = 0 | m ( t . length ) ; return e = o ( e , n ) , 0 === e . length ? e : ( t . copy ( e , 0 , 0 , n ) , e ) } if ( t ) { if ( "undefined" != typeof ArrayBuffer && t . buffer instanceof ArrayBuffer || "length" in t )
r . maxLine = null , r . maxLineLength = 0 , r . maxLineChanged = ! 1 , r . wheelDX = r . wheelDY = r . wheelStartX = r . wheelStartY = null , r . shift = ! 1 , r . selForContextMenu = null , r . activeTouch = null , n . init ( r ) } function n ( t ) { t . doc . mode = e . getMode ( t . options , t . doc . modeOption ) , r ( t ) } function r ( e ) { e . doc . iter ( function ( e ) { e . stateAfter && ( e . stateAfter = null ) , e . styles && ( e . styles = null ) } ) , e . doc . frontier = e . doc . first , _e ( e , 100 ) , e . state . modeGen ++ , e . curOp && Dt ( e ) } function i ( e ) { e . options . lineWrapping ? ( Ja ( e . display . wrapper , "CodeMirror-wrap" ) , e . display . sizer . style . minWidth = "" , e . display . sizerWidth = null ) : ( Za ( e . display . wrapper , "CodeMirror-wrap" ) , h ( e ) ) , a ( e ) , Dt ( e ) , lt ( e ) , setTimeout ( function ( ) { y ( e ) } , 100 ) } function o ( e ) { var t = yt ( e . display ) , n = e . options . lineWrapping , r = n && Math . max ( 5 , e . display . scroller . clientWidth / xt ( e . display ) - 3 ) ; return function ( i ) { if ( kr ( e . doc , i ) ) return 0 ; var o = 0 ; if ( i . widgets ) for ( var a = 0 ; a < i . widgets . length ; a ++ ) i . widgets [ a ] . height && ( o += i . widgets [ a ] . height ) ; return n ? o + ( Math . ceil ( i . text . length / r ) || 1 ) * t : o + t } } function a ( e ) { var t = e . doc , n = o ( e ) ; t . iter ( function ( e ) { var t = n ( e ) ; t != e . height && ei ( e , t ) } ) } function l ( e ) { e . display . wrapper . className = e . display . wrapper . className . replace ( /\s*cm-s-\S+/g , "" ) + e . options . theme . replace ( /(^|\s)\s*/g , " cm-s-" ) , lt ( e ) } function s ( e ) { c ( e ) , Dt ( e ) , setTimeout ( function ( ) { w ( e ) } , 20 ) } function c ( e ) { var t = e . display . gutters , n = e . options . gutters ; Ui ( t ) ; for ( var r = 0 ; r < n . length ; ++ r ) { var i = n [ r ] , o = t . appendChild ( ji ( "div" , null , "CodeMirror-gutter " + i ) ) ; "CodeMirror-linenumbers" == i && ( e . display . lineGutter = o , o . style . width = ( e . display . lineNumWidth || 1 ) + "px" ) } t . style . display = r ? "" : "none" , u ( e ) } function u ( e ) { var t = e . display . gutters . offsetWidth ; e . display . sizer . style . marginLeft = t + "px" } function f ( e ) { if ( 0 == e . height ) return 0 ; for ( var t , n = e . text . length , r = e ; t = mr ( r ) ; ) { var i = t . find ( 0 , ! 0 ) ; r = i . from . line , n += i . from . ch - i . to . ch } for ( r = e ; t = gr ( r ) ; ) { var i = t . find ( 0 , ! 0 ) ; n -= r . text . length - i . from . ch , r = i . to . line , n += r . text . length - i . to . ch } return n } function h ( e ) { var t = e . display , n = e . doc ; t . maxLine = Zr ( n , n . first ) , t . maxLineLength = f ( t . maxLine ) , t . maxLineChanged = ! 0 , n . iter ( function ( e ) { var n = f ( e ) ; n > t . maxLineLength && ( t . maxLineLength = n , t . maxLine = e ) } ) } function d ( e ) { var t = Pi ( e . gutters , "CodeMirror-linenumbers" ) ; - 1 == t && e . lineNumbers ? e . gutters = e . gutters . concat ( [ "CodeMirror-linenumbers" ] ) : t > - 1 && ! e . lineNumbers && ( e . gutters = e . gutters . slice ( 0 ) , e . gutters . splice ( t , 1 ) ) } function p ( e ) { var t = e . display , n = t . gutters . offsetWidth , r = Math . round ( e . doc . height + qe ( e . display ) ) ; return { clientHeight : t . scroller . clientHeight , viewHeight : t . wrapper . clientHeight , scrollWidth : t . scroller . scrollWidth , clientWidth : t . scroller . clientWidth , viewWidth : t . wrapper . clientWidth , barLeft : e . options . fixedGutter ? n : 0 , docHeight : r , scrollHeight : r + Ye ( e ) + t . barHeight , nativeBarWidth : t . nativeBarWidth , gutterWidth : n } } function m ( e , t , n ) { this . cm = n ; var r = this . vert = ji ( "div" , [ ji ( "div" , null , null , "min-width: 1px" ) ] , "CodeMirror-vscrollbar" ) , i = this . horiz = ji ( "div" , [ ji ( "div" , null , null , "height: 100%; min-height: 1px" ) ] , "CodeMirror-hscrollbar" ) ; e ( r ) , e ( i ) , Ea ( r , "scroll" , function ( ) { r . clientHeight && t ( r . scrollTop , "vertical" ) } ) , Ea ( i , "scroll" , function ( ) { i . clientWidth && t ( i . scrollLeft , "horizontal" ) } ) , this . checkedZeroWidth = ! 1 , xo && 8 > bo && ( this . horiz . style . minHeight = this . vert . style . minWidth = "18px" ) } function g ( ) { } function v ( t ) { t . display . scrollbars && ( t . display . scrollbars . clear ( ) , t . display . scrollbars . addClass && Za ( t . display . wrapper , t . display . scrollbars . addClass ) ) , t . display . scrollbars = new e . scrollbarModel [ t . options . scrollbarStyle ] ( function ( e ) { t . display . wrapper . insertBefore ( e , t . display . scrollbarFiller ) , Ea ( e , "mousedown" , function ( ) { t . state . focused && setTimeout ( function ( ) { t . display . input . focus ( ) } , 0 ) } ) , e . setAttribute ( "cm-not-content" , "true" ) } , function ( e , n ) { "horizontal" == n ? on ( t , e ) : rn ( t , e ) } , t ) , t . display . scrollbars . addClass && Ja ( t . display . wrapper , t . display . scrollbars . addClass ) } function y ( e , t ) { t || ( t = p ( e ) ) ; var n = e . display . barWidth , r = e . display . barHeight ; x ( e , t ) ; for ( var i = 0 ; 4 > i && n != e . display . barWidth || r != e . display . barHeight ; i ++ ) n != e . display . barWidth && e . options . lineWrapping && O ( e ) , x ( e , p ( e ) ) , n = e . display . barWidth , r = e . display . barHeight } function x ( e , t ) { var n = e . display , r = n . scrollbars . update ( t ) ; n . sizer . style . paddingRight = ( n . barWidth = r . right ) + "px" , n . sizer .
i -= ct ( ) ; else if ( "local" == n || ! n ) { var o = e . display . sizer . getBoundingClientRect ( ) ; r += o . left , i += o . top } var a = e . display . lineSpace . getBoundingClientRect ( ) ; return { left : r - a . left , top : i - a . top } } function ht ( e , t , n , r , i ) { return r || ( r = Zr ( e . doc , t . line ) ) , ut ( e , r , Je ( e , r , t . ch , i ) , n ) } function dt ( e , t , n , r , i , o ) { function a ( t , a ) { var l = tt ( e , i , t , a ? "right" : "left" , o ) ; return a ? l . left = l . right : l . right = l . left , ut ( e , r , l , n ) } function l ( e , t ) { var n = s [ t ] , r = n . level % 2 ; return e == to ( n ) && t && n . level < s [ t - 1 ] . level ? ( n = s [ -- t ] , e = no ( n ) - ( n . level % 2 ? 0 : 1 ) , r = ! 0 ) : e == no ( n ) && t < s . length - 1 && n . level < s [ t + 1 ] . level && ( n = s [ ++ t ] , e = to ( n ) - n . level % 2 , r = ! 1 ) , r && e == n . to && e > n . from ? a ( e - 1 ) : a ( e , r ) } r = r || Zr ( e . doc , t . line ) , i || ( i = et ( e , r ) ) ; var s = ii ( r ) , c = t . ch ; if ( ! s ) return a ( c ) ; var u = co ( s , c ) , f = l ( c , u ) ; return null != al && ( f . other = l ( c , al ) ) , f } function pt ( e , t ) { var n = 0 , t = me ( e . doc , t ) ; e . options . lineWrapping || ( n = xt ( e . display ) * t . ch ) ; var r = Zr ( e . doc , t . line ) , i = ri ( r ) + Ue ( e . display ) ; return { left : n , right : n , top : i , bottom : i + r . height } } function mt ( e , t , n , r ) { var i = Bo ( e , t ) ; return i . xRel = r , n && ( i . outside = ! 0 ) , i } function gt ( e , t , n ) { var r = e . doc ; if ( n += e . display . viewOffset , 0 > n ) return mt ( r . first , 0 , ! 0 , - 1 ) ; var i = ni ( r , n ) , o = r . first + r . size - 1 ; if ( i > o ) return mt ( r . first + r . size - 1 , Zr ( r , o ) . text . length , ! 0 , 1 ) ; 0 > t && ( t = 0 ) ; for ( var a = Zr ( r , i ) ; ; ) { var l = vt ( e , a , i , t , n ) , s = gr ( a ) , c = s && s . find ( 0 , ! 0 ) ; if ( ! s || ! ( l . ch > c . from . ch || l . ch == c . from . ch && l . xRel > 0 ) ) return l ; i = ti ( a = c . to . line ) } } function vt ( e , t , n , r , i ) { function o ( r ) { var i = dt ( e , Bo ( n , r ) , "line" , t , c ) ; return l = ! 0 , a > i . bottom ? i . left - s : a < i . top ? i . left + s : ( l = ! 1 , i . left ) } var a = i - ri ( t ) , l = ! 1 , s = 2 * e . display . wrapper . clientWidth , c = et ( e , t ) , u = ii ( t ) , f = t . text . length , h = ro ( t ) , d = io ( t ) , p = o ( h ) , m = l , g = o ( d ) , v = l ; if ( r > g ) return mt ( n , d , v , 1 ) ; for ( ; ; ) { if ( u ? d == h || d == fo ( t , h , 1 ) : 1 >= d - h ) { for ( var y = p > r || g - r >= r - p ? h : d , x = r - ( y == h ? p : g ) ; zi ( t . text . charAt ( y ) ) ; ) ++ y ; var b = mt ( n , y , y == h ? m : v , - 1 > x ? - 1 : x > 1 ? 1 : 0 ) ; return b } var w = Math . ceil ( f / 2 ) , k = h + w ; if ( u ) { k = h ; for ( var S = 0 ; w > S ; ++ S ) k = fo ( t , k , 1 ) } var C = o ( k ) ; C > r ? ( d = k , g = C , ( v = l ) && ( g += 1e3 ) , f = w ) : ( h = k , p = C , m = l , f -= w ) } } function yt ( e ) { if ( null != e . cachedTextHeight ) return e . cachedTextHeight ; if ( null == zo ) { zo = ji ( "pre" ) ; for ( var t = 0 ; 49 > t ; ++ t ) zo . appendChild ( document . createTextNode ( "x" ) ) , zo . appendChild ( ji ( "br" ) ) ; zo . appendChild ( document . createTextNode ( "x" ) ) } qi ( e . measure , zo ) ; var n = zo . offsetHeight / 50 ; return n > 3 && ( e . cachedTextHeight = n ) , Ui ( e . measure ) , n || 1 } function xt ( e ) { if ( null != e . cachedCharWidth ) return e . cachedCharWidth ; var t = ji ( "span" , "xxxxxxxxxx" ) , n = ji ( "pre" , [ t ] ) ; qi ( e . measure , n ) ; var r = t . getBoundingClientRect ( ) , i = ( r . right - r . left ) / 10 ; return i > 2 && ( e . cachedCharWidth = i ) , i || 10 } function bt ( e ) { e . curOp = { cm : e , viewChanged : ! 1 , startHeight : e . doc . height , forceUpdate : ! 1 , updateInput : null , typing : ! 1 , changeObjs : null , cursorActivityHandlers : null , cursorActivityCalled : 0 , selectionChanged : ! 1 , updateMaxLine : ! 1 , scrollLeft : null , scrollTop : null , scrollToPos : null , focus : ! 1 , id : ++ Yo } , Go ? Go . ops . push ( e . curOp ) : e . curOp . ownsGroup = Go = { ops : [ e . curOp ] , delayedCallbacks : [ ] } } function wt ( e ) { var t = e . delayedCallbacks , n = 0 ; do { for ( ; n < t . length ; n ++ ) t [ n ] . call ( null ) ; for ( var r = 0 ; r < e . ops . length ; r ++ ) { var i = e . ops [ r ] ; if ( i . cursorActivityHandlers ) for ( ; i . cursorActivityCalled < i . cursorActivityHandlers . length ; ) i . cursorActivityHandlers [ i . cursorActivityCalled ++ ] . call ( null , i . cm ) } } while ( n < t . length ) } function kt ( e ) { var t = e . curOp , n = t . ownsGroup ; if ( n ) try { wt ( n ) } finally { Go = null ; for ( var r = 0 ; r < n . ops . length ; r ++ ) n . ops [ r ] . cm . curOp = null ; St ( n ) } } function St ( e ) { for ( var t = e . ops , n = 0 ; n < t . length ; n ++ ) Ct ( t [ n ] ) ; for ( var n = 0 ; n < t . length ; n ++ ) Lt ( t [ n ] ) ; for ( var n = 0 ; n < t . length ; n ++ ) Tt ( t [ n ] ) ; for ( var n = 0 ; n < t . length ; n ++ ) Mt ( t [ n ] ) ; for ( var n = 0 ; n < t . length ; n ++ ) Nt ( t [ n ] ) } function Ct ( e ) { var t = e . cm , n = t . display ; T ( t ) , e . updateMaxLine && h ( t ) , e . mustUpdate = e . viewChanged || e . forceUpdate || null != e . scrollTop || e . scrollToPos && ( e . scrollToPos . from . line < n . viewFrom || e . scrollToPos . to . line >= n . viewTo ) || n . maxLineChanged && t . options . lineWrapping , e . update = e . mustUpdate && new L ( t , e . mustUpdate && { top : e . scrollTop , ensure : e . scrollToPos } , e . forceUpdate ) } function Lt ( e ) { e . updatedDisplay = e . mustUpdate && M ( e . cm , e . update ) } function Tt ( e ) { var t = e . cm , n = t . display ; e . updatedDisplay && O ( t ) , e . barMeasure = p ( t ) , n . maxLineChanged && ! t . options . lineWrapping && ( e . adjustWidthTo = Je ( t , n . maxLine , n . maxLine . text . length ) . left + 3 , t . display . sizerWidth = e
if ( ! /^s(hift)$/i . test ( l ) ) throw new Error ( "Unrecognized modifier name: " + l ) ; r = ! 0 } } return t && ( e = "Alt-" + e ) , n && ( e = "Ctrl-" + e ) , i && ( e = "Cmd-" + e ) , r && ( e = "Shift-" + e ) , e } function $n ( e ) { return "string" == typeof e ? fa [ e ] : e } function Vn ( e , t , n , r , i ) { if ( r && r . shared ) return Kn ( e , t , n , r , i ) ; if ( e . cm && ! e . cm . curOp ) return Et ( e . cm , Vn ) ( e , t , n , r , i ) ; var o = new va ( e , i ) , a = _o ( t , n ) ; if ( r && Wi ( r , o , ! 1 ) , a > 0 || 0 == a && o . clearWhenEmpty !== ! 1 ) return o ; if ( o . replacedWith && ( o . collapsed = ! 0 , o . widgetNode = ji ( "span" , [ o . replacedWith ] , "CodeMirror-widget" ) , r . handleMouseEvents || o . widgetNode . setAttribute ( "cm-ignore-events" , "true" ) , r . insertLeft && ( o . widgetNode . insertLeft = ! 0 ) ) , o . collapsed ) { if ( vr ( e , t . line , t , n , o ) || t . line != n . line && vr ( e , n . line , t , n , o ) ) throw new Error ( "Inserting collapsed marker partially overlapping an existing one" ) ; Wo = ! 0 } o . addToHistory && ci ( e , { from : t , to : n , origin : "markText" } , e . sel , NaN ) ; var l , s = t . line , c = e . cm ; if ( e . iter ( s , n . line + 1 , function ( e ) { c && o . collapsed && ! c . options . lineWrapping && yr ( e ) == c . display . maxLine && ( l = ! 0 ) , o . collapsed && s != t . line && ei ( e , 0 ) , nr ( e , new Qn ( o , s == t . line ? t . ch : null , s == n . line ? n . ch : null ) ) , ++ s } ) , o . collapsed && e . iter ( t . line , n . line + 1 , function ( t ) { kr ( e , t ) && ei ( t , 0 ) } ) , o . clearOnEnter && Ea ( o , "beforeCursorEnter" , function ( ) { o . clear ( ) } ) , o . readOnly && ( Ho = ! 0 , ( e . history . done . length || e . history . undone . length ) && e . clearHistory ( ) ) , o . collapsed && ( o . id = ++ ga , o . atomic = ! 0 ) , c ) { if ( l && ( c . curOp . updateMaxLine = ! 0 ) , o . collapsed ) Dt ( c , t . line , n . line + 1 ) ; else if ( o . className || o . title || o . startStyle || o . endStyle || o . css ) for ( var u = t . line ; u <= n . line ; u ++ ) Ht ( c , u , "text" ) ; o . atomic && Ae ( c . doc ) , Ci ( c , "markerAdded" , c , o ) } return o } function Kn ( e , t , n , r , i ) { r = Wi ( r ) , r . shared = ! 1 ; var o = [ Vn ( e , t , n , r , i ) ] , a = o [ 0 ] , l = r . widgetNode ; return Kr ( e , function ( e ) { l && ( r . widgetNode = l . cloneNode ( ! 0 ) ) , o . push ( Vn ( e , me ( e , t ) , me ( e , n ) , r , i ) ) ; for ( var s = 0 ; s < e . linked . length ; ++ s ) if ( e . linked [ s ] . isParent ) return ; a = Ii ( o ) } ) , new ya ( o , a ) } function Xn ( e ) { return e . findMarks ( Bo ( e . first , 0 ) , e . clipPos ( Bo ( e . lastLine ( ) ) ) , function ( e ) { return e . parent } ) } function Zn ( e , t ) { for ( var n = 0 ; n < t . length ; n ++ ) { var r = t [ n ] , i = r . find ( ) , o = e . clipPos ( i . from ) , a = e . clipPos ( i . to ) ; if ( _o ( o , a ) ) { var l = Vn ( e , o , a , r . primary , r . primary . type ) ; r . markers . push ( l ) , l . parent = r } } } function Jn ( e ) { for ( var t = 0 ; t < e . length ; t ++ ) { var n = e [ t ] , r = [ n . primary . doc ] ; Kr ( n . primary . doc , function ( e ) { r . push ( e ) } ) ; for ( var i = 0 ; i < n . markers . length ; i ++ ) { var o = n . markers [ i ] ; - 1 == Pi ( r , o . doc ) && ( o . parent = null , n . markers . splice ( i -- , 1 ) ) } } } function Qn ( e , t , n ) { this . marker = e , this . from = t , this . to = n } function er ( e , t ) { if ( e ) for ( var n = 0 ; n < e . length ; ++ n ) { var r = e [ n ] ; if ( r . marker == t ) return r } } function tr ( e , t ) { for ( var n , r = 0 ; r < e . length ; ++ r ) e [ r ] != t && ( n || ( n = [ ] ) ) . push ( e [ r ] ) ; return n } function nr ( e , t ) { e . markedSpans = e . markedSpans ? e . markedSpans . concat ( [ t ] ) : [ t ] , t . marker . attachLine ( e ) } function rr ( e , t , n ) { if ( e ) for ( var r , i = 0 ; i < e . length ; ++ i ) { var o = e [ i ] , a = o . marker , l = null == o . from || ( a . inclusiveLeft ? o . from <= t : o . from < t ) ; if ( l || o . from == t && "bookmark" == a . type && ( ! n || ! o . marker . insertLeft ) ) { var s = null == o . to || ( a . inclusiveRight ? o . to >= t : o . to > t ) ; ( r || ( r = [ ] ) ) . push ( new Qn ( a , o . from , s ? null : o . to ) ) } } return r } function ir ( e , t , n ) { if ( e ) for ( var r , i = 0 ; i < e . length ; ++ i ) { var o = e [ i ] , a = o . marker , l = null == o . to || ( a . inclusiveRight ? o . to >= t : o . to > t ) ; if ( l || o . from == t && "bookmark" == a . type && ( ! n || o . marker . insertLeft ) ) { var s = null == o . from || ( a . inclusiveLeft ? o . from <= t : o . from < t ) ; ( r || ( r = [ ] ) ) . push ( new Qn ( a , s ? null : o . from - t , null == o . to ? null : o . to - t ) ) } } return r } function or ( e , t ) { if ( t . full ) return null ; var n = ve ( e , t . from . line ) && Zr ( e , t . from . line ) . markedSpans , r = ve ( e , t . to . line ) && Zr ( e , t . to . line ) . markedSpans ; if ( ! n && ! r ) return null ; var i = t . from . ch , o = t . to . ch , a = 0 == _o ( t . from , t . to ) , l = rr ( n , i , a ) , s = ir ( r , o , a ) , c = 1 == t . text . length , u = Ii ( t . text ) . length + ( c ? i : 0 ) ; if ( l ) for ( var f = 0 ; f < l . length ; ++ f ) { var h = l [ f ] ; if ( null == h . to ) { var d = er ( s , h . marker ) ; d ? c && ( h . to = null == d . to ? null : d . to + u ) : h . to = i } } if ( s ) for ( var f = 0 ; f < s . length ; ++ f ) { var h = s [ f ] ; if ( null != h . to && ( h . to += u ) , null == h . from ) { var d = er ( l , h . marker ) ; d || ( h . from = u , c && ( l || ( l = [ ] ) ) . push ( h ) ) } else h . from += u , c && ( l || ( l = [ ] ) ) . push ( h ) } l && ( l = ar ( l ) ) , s && s != l && ( s = ar ( s ) ) ; var p = [ l ] ; if ( ! c ) { var m , g = t . text . length - 2 ; if ( g > 0 && l ) for ( var f = 0 ; f < l . length ; ++ f ) null == l [ f ] . to && ( m || ( m = [ ] ) ) . push ( new Qn ( l [ f ] . marker , null , null ) ) ; for ( var f = 0 ; g > f ; ++ f ) p . push ( m ) ; p . push ( s ) } return p } f
} , receivedFocus : function ( ) { this . slowPoll ( ) } , slowPoll : function ( ) { var e = this ; e . pollingFast || e . polling . set ( this . cm . options . pollInterval , function ( ) { e . poll ( ) , e . cm . state . focused && e . slowPoll ( ) } ) } , fastPoll : function ( ) { function e ( ) { var r = n . poll ( ) ; r || t ? ( n . pollingFast = ! 1 , n . slowPoll ( ) ) : ( t = ! 0 , n . polling . set ( 60 , e ) ) } var t = ! 1 , n = this ; n . pollingFast = ! 0 , n . polling . set ( 20 , e ) } , poll : function ( ) { var e = this . cm , t = this . textarea , n = this . prevInput ; if ( this . contextMenuPending || ! e . state . focused || nl ( t ) && ! n && ! this . composing || e . isReadOnly ( ) || e . options . disableInput || e . state . keySeq ) return ! 1 ; var r = t . value ; if ( r == n && ! e . somethingSelected ( ) ) return ! 1 ; if ( xo && bo >= 9 && this . hasSelection === r || Eo && /[\uf700-\uf7ff]/ . test ( r ) ) return e . display . input . reset ( ) , ! 1 ; if ( e . doc . sel == e . display . selForContextMenu ) { var i = r . charCodeAt ( 0 ) ; if ( 8203 != i || n || ( n = " " ) , 8666 == i ) return this . reset ( ) , this . cm . execCommand ( "undo" ) } for ( var o = 0 , a = Math . min ( n . length , r . length ) ; a > o && n . charCodeAt ( o ) == r . charCodeAt ( o ) ; ) ++ o ; var l = this ; return At ( e , function ( ) { Z ( e , r . slice ( o ) , n . length - o , null , l . composing ? "*compose" : null ) , r . length > 1e3 || r . indexOf ( "\n" ) > - 1 ? t . value = l . prevInput = "" : l . prevInput = r , l . composing && ( l . composing . range . clear ( ) , l . composing . range = e . markText ( l . composing . start , e . getCursor ( "to" ) , { className : "CodeMirror-composing" } ) ) } ) , ! 0 } , ensurePolled : function ( ) { this . pollingFast && this . poll ( ) && ( this . pollingFast = ! 1 ) } , onKeyPress : function ( ) { xo && bo >= 9 && ( this . hasSelection = null ) , this . fastPoll ( ) } , onContextMenu : function ( e ) { function t ( ) { if ( null != a . selectionStart ) { var e = i . somethingSelected ( ) , t = " " + ( e ? a . value : "" ) ; a . value = "⇚" , a . value = t , r . prevInput = e ? "" : " " , a . selectionStart = 1 , a . selectionEnd = t . length , o . selForContextMenu = i . doc . sel } } function n ( ) { if ( r . contextMenuPending = ! 1 , r . wrapper . style . cssText = f , a . style . cssText = u , xo && 9 > bo && o . scrollbars . setScrollTop ( o . scroller . scrollTop = s ) , null != a . selectionStart ) { ( ! xo || xo && 9 > bo ) && t ( ) ; var e = 0 , n = function ( ) { o . selForContextMenu == i . doc . sel && 0 == a . selectionStart && a . selectionEnd > 0 && " " == r . prevInput ? Et ( i , ua . selectAll ) ( i ) : e ++ < 10 ? o . detectingSelectAll = setTimeout ( n , 500 ) : o . input . reset ( ) } ; o . detectingSelectAll = setTimeout ( n , 200 ) } } var r = this , i = r . cm , o = i . display , a = r . textarea , l = Yt ( i , e ) , s = o . scroller . scrollTop ; if ( l && ! Co ) { var c = i . options . resetSelectionOnContextMenu ; c && - 1 == i . doc . sel . contains ( l ) && Et ( i , Te ) ( i . doc , de ( l ) , Wa ) ; var u = a . style . cssText , f = r . wrapper . style . cssText ; r . wrapper . style . cssText = "position: absolute" ; var h = r . wrapper . getBoundingClientRect ( ) ; if ( a . style . cssText = "position: absolute; width: 30px; height: 30px; top: " + ( e . clientY - h . top - 5 ) + "px; left: " + ( e . clientX - h . left - 5 ) + "px; z-index: 1000; background: " + ( xo ? "rgba(255, 255, 255, .05)" : "transparent" ) + "; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);" , wo ) var d = window . scrollY ; if ( o . input . focus ( ) , wo && window . scrollTo ( null , d ) , o . input . reset ( ) , i . somethingSelected ( ) || ( a . value = r . prevInput = " " ) , r . contextMenuPending = ! 0 , o . selForContextMenu = i . doc . sel , clearTimeout ( o . detectingSelectAll ) , xo && bo >= 9 && t ( ) , Do ) { Aa ( e ) ; var p = function ( ) { Ia ( window , "mouseup" , p ) , setTimeout ( n , 20 ) } ; Ea ( window , "mouseup" , p ) } else setTimeout ( n , 50 ) } } , readOnlyChanged : function ( e ) { e || this . reset ( ) } , setUneditable : Di , needsContentAttribute : ! 1 } , ne . prototype ) , ie . prototype = Wi ( { init : function ( e ) { function t ( e ) { if ( ! Ti ( r , e ) ) { if ( r . somethingSelected ( ) ) Fo = { lineWise : ! 1 , text : r . getSelections ( ) } , "cut" == e . type && r . replaceSelection ( "" , null , "cut" ) ; else { if ( ! r . options . lineWiseCopyCut ) return ; var t = ee ( r ) ; Fo = { lineWise : ! 0 , text : t . text } , "cut" == e . type && r . operation ( function ( ) { r . setSelections ( t . ranges , 0 , Wa ) , r . replaceSelection ( "" , null , "cut" ) } ) } if ( e . clipboardData && ! No ) e . preventDefault ( ) , e . clipboardData . clearData ( ) , e . clipboardData . setData ( "text/plain" , Fo . text . join ( "\n" ) ) ; else { var n = re ( ) , i = n . firstChild ; r . display . lineSpace . insertBefore ( n , r . display . lineSpace . firstChild ) , i . value = Fo . text . join ( "\n" ) ; var o = document . activeElement ; Ua ( i ) , setTimeout ( function ( ) { r . display . lineSpace . removeChild ( n ) , o . focus ( ) } , 50 ) } } } var n = this , r = n . cm , i = n . div = e . lineDiv ; te ( i ) , Ea ( i , "paste" , function ( e ) { Ti ( r , e ) || J ( e , r ) } ) , Ea ( i , "compositionstart" , function ( e ) { var t = e . data ; if ( n . composing = { sel : r . doc . sel , data : t , startData : t } , t ) { var i = r . doc . sel . pri
if ( a ) return a } } } , da = e . isModifierKey = function ( e ) { var t = "string" == typeof e ? e : ol [ e . keyCode ] ; return "Ctrl" == t || "Alt" == t || "Shift" == t || "Mod" == t } , pa = e . keyName = function ( e , t ) { if ( Co && 34 == e . keyCode && e [ "char" ] ) return ! 1 ; var n = ol [ e . keyCode ] , r = n ; return null == r || e . altGraphKey ? ! 1 : ( e . altKey && "Alt" != n && ( r = "Alt-" + r ) , ( Ro ? e . metaKey : e . ctrlKey ) && "Ctrl" != n && ( r = "Ctrl-" + r ) , ( Ro ? e . ctrlKey : e . metaKey ) && "Cmd" != n && ( r = "Cmd-" + r ) , ! t && e . shiftKey && "Shift" != n && ( r = "Shift-" + r ) , r ) } ; e . fromTextArea = function ( t , n ) { function r ( ) { t . value = c . getValue ( ) } if ( n = n ? Wi ( n ) : { } , n . value = t . value , ! n . tabindex && t . tabIndex && ( n . tabindex = t . tabIndex ) , ! n . placeholder && t . placeholder && ( n . placeholder = t . placeholder ) , null == n . autofocus ) { var i = Gi ( ) ; n . autofocus = i == t || null != t . getAttribute ( "autofocus" ) && i == document . body } if ( t . form && ( Ea ( t . form , "submit" , r ) , ! n . leaveSubmitMethodAlone ) ) { var o = t . form , a = o . submit ; try { var l = o . submit = function ( ) { r ( ) , o . submit = a , o . submit ( ) , o . submit = l } } catch ( s ) { } } n . finishInit = function ( e ) { e . save = r , e . getTextArea = function ( ) { return t } , e . toTextArea = function ( ) { e . toTextArea = isNaN , r ( ) , t . parentNode . removeChild ( e . getWrapperElement ( ) ) , t . style . display = "" , t . form && ( Ia ( t . form , "submit" , r ) , "function" == typeof t . form . submit && ( t . form . submit = a ) ) } } , t . style . display = "none" ; var c = e ( function ( e ) { t . parentNode . insertBefore ( e , t . nextSibling ) } , n ) ; return c } ; var ma = e . StringStream = function ( e , t ) { this . pos = this . start = 0 , this . string = e , this . tabSize = t || 8 , this . lastColumnPos = this . lastColumnValue = 0 , this . lineStart = 0 } ; ma . prototype = { eol : function ( ) { return this . pos >= this . string . length } , sol : function ( ) { return this . pos == this . lineStart } , peek : function ( ) { return this . string . charAt ( this . pos ) || void 0 } , next : function ( ) { return this . pos < this . string . length ? this . string . charAt ( this . pos ++ ) : void 0 } , eat : function ( e ) { var t = this . string . charAt ( this . pos ) ; if ( "string" == typeof e ) var n = t == e ; else var n = t && ( e . test ? e . test ( t ) : e ( t ) ) ; return n ? ( ++ this . pos , t ) : void 0 } , eatWhile : function ( e ) { for ( var t = this . pos ; this . eat ( e ) ; ) ; return this . pos > t } , eatSpace : function ( ) { for ( var e = this . pos ; /[\s\u00a0]/ . test ( this . string . charAt ( this . pos ) ) ; ) ++ this . pos ; return this . pos > e } , skipToEnd : function ( ) { this . pos = this . string . length } , skipTo : function ( e ) { var t = this . string . indexOf ( e , this . pos ) ; return t > - 1 ? ( this . pos = t , ! 0 ) : void 0 } , backUp : function ( e ) { this . pos -= e } , column : function ( ) { return this . lastColumnPos < this . start && ( this . lastColumnValue = Fa ( this . string , this . start , this . tabSize , this . lastColumnPos , this . lastColumnValue ) , this . lastColumnPos = this . start ) , this . lastColumnValue - ( this . lineStart ? Fa ( this . string , this . lineStart , this . tabSize ) : 0 ) } , indentation : function ( ) { return Fa ( this . string , null , this . tabSize ) - ( this . lineStart ? Fa ( this . string , this . lineStart , this . tabSize ) : 0 ) } , match : function ( e , t , n ) { if ( "string" != typeof e ) { var r = this . string . slice ( this . pos ) . match ( e ) ; return r && r . index > 0 ? null : ( r && t !== ! 1 && ( this . pos += r [ 0 ] . length ) , r ) } var i = function ( e ) { return n ? e . toLowerCase ( ) : e } , o = this . string . substr ( this . pos , e . length ) ; return i ( o ) == i ( e ) ? ( t !== ! 1 && ( this . pos += e . length ) , ! 0 ) : void 0 } , current : function ( ) { return this . string . slice ( this . start , this . pos ) } , hideFirstChars : function ( e , t ) { this . lineStart += e ; try { return t ( ) } finally { this . lineStart -= e } } } ; var ga = 0 , va = e . TextMarker = function ( e , t ) { this . lines = [ ] , this . type = t , this . doc = e , this . id = ++ ga } ; Ai ( va ) , va . prototype . clear = function ( ) { if ( ! this . explicitlyCleared ) { var e = this . doc . cm , t = e && ! e . curOp ; if ( t && bt ( e ) , Ni ( this , "clear" ) ) { var n = this . find ( ) ; n && Ci ( this , "clear" , n . from , n . to ) } for ( var r = null , i = null , o = 0 ; o < this . lines . length ; ++ o ) { var a = this . lines [ o ] , l = er ( a . markedSpans , this ) ; e && ! this . collapsed ? Ht ( e , ti ( a ) , "text" ) : e && ( null != l . to && ( i = ti ( a ) ) , null != l . from && ( r = ti ( a ) ) ) , a . markedSpans = tr ( a . markedSpans , l ) , null == l . from && this . collapsed && ! kr ( this . doc , a ) && e && ei ( a , yt ( e . display ) ) } if ( e && this . collapsed && ! e . options . lineWrapping ) for ( var o = 0 ; o < this . lines . length ; ++ o ) { var s = yr ( this . lines [ o ] ) , c = f ( s ) ; c > e . display . maxLineLength && ( e . display . maxLine = s , e . display . maxLineLength = c , e . display . maxLineChanged = ! 0 ) } null != r && e && this . collapsed && Dt ( e , r , i + 1 ) , this . lines . length = 0 , this . explicitlyCleared = ! 0 , this . atomic && this . doc . cantEdit && ( this . doc . cantEdit = ! 1 , e && Ae ( e . doc ) ) , e && Ci ( e , "markerCleared" , e , this ) , t && kt ( e ) , this . parent && this . parent . clear ( ) } } , va . prototype . find
h ( r ) ; var l = t . sol ( ) , s = t . next ( ) ; if ( r . linkTitle ) { r . linkTitle = ! 1 ; var u = s ; "(" === s && ( u = ")" ) , u = ( u + "" ) . replace ( /([.?*+^$[\]\\(){}|-])/g , "\\$1" ) ; var f = "^\\s*(?:[^" + u + "\\\\]+|\\\\\\\\|\\\\.)" + u ; if ( t . match ( new RegExp ( f ) , ! 0 ) ) return S . linkHref } if ( "`" === s ) { var d = r . formatting ; n . highlightFormatting && ( r . formatting = "code" ) , t . eatWhile ( "`" ) ; var p = t . current ( ) . length ; if ( 0 == r . code ) return r . code = p , h ( r ) ; if ( p == r . code ) { var v = h ( r ) ; return r . code = 0 , v } return r . formatting = d , h ( r ) } if ( r . code ) return h ( r ) ; if ( "\\" === s && ( t . next ( ) , n . highlightFormatting ) ) { var y = h ( r ) , x = S . formatting + "-escape" ; return y ? y + " " + x : x } if ( "!" === s && t . match ( /\[[^\]]*\] ?(?:\(|\[)/ , ! 1 ) ) return t . match ( /\[[^\]]*\]/ ) , r . inline = r . f = g , S . image ; if ( "[" === s && t . match ( /[^\]]*\](\(.*\)| ?\[.*?\])/ , ! 1 ) ) return r . linkText = ! 0 , n . highlightFormatting && ( r . formatting = "link" ) , h ( r ) ; if ( "]" === s && r . linkText && t . match ( /\(.*?\)| ?\[.*?\]/ , ! 1 ) ) { n . highlightFormatting && ( r . formatting = "link" ) ; var y = h ( r ) ; return r . linkText = ! 1 , r . inline = r . f = g , y } if ( "<" === s && t . match ( /^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/ , ! 1 ) ) { r . f = r . inline = m , n . highlightFormatting && ( r . formatting = "link" ) ; var y = h ( r ) ; return y ? y += " " : y = "" , y + S . linkInline } if ( "<" === s && t . match ( /^[^> \\]+@(?:[^\\>]|\\.)+>/ , ! 1 ) ) { r . f = r . inline = m , n . highlightFormatting && ( r . formatting = "link" ) ; var y = h ( r ) ; return y ? y += " " : y = "" , y + S . linkEmail } if ( "<" === s && t . match ( /^(!--|\w)/ , ! 1 ) ) { var b = t . string . indexOf ( ">" , t . pos ) ; if ( - 1 != b ) { var k = t . string . substring ( t . start , b ) ; /markdown\s*=\s*('|"){0,1}1('|"){0,1}/ . test ( k ) && ( r . md _inside = ! 0 ) } return t . backUp ( 1 ) , r . htmlState = e . startState ( w ) , o ( t , r , c ) } if ( "<" === s && t . match ( /^\/\w*?>/ ) ) return r . md _inside = ! 1 , "tag" ; var C = ! 1 ; if ( ! n . underscoresBreakWords && "_" === s && "_" !== t . peek ( ) && t . match ( /(\w)/ , ! 1 ) ) { var L = t . pos - 2 ; if ( L >= 0 ) { var T = t . string . charAt ( L ) ; "_" !== T && T . match ( /(\w)/ , ! 1 ) && ( C = ! 0 ) } } if ( "*" === s || "_" === s && ! C ) if ( l && " " === t . peek ( ) ) ; else { if ( r . strong === s && t . eat ( s ) ) { n . highlightFormatting && ( r . formatting = "strong" ) ; var v = h ( r ) ; return r . strong = ! 1 , v } if ( ! r . strong && t . eat ( s ) ) return r . strong = s , n . highlightFormatting && ( r . formatting = "strong" ) , h ( r ) ; if ( r . em === s ) { n . highlightFormatting && ( r . formatting = "em" ) ; var v = h ( r ) ; return r . em = ! 1 , v } if ( ! r . em ) return r . em = s , n . highlightFormatting && ( r . formatting = "em" ) , h ( r ) } else if ( " " === s && ( t . eat ( "*" ) || t . eat ( "_" ) ) ) { if ( " " === t . peek ( ) ) return h ( r ) ; t . backUp ( 1 ) } if ( n . strikethrough ) if ( "~" === s && t . eatWhile ( s ) ) { if ( r . strikethrough ) { n . highlightFormatting && ( r . formatting = "strikethrough" ) ; var v = h ( r ) ; return r . strikethrough = ! 1 , v } if ( t . match ( /^[^\s]/ , ! 1 ) ) return r . strikethrough = ! 0 , n . highlightFormatting && ( r . formatting = "strikethrough" ) , h ( r ) } else if ( " " === s && t . match ( /^~~/ , ! 0 ) ) { if ( " " === t . peek ( ) ) return h ( r ) ; t . backUp ( 2 ) } return " " === s && ( t . match ( / +$/ , ! 1 ) ? r . trailingSpace ++ : r . trailingSpace && ( r . trailingSpaceNewLine = ! 0 ) ) , h ( r ) } function m ( e , t ) { var r = e . next ( ) ; if ( ">" === r ) { t . f = t . inline = p , n . highlightFormatting && ( t . formatting = "link" ) ; var i = h ( t ) ; return i ? i += " " : i = "" , i + S . linkInline } return e . match ( /^[^>]+/ , ! 0 ) , S . linkInline } function g ( e , t ) { if ( e . eatSpace ( ) ) return null ; var r = e . next ( ) ; return "(" === r || "[" === r ? ( t . f = t . inline = v ( "(" === r ? ")" : "]" , 0 ) , n . highlightFormatting && ( t . formatting = "link-string" ) , t . linkHref = ! 0 , h ( t ) ) : "error" } function v ( e ) { return function ( t , r ) { var i = t . next ( ) ; if ( i === e ) { r . f = r . inline = p , n . highlightFormatting && ( r . formatting = "link-string" ) ; var o = h ( r ) ; return r . linkHref = ! 1 , o } return t . match ( P [ e ] ) , r . linkHref = ! 0 , h ( r ) } } function y ( e , t ) { return e . match ( /^([^\]\\]|\\.)*\]:/ , ! 1 ) ? ( t . f = x , e . next ( ) , n . highlightFormatting && ( t . formatting = "link" ) , t . linkText = ! 0 , h ( t ) ) : i ( e , t , p ) } function x ( e , t ) { if ( e . match ( /^\]:/ , ! 0 ) ) { t . f = t . inline = b , n . highlightFormatting && ( t . formatting = "link" ) ; var r = h ( t ) ; return t . linkText = ! 1 , r } return e . match ( /^([^\]\\]|\\.)+/ , ! 0 ) , S . linkText } function b ( e , t ) { return e . eatSpace ( ) ? null : ( e . match ( /^[^\s]+/ , ! 0 ) , void 0 === e . peek ( ) ? t . linkTitle = ! 0 : e . match ( /^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/ , ! 0 ) , t . f = t . inline = p , S . linkHref + " url" ) } var w = e . getMode ( t , "text/html" ) , k = "null" == w . name ; void 0 === n . highlightFormatting && ( n . highlightFormatting = ! 1 ) , void 0 === n . maxBlockquoteDepth && ( n . maxBlockquoteDepth = 0 ) , void 0 === n . underscoresBreakWords && ( n . underscoresBreakWords = ! 0 ) , void 0 === n . taskLists && ( n . taskLists = !
header : o [ 1 ] . replace ( /^ *| *\| *$/g , "" ) . split ( / *\| */ ) , align : o [ 2 ] . replace ( /^ *|\| *$/g , "" ) . split ( / *\| */ ) , cells : o [ 3 ] . replace ( /(?: *\| *)?\n$/ , "" ) . split ( "\n" ) } , u = 0 ; u < s . align . length ; u ++ ) / ^ * - + : * $ / . test ( s . align [ u ] ) ? s . align [ u ] = "right" : /^ *:-+: *$/ . test ( s . align [ u ] ) ? s . align [ u ] = "center" : /^ *:-+ *$/ . test ( s . align [ u ] ) ? s . align [ u ] = "left" : s . align [ u ] = null ; for ( u = 0 ; u < s . cells . length ; u ++ ) s . cells [ u ] = s . cells [ u ] . replace ( /^ *\| *| *\| *$/g , "" ) . split ( / *\| */ ) ; this . tokens . push ( s ) } else if ( t && ( o = this . rules . paragraph . exec ( e ) ) ) e = e . substring ( o [ 0 ] . length ) , this . tokens . push ( { type : "paragraph" , text : "\n" === o [ 1 ] . charAt ( o [ 1 ] . length - 1 ) ? o [ 1 ] . slice ( 0 , - 1 ) : o [ 1 ] } ) ; else if ( o = this . rules . text . exec ( e ) ) e = e . substring ( o [ 0 ] . length ) , this . tokens . push ( { type : "text" , text : o [ 0 ] } ) ; else if ( e ) throw new Error ( "Infinite loop on byte: " + e . charCodeAt ( 0 ) ) ; return this . tokens } ; var p = { escape : /^\\([\\`*{}\[\]()#+\-.!_>])/ , autolink : /^<([^ >]+(@|:\/)[^ >]+)>/ , url : u , tag : /^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/ , link : /^!?\[(inside)\]\(href\)/ , reflink : /^!?\[(inside)\]\s*\[([^\]]*)\]/ , nolink : /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/ , strong : /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/ , em : /^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/ , code : /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/ , br : /^ {2,}\n(?!\s*$)/ , del : u , text : /^[\s\S]+?(?=[\\<!\[_*`]| {2,}\n|$)/ } ; p . _inside = /(?:\[[^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*/ , p . _href = /\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/ , p . link = c ( p . link ) ( "inside" , p . _inside ) ( "href" , p . _href ) ( ) , p . reflink = c ( p . reflink ) ( "inside" , p . _inside ) ( ) , p . normal = f ( { } , p ) , p . pedantic = f ( { } , p . normal , { strong : /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/ , em : /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/ } ) , p . gfm = f ( { } , p . normal , { escape : c ( p . escape ) ( "])" , "~|])" ) ( ) , url : /^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/ , del : /^~~(?=\S)([\s\S]*?\S)~~/ , text : c ( p . text ) ( "]|" , "~]|" ) ( "|" , "|https?://|" ) ( ) } ) , p . breaks = f ( { } , p . gfm , { br : c ( p . br ) ( "{2,}" , "*" ) ( ) , text : c ( p . gfm . text ) ( "{2,}" , "*" ) ( ) } ) , i . rules = p , i . output = function ( e , t , n ) { var r = new i ( t , n ) ; return r . output ( e ) } , i . prototype . output = function ( e ) { for ( var t , n , r , i , o = "" ; e ; ) if ( i = this . rules . escape . exec ( e ) ) e = e . substring ( i [ 0 ] . length ) , o += i [ 1 ] ; else if ( i = this . rules . autolink . exec ( e ) ) e = e . substring ( i [ 0 ] . length ) , "@" === i [ 2 ] ? ( n = ":" === i [ 1 ] . charAt ( 6 ) ? this . mangle ( i [ 1 ] . substring ( 7 ) ) : this . mangle ( i [ 1 ] ) , r = this . mangle ( "mailto:" ) + n ) : ( n = l ( i [ 1 ] ) , r = n ) , o += this . renderer . link ( r , null , n ) ; else if ( this . inLink || ! ( i = this . rules . url . exec ( e ) ) ) { if ( i = this . rules . tag . exec ( e ) ) ! this . inLink && /^<a /i . test ( i [ 0 ] ) ? this . inLink = ! 0 : this . inLink && /^<\/a>/i . test ( i [ 0 ] ) && ( this . inLink = ! 1 ) , e = e . substring ( i [ 0 ] . length ) , o += this . options . sanitize ? this . options . sanitizer ? this . options . sanitizer ( i [ 0 ] ) : l ( i [ 0 ] ) : i [ 0 ] ; else if ( i = this . rules . link . exec ( e ) ) e = e . substring ( i [ 0 ] . length ) , this . inLink = ! 0 , o += this . outputLink ( i , { href : i [ 2 ] , title : i [ 3 ] } ) , this . inLink = ! 1 ; else if ( ( i = this . rules . reflink . exec ( e ) ) || ( i = this . rules . nolink . exec ( e ) ) ) { if ( e = e . substring ( i [ 0 ] . length ) , t = ( i [ 2 ] || i [ 1 ] ) . replace ( /\s+/g , " " ) , t = this . links [ t . toLowerCase ( ) ] , ! t || ! t . href ) { o += i [ 0 ] . charAt ( 0 ) , e = i [ 0 ] . substring ( 1 ) + e ; continue } this . inLink = ! 0 , o += this . outputLink ( i , t ) , this . inLink = ! 1 } else if ( i = this . rules . strong . exec ( e ) ) e = e . substring ( i [ 0 ] . length ) , o += this . renderer . strong ( this . output ( i [ 2 ] || i [ 1 ] ) ) ; else if ( i = this . rules . em . exec ( e ) ) e = e . substring ( i [ 0 ] . length ) , o += this . renderer . em ( this . output ( i [ 2 ] || i [ 1 ] ) ) ; else if ( i = this . rules . code . exec ( e ) ) e = e . substring ( i [ 0 ] . length ) , o += this . renderer . codespan ( l ( i [ 2 ] , ! 0 ) ) ; else if ( i = this . rules . br . exec ( e ) ) e = e . substring ( i [ 0 ] . length ) , o += this . renderer . br ( ) ; else if ( i = this . rules . del . exec ( e ) ) e = e . substring ( i [ 0 ] . length ) , o += this . renderer . del ( this . output ( i [ 1 ] ) ) ; else if ( i = this . rules . text . exec ( e ) ) e = e . substring ( i [ 0 ] . length ) , o += this . renderer . text ( l ( this . smartypants ( i [ 0 ] ) ) ) ; else if ( e ) throw new Error ( "Infinite loop on byte: " + e . charCodeAt ( 0 ) ) } else e = e . substring ( i [ 0 ] . length ) , n = l ( i [ 1 ] ) , r = n , o += this . renderer . link ( r , null , n ) ; return o } , i . prototype . outputLink = function ( e , t ) { var n = l ( t . href ) , r = t . title ? l ( t . title ) : null ; return "!" !== e [ 0 ] . charAt ( 0 ) ? this . renderer . link ( n , r , this . output ( e [ 1 ] ) ) : this . renderer . image ( n , r , l ( e [ 1 ] ) ) } , i . prototype . smartypants = function ( e ) { return this . options . smart
} ( navigator . userAgent || navigator . vendor || window . opera ) , e } , V = "" , K = { bold : { name : "bold" , action : c , className : "fa fa-bold" , title : "Bold" , "default" : ! 0 } , italic : { name : "italic" , action : u , className : "fa fa-italic" , title : "Italic" , "default" : ! 0 } , strikethrough : { name : "strikethrough" , action : f , className : "fa fa-strikethrough" , title : "Strikethrough" } , heading : { name : "heading" , action : p , className : "fa fa-header" , title : "Heading" , "default" : ! 0 } , "heading-smaller" : { name : "heading-smaller" , action : p , className : "fa fa-header fa-header-x fa-header-smaller" , title : "Smaller Heading" } , "heading-bigger" : { name : "heading-bigger" , action : m , className : "fa fa-header fa-header-x fa-header-bigger" , title : "Bigger Heading" } , "heading-1" : { name : "heading-1" , action : g , className : "fa fa-header fa-header-x fa-header-1" , title : "Big Heading" } , "heading-2" : { name : "heading-2" , action : v , className : "fa fa-header fa-header-x fa-header-2" , title : "Medium Heading" } , "heading-3" : { name : "heading-3" , action : y , className : "fa fa-header fa-header-x fa-header-3" , title : "Small Heading" } , "separator-1" : { name : "separator-1" } , code : { name : "code" , action : h , className : "fa fa-code" , title : "Code" } , quote : { name : "quote" , action : d , className : "fa fa-quote-left" , title : "Quote" , "default" : ! 0 } , "unordered-list" : { name : "unordered-list" , action : x , className : "fa fa-list-ul" , title : "Generic List" , "default" : ! 0 } , "ordered-list" : { name : "ordered-list" , action : b , className : "fa fa-list-ol" , title : "Numbered List" , "default" : ! 0 } , "clean-block" : { name : "clean-block" , action : w , className : "fa fa-eraser fa-clean-block" , title : "Clean block" } , "separator-2" : { name : "separator-2" } , link : { name : "link" , action : k , className : "fa fa-link" , title : "Create Link" , "default" : ! 0 } , image : { name : "image" , action : S , className : "fa fa-picture-o" , title : "Insert Image" , "default" : ! 0 } , table : { name : "table" , action : C , className : "fa fa-table" , title : "Insert Table" } , "horizontal-rule" : { name : "horizontal-rule" , action : L , className : "fa fa-minus" , title : "Insert Horizontal Line" } , "separator-3" : { name : "separator-3" } , preview : { name : "preview" , action : A , className : "fa fa-eye no-disable" , title : "Toggle Preview" , "default" : ! 0 } , "side-by-side" : { name : "side-by-side" , action : N , className : "fa fa-columns no-disable no-mobile" , title : "Toggle Side by Side" , "default" : ! 0 } , fullscreen : { name : "fullscreen" , action : s , className : "fa fa-arrows-alt no-disable no-mobile" , title : "Toggle Fullscreen" , "default" : ! 0 } , "separator-4" : { name : "separator-4" } , guide : { name : "guide" , action : "https://simplemde.com/markdown-guide" , className : "fa fa-question-circle" , title : "Markdown Guide" , "default" : ! 0 } , "separator-5" : { name : "separator-5" } , undo : { name : "undo" , action : T , className : "fa fa-undo no-disable" , title : "Undo" } , redo : { name : "redo" , action : M , className : "fa fa-repeat no-disable" , title : "Redo" } } , X = { link : [ "[" , "](#url#)" ] , image : [ "![](" , "#url#)" ] , table : [ "" , "\n\n| Column 1 | Column 2 | Column 3 |\n| -------- | -------- | -------- |\n| Text | Text | Text |\n\n" ] , horizontalRule : [ "" , "\n\n-----\n\n" ] } , Z = { link : "URL for the link:" , image : "URL of the image:" } , J = { bold : "**" , code : "```" , italic : "*" } ; B . prototype . markdown = function ( e ) { if ( j ) { var t = { } ; return this . options && this . options . renderingConfig && this . options . renderingConfig . singleLineBreaks === ! 1 ? t . breaks = ! 1 : t . breaks = ! 0 , this . options && this . options . renderingConfig && this . options . renderingConfig . codeSyntaxHighlighting === ! 0 && window . hljs && ( t . highlight = function ( e ) { return window . hljs . highlightAuto ( e ) . value } ) , j . setOptions ( t ) , j ( e ) } } , B . prototype . render = function ( e ) { if ( e || ( e = this . element || document . getElementsByTagName ( "textarea" ) [ 0 ] ) , ! this . _rendered || this . _rendered !== e ) { this . element = e ; var t = this . options , n = this , i = { } ; for ( var o in t . shortcuts ) null !== t . shortcuts [ o ] && null !== q [ o ] && ! function ( e ) { i [ r ( t . shortcuts [ e ] ) ] = function ( ) { q [ e ] ( n ) } } ( o ) ; i . Enter = "newlineAndIndentContinueMarkdownList" , i . Tab = "tabAndIndentMarkdownList" , i [ "Shift-Tab" ] = "shiftTabAndUnindentMarkdownList" , i . Esc = function ( e ) { e . getOption ( "fullScreen" ) && s ( n ) } , document . addEventListener ( "keydown" , function ( e ) { e = e || window . event , 27 == e . keyCode && n . codemirror . getOption ( "fullScreen" ) && s ( n ) } , ! 1 ) ; var a , l ; if ( t . spellChecker !== ! 1 ? ( a = "spell-checker" , l = t . parsingConfig , l . name = "gfm" , l . gitHubSpice = ! 1 , z ( { codeMirrorInstance : F } ) ) : ( a = t . pa