CodeMirror.defineMode("clike",function(e,t){function r(e,t){var r=e.next();if(h[r]){var i=h[r](e,t);if(i!==!1)return i}if('"'==r||"'"==r)return t.tokenize=n(r),t.tokenize(e,t);if(/[\[\]{}\(\),;\:\.]/.test(r))return s=r,null;if(/\d/.test(r))return e.eatWhile(/[\w\.]/),"number";if("/"==r){if(e.eat("*"))return t.tokenize=a,a(e,t);if(e.eat("/"))return e.skipToEnd(),"comment"}if(y.test(r))return e.eatWhile(y),"operator";e.eatWhile(/[\w\$_]/);var o=e.current();return u.propertyIsEnumerable(o)?(f.propertyIsEnumerable(o)&&(s="newstatement"),"keyword"):d.propertyIsEnumerable(o)?(f.propertyIsEnumerable(o)&&(s="newstatement"),"builtin"):p.propertyIsEnumerable(o)?"atom":"variable"}function n(e){return function(t,r){for(var n,a=!1,i=!1;null!=(n=t.next());){if(n==e&&!a){i=!0;break}a=!a&&"\\"==n}return(i||!a&&!m)&&(r.tokenize=null),"string"}}function a(e,t){for(var r,n=!1;r=e.next();){if("/"==r&&n){t.tokenize=null;break}n="*"==r}return"comment"}function i(e,t,r,n,a){this.indented=e,this.column=t,this.type=r,this.align=n,this.prev=a}function o(e,t,r){return e.context=new i(e.indented,t,r,null,e.context)}function l(e){var t=e.context.type;return(")"==t||"]"==t||"}"==t)&&(e.indented=e.context.indented),e.context=e.context.prev}var s,c=e.indentUnit,u=t.keywords||{},d=t.builtin||{},f=t.blockKeywords||{},p=t.atoms||{},h=t.hooks||{},m=t.multiLineStrings,y=/[+\-*&%=<>!?|\/]/;return{startState:function(e){return{tokenize:null,context:new i((e||0)-c,0,"top",!1),indented:0,startOfLine:!0}},token:function(e,t){var n=t.context;if(e.sol()&&(null==n.align&&(n.align=!1),t.indented=e.indentation(),t.startOfLine=!0),e.eatSpace())return null;s=null;var a=(t.tokenize||r)(e,t);if("comment"==a||"meta"==a)return a;if(null==n.align&&(n.align=!0),";"!=s&&":"!=s||"statement"!=n.type)if("{"==s)o(t,e.column(),"}");else if("["==s)o(t,e.column(),"]");else if("("==s)o(t,e.column(),")");else if("}"==s){for(;"statement"==n.type;)n=l(t);for("}"==n.type&&(n=l(t));"statement"==n.type;)n=l(t)}else s==n.type?l(t):("}"==n.type||"top"==n.type||"statement"==n.type&&"newstatement"==s)&&o(t,e.column(),"statement");else l(t);return t.startOfLine=!1,a},indent:function(e,t){if(e.tokenize!=r&&null!=e.tokenize)return 0;var n=e.context,a=t&&t.charAt(0);"statement"==n.type&&"}"==a&&(n=n.prev);var i=a==n.type;return"statement"==n.type?n.indented+("{"==a?0:c):n.align?n.column+(i?0:1):n.indented+(i?0:c)},electricChars:"{}"}}),function(){function e(e){for(var t={},r=e.split(" "),n=0;n <- <: <% >: # @ assert assume require print println printf readLine readBoolean readByte readShort readChar readInt readLong readFloat readDouble AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either Enumeration Equiv Error Exception Fractional Function IndexedSeq Integral Iterable Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector :: #:: Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void"),blockKeywords:e("catch class do else finally for forSome if match switch try while"),atoms:e("true false null"),hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"}}})}();