var PR_SHOULD_USE_CONTINUATION=true;var PR_TAB_WIDTH=8;var PR_normalizedHtml;var PR;var prettyPrintOne;var prettyPrint;(function(){function wordSet(C){C=C.split(/ /g);var D={};for(var B=C.length;--B>=0;){var A=C[B];if(A){D[A]=null}}return D}var FLOW_CONTROL_KEYWORDS="break continue do else for if return while ";var C_KEYWORDS=FLOW_CONTROL_KEYWORDS+"auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile ";var COMMON_KEYWORDS=C_KEYWORDS+"catch class delete false import new operator private protected public this throw true try ";var CPP_KEYWORDS=COMMON_KEYWORDS+"alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename typeof using virtual wchar_t where ";var JAVA_KEYWORDS=COMMON_KEYWORDS+"boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient ";var CSHARP_KEYWORDS=JAVA_KEYWORDS+"as base by checked decimal delegate descending event fixed foreach from group implicit in interface internal into is lock object out override orderby params readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var ";var JSCRIPT_KEYWORDS=COMMON_KEYWORDS+"debugger eval export function get null set undefined var with Infinity NaN ";var PERL_KEYWORDS="caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END ";var PYTHON_KEYWORDS=FLOW_CONTROL_KEYWORDS+"and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None ";var RUBY_KEYWORDS=FLOW_CONTROL_KEYWORDS+"alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END ";var SH_KEYWORDS=FLOW_CONTROL_KEYWORDS+"case done elif esac eval fi function in local set then until ";var ALL_KEYWORDS=(CPP_KEYWORDS+CSHARP_KEYWORDS+JSCRIPT_KEYWORDS+PERL_KEYWORDS+PYTHON_KEYWORDS+RUBY_KEYWORDS+SH_KEYWORDS);var PR_STRING="str";var PR_KEYWORD="kwd";var PR_COMMENT="com";var PR_TYPE="typ";var PR_LITERAL="lit";var PR_PUNCTUATION="pun";var PR_PLAIN="pln";var PR_TAG="tag";var PR_DECLARATION="dec";var PR_SOURCE="src";var PR_ATTRIB_NAME="atn";var PR_ATTRIB_VALUE="atv";var PR_NOCODE="nocode";function isWordChar(A){return(A>="a"&&A<="z")||(A>="A"&&A<="Z")}function spliceArrayInto(D,B,A,C){D.unshift(A,C||0);try{B.splice.apply(B,D)}finally{D.splice(0,2)}}var REGEXP_PRECEDER_PATTERN=function(){var C=["!","!=","!==","#","%","%=","&","&&","&&=","&=","(","*","*=","+=",",","-=","->","/","/=",":","::",";","<","<<","<<=","<=","=","==","===",">",">=",">>",">>=",">>>",">>>=","?","@","[","^","^=","^^","^^=","{","|","|=","||","||=","~","break","case","continue","delete","do","else","finally","instanceof","return","throw","try","typeof"];var D="(?:(?:(?:^|[^0-9.])\\.{1,3})|(?:(?:^|[^\\+])\\+)|(?:(?:^|[^\\-])-)";for(var A=0;A<C.length;++A){var B=C[A];if(isWordChar(B.charAt(0))){D+="|\\b"+B}else{D+="|"+B.replace(/([^=<>:&])/g,"\\$1")}}D+="|^)\\s*$";return new RegExp(D)}();var pr_amp=/&/g;var pr_lt=/</g;var pr_gt=/>/g;var pr_quot=/\"/g;function attribToHtml(A){return A.replace(pr_amp,"&amp;").replace(pr_lt,"&lt;").replace(pr_gt,"&gt;").replace(pr_quot,"&quot;")}function textToHtml(A){return A.replace(pr_amp,"&amp;").replace(pr_lt,"&lt;").replace(pr_gt,"&gt;")}var pr_ltEnt=/&lt;/g;var pr_gtEnt=/&gt;/g;var pr_aposEnt=/&apos;/g;var pr_quotEnt=/&quot;/g;var pr_ampEnt=/&amp;/g;var pr_nbspEnt=/&nbsp;/g;function htmlToText(D){var F=D.indexOf("&");if(F<0){return D}for(--F;(F=D.indexOf("&#",F+1))>=0;){var A=D.indexOf(";",F);if(A>=0){var C=D.substring(F+3,A);var E=10;if(C&&C.charAt(0)==="x"){C=C.substring(1);E=16}var B=parseInt(C,E);if(!isNaN(B)){D=(D.substring(0,F)+String.fromCharCode(B)+D.substring(A+1))}}}return D.replace(pr_ltEnt,"<").replace(pr_gtEnt,">").replace(pr_aposEnt,"'").replace(pr_quotEnt,'"').replace(pr_ampEnt,"&").replace(pr_nbspEnt," ")}function isRawContent(A){return"XMP"===A.tagName}function normalizedHtml(E,C){switch(E.nodeType){case 1:var B=E.tagName.toLowerCase();C.push("<",B);for(var D=0;D<E.attributes.length;++D){var A=E.attributes[D];if(!A.specified){continue}C.push(" ");normalizedHtml(A,C)}C.push(">");for(var F=E.firstChild;F;F=F.nextSibling){normalizedHtml(F,C)}if(E.firstChild||!/^(?:br|link|img)$/.test(B)){C.push("</",B,">")}break;case 2:C.push(E.name.toLowerCase(),'="',attribToHtml(E.value),'"');break;case 3:case 4:C.push(textToHtml(E.nodeValue));break}}var PR_innerHtmlWorks=null;function getInnerHtml(D){if(null===PR_innerHtmlWorks){var B=document.createElement("PRE");B.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));PR_innerHtmlWorks=!/</.test(B.innerHTML)}if(PR_innerHtmlWorks){var C=D.innerHTML;if(isRawContent(D)){C=textToHtml(C)}return C}var A=[];for(var E=D.firstChild;E;E=E.nextSibling){normalizedHtml(E,A)}return A.join("")}function makeTabExpander(C){var A="                ";var B=0;return function(G){var E=null;var J=0;for(var F=0,I=G.length;F<I;++F){var H=G.charAt(F);switch(H){case"\t":if(!E){E=[]}E.push(G.substring(J,F));var D=C-(B%C);B+=D;for(;D>=0;D-=A.length){E.push(A.substring(0,D))}J=F+1;break;case"\n":B=0;break;default:++B}}if(!E){return G}E.push(G.substring(J));return E.join("")}}var pr_chunkPattern=/(?:[^<]+|<!--[\s\S]*?-->|<!\[CDATA\[([\s\S]*?)\]\]>|<\/?[a-zA-Z][^>]*>|<)/g;var pr_commentPrefix=/^<!--/;var pr_cdataPrefix=/^<\[CDATA\[/;var pr_brPrefix=/^<br\b/i;var pr_tagNameRe=/^<(\/?)([a-zA-Z]+)/;function extractTags(M){var I=M.match(pr_chunkPattern);var L=[];var D=0;var A=[];if(I){for(var H=0,C=I.length;H<C;++H){var J=I[H];if(J.length>1&&J.charAt(0)==="<"){if(pr_commentPrefix.test(J)){continue}if(pr_cdataPrefix.test(J)){L.push(J.substring(9,J.length-3));D+=J.length-12}else{if(pr_brPrefix.test(J)){L.push("\n");++D}else{if(J.indexOf(PR_NOCODE)>=0&&isNoCodeTag(J)){var B=J.match(pr_tagNameRe)[2];var G=1;end_tag_loop:for(var F=H+1;F<C;++F){var K=I[F].match(pr_tagNameRe);if(K&&K[2]===B){if(K[1]==="/"){if(--G===0){break end_tag_loop}}else{++G}}}if(F<C){A.push(D,I.slice(H,F+1).join(""));H=F}else{A.push(D,J)}}else{A.push(D,J)}}}}else{var E=htmlToText(J);L.push(E);D+=E.length}}}return{source:L.join(""),tags:A}}function isNoCodeTag(A){return !!A.replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,' $1="$2$3$4"').match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/)}function createSimpleLexer(C,B){var A={};(function(){var F=C.concat(B);for(var G=F.length;--G>=0;){var J=F[G];var H=J[3];if(H){for(var I=H.length;--I>=0;){A[H.charAt(I)]=J}}}})();var E=B.length;var D=/\S/;return function(H,O){O=O||0;var I=[O,PR_PLAIN];var J="";var Q=0;var P=H;while(P.length){var F;var K=null;var N;var G=A[P.charAt(0)];if(G){N=P.match(G[1]);K=N[0];F=G[0]}else{for(var L=0;L<E;++L){G=B[L];var M=G[2];if(M&&!M.test(J)){continue}N=P.match(G[1]);if(N){K=N[0];F=G[0];break}}if(!K){F=PR_PLAIN;K=P.substring(0,1)}}I.push(O+Q,F);Q+=K.length;P=P.substring(K.length);if(F!==PR_COMMENT&&D.test(K)){J=K}}return I}}var PR_MARKUP_LEXER=createSimpleLexer([],[[PR_PLAIN,/^[^<]+/,null],[PR_DECLARATION,/^<!\w[^>]*(?:>|$)/,null],[PR_COMMENT,/^<!--[\s\S]*?(?:-->|$)/,null],[PR_SOURCE,/^<\?[\s\S]*?(?:\?>|$)/,null],[PR_SOURCE,/^<%[\s\S]*?(?:%>|$)/,null],[PR_SOURCE,/^<(script|style|xmp)\b[^>]*>[\s\S]*?<\/\1\b[^>]*>/i,null],[PR_TAG,/^<\/?\w[^<>]*>/,null]]);var PR_SOURCE_CHUNK_PARTS=/^(<[^>]*>)([\s\S]*)(<\/[^>]*>)$/;function tokenizeMarkup(F){var C=PR_MARKUP_LEXER(F);for(var E=0;E<C.length;E+=2){if(C[E+1]===PR_SOURCE){var G,B;G=C[E];B=E+2<C.length?C[E+2]:F.length;var A=F.substring(G,B);var D=A.match(PR_SOURCE_CHUNK_PARTS);if(D){C.splice(E,2,G,PR_TAG,G+D[1].length,PR_SOURCE,G+D[1].length+(D[2]||"").length,PR_TAG)}}}return C}var PR_TAG_LEXER=createSimpleLexer([[PR_ATTRIB_VALUE,/^\'[^\']*(?:\'|$)/,null,"'"],[PR_ATTRIB_VALUE,/^\"[^\"]*(?:\"|$)/,null,'"'],[PR_PUNCTUATION,/^[<>\/=]+/,null,"<>/="]],[[PR_TAG,/^[\w:\-]+/,/^</],[PR_ATTRIB_VALUE,/^[\w\-]+/,/^=/],[PR_ATTRIB_NAME,/^[\w:\-]+/,null],[PR_PLAIN,/^\s+/,null," \t\r\n"]]);function splitTagAttributes(F,B){for(var D=0;D<B.length;D+=2){var E=B[D+1];if(E===PR_TAG){var H,A;H=B[D];A=D+2<B.length?B[D+2]:F.length;var C=F.substring(H,A);var G=PR_TAG_LEXER(C,H);spliceArrayInto(G,B,D,2);D+=G.length-2}}return B}function sourceDecorator(D){var F=[],C=[];if(D.tripleQuotedStrings){F.push([PR_STRING,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(D.multiLineStrings){F.push([PR_STRING,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{F.push([PR_STRING,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}C.push([PR_PLAIN,/^(?:[^\'\"\`\/\#]+)/,null," \r\n"]);if(D.hashComments){F.push([PR_COMMENT,/^#[^\r\n]*/,null,"#"])}if(D.cStyleComments){C.push([PR_COMMENT,/^\/\/[^\r\n]*/,null]);C.push([PR_COMMENT,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(D.regexLiterals){var H=("^/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+(?:/|$)");C.push([PR_STRING,new RegExp(H),REGEXP_PRECEDER_PATTERN])}var E=wordSet(D.keywords);D=null;var B=createSimpleLexer(F,C);var G=createSimpleLexer([],[[PR_PLAIN,/^\s+/,null," \r\n"],[PR_PLAIN,/^[a-z_$@][a-z_$@0-9]*/i,null],[PR_LITERAL,/^0x[a-f0-9]+[a-z]/i,null],[PR_LITERAL,/^(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?[a-z]*/i,null,"123456789"],[PR_PUNCTUATION,/^[^\s\w\.$@]+/,null]]);function A(I,M){for(var Q=0;Q<M.length;Q+=2){var J=M[Q+1];if(J===PR_PLAIN){var K,O,S,R;K=M[Q];O=Q+2<M.length?M[Q+2]:I.length;S=I.substring(K,O);R=G(S,K);for(var P=0,L=R.length;P<L;P+=2){var T=R[P+1];if(T===PR_PLAIN){var V=R[P];var U=P+2<L?R[P+2]:S.length;var N=I.substring(V,U);if(N==="."){R[P+1]=PR_PUNCTUATION}else{if(N in E){R[P+1]=PR_KEYWORD}else{if(/^@?[A-Z][A-Z$]*[a-z][A-Za-z$]*$/.test(N)){R[P+1]=N.charAt(0)==="@"?PR_LITERAL:PR_TYPE}}}}}spliceArrayInto(R,M,Q,2);Q+=R.length-2}}return M}return function(J){var I=B(J);I=A(J,I);return I}}var decorateSource=sourceDecorator({keywords:ALL_KEYWORDS,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function splitSourceNodes(A,E){for(var H=0;H<E.length;H+=2){var B=E[H+1];if(B===PR_SOURCE){var C,F;C=E[H];F=H+2<E.length?E[H+2]:A.length;var I=decorateSource(A.substring(C,F));for(var G=0,D=I.length;G<D;G+=2){I[G]+=C}spliceArrayInto(I,E,H,2);H+=I.length-2}}return E}function splitSourceAttributes(A,I){var P=false;for(var M=0;M<I.length;M+=2){var C=I[M+1];var E,K;if(C===PR_ATTRIB_NAME){E=I[M];K=M+2<I.length?I[M+2]:A.length;P=/^on|^style$/i.test(A.substring(E,K))}else{if(C===PR_ATTRIB_VALUE){if(P){E=I[M];K=M+2<I.length?I[M+2]:A.length;var N=A.substring(E,K);var B=N.length;var H=(B>=2&&/^[\"\']/.test(N)&&N.charAt(0)===N.charAt(B-1));var D;var F;var J;if(H){F=E+1;J=K-1;D=N}else{F=E+1;J=K-1;D=N.substring(1,N.length-1)}var O=decorateSource(D);for(var L=0,G=O.length;L<G;L+=2){O[L]+=F}if(H){O.push(J,PR_ATTRIB_VALUE);spliceArrayInto(O,I,M+2,0)}else{spliceArrayInto(O,I,M,2)}}P=false}}}return I}function decorateMarkup(B){var A=tokenizeMarkup(B);A=splitTagAttributes(B,A);A=splitSourceNodes(B,A);A=splitSourceAttributes(B,A);return A}function recombineTagsAndDecorations(Q,B,F){var I=[];var P=0;var E=null;var J=null;var C=0;var O=0;var G=makeTabExpander(PR_TAB_WIDTH);var D=/([\r\n ]) /g;var M=/(^| ) /gm;var H=/\r\n?|\n/g;var K=/[ \r\n]$/;var L=true;function N(R){if(R>P){if(E&&E!==J){I.push("</span>");E=null}if(!E&&J){E=J;I.push('<span class="',E,'">')}var S=textToHtml(G(Q.substring(P,R))).replace(L?M:D,"$1&nbsp;");L=K.test(S);I.push(S.replace(H,"<br />"));P=R}}while(true){var A;if(C<B.length){if(O<F.length){A=B[C]<=F[O]}else{A=true}}else{A=false}if(A){N(B[C]);if(E){I.push("</span>");E=null}I.push(B[C+1]);C+=2}else{if(O<F.length){N(F[O]);J=F[O+1];O+=2}else{break}}}N(Q.length);if(E){I.push("</span>")}return I.join("")}var langHandlerRegistry={};function registerLangHandler(C,D){for(var A=D.length;--A>=0;){var B=D[A];if(!langHandlerRegistry.hasOwnProperty(B)){langHandlerRegistry[B]=C}else{if("console" in window){console.log("cannot override language handler %s",B)}}}}registerLangHandler(decorateSource,["default-code"]);registerLangHandler(decorateMarkup,["default-markup","html","htm","xhtml","xml","xsl"]);registerLangHandler(sourceDecorator({keywords:CPP_KEYWORDS,hashComments:true,cStyleComments:true}),["c","cc","cpp","cs","cxx","cyc"]);registerLangHandler(sourceDecorator({keywords:JAVA_KEYWORDS,cStyleComments:true}),["java"]);registerLangHandler(sourceDecorator({keywords:SH_KEYWORDS,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);registerLangHandler(sourceDecorator({keywords:PYTHON_KEYWORDS,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);registerLangHandler(sourceDecorator({keywords:PERL_KEYWORDS,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);registerLangHandler(sourceDecorator({keywords:RUBY_KEYWORDS,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);registerLangHandler(sourceDecorator({keywords:JSCRIPT_KEYWORDS,cStyleComments:true,regexLiterals:true}),["js"]);function prettyPrintOne(F,D){try{var G=extractTags(F);var C=G.source;var A=G.tags;if(!langHandlerRegistry.hasOwnProperty(D)){D=/^\s*</.test(C)?"default-markup":"default-code"}var B=langHandlerRegistry[D].call({},C);return recombineTagsAndDecorations(C,A,B)}catch(E){if("console" in window){console.log(E);console.trace()}return F}}function prettyPrint(opt_whenDone){var codeSegments=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")];var elements=[];for(var i=0;i<codeSegments.length;++i){for(var j=0;j<codeSegments[i].length;++j){elements.push(codeSegments[i][j])}}codeSegments=null;var k=0;function doWork(){var endTime=(PR_SHOULD_USE_CONTINUATION?new Date().getTime()+250:Infinity);for(;k<elements.length&&new Date().getTime()<endTime;k++){var cs=elements[k];if(cs.className&&cs.className.indexOf("prettyprint")>=0){var langExtension=cs.className.match(/\blang-(\w+)\b/);if(langExtension){langExtension=langExtension[1]}var nested=false;for(var p=cs.parentNode;p;p=p.parentNode){if((p.tagName==="pre"||p.tagName==="code"||p.tagName==="xmp")&&p.className&&p.className.indexOf("prettyprint")>=0){nested=true;break}}if(!nested){var content=getInnerHtml(cs);content=content.replace(/(?:\r\n?|\n)$/,"");var newContent=prettyPrintOne(content,langExtension);if(!isRawContent(cs)){cs.innerHTML=newContent}else{var pre=document.createElement("PRE");for(var i=0;i<cs.attributes.length;++i){var a=cs.attributes[i];if(a.specified){var aname=a.name.toLowerCase();if(aname==="class"){pre.className=a.value}else{pre.setAttribute(a.name,a.value)}}}pre.innerHTML=newContent;cs.parentNode.replaceChild(pre,cs);cs=pre}if(/*@cc_on!@*/false&&cs.tagName==="PRE"){var lineBreaks=cs.getElementsByTagName("br");for(var j=lineBreaks.length;--j>=0;){var lineBreak=lineBreaks[j];lineBreak.parentNode.replaceChild(document.createTextNode("\r"),lineBreak)}}}}}if(k<elements.length){setTimeout(doWork,250)}}doWork()}window.PR_normalizedHtml=normalizedHtml;window.prettyPrintOne=prettyPrintOne;window.prettyPrint=prettyPrint;window.PR={createSimpleLexer:createSimpleLexer,registerLangHandler:registerLangHandler,sourceDecorator:sourceDecorator,PR_ATTRIB_NAME:PR_ATTRIB_NAME,PR_ATTRIB_VALUE:PR_ATTRIB_VALUE,PR_COMMENT:PR_COMMENT,PR_DECLARATION:PR_DECLARATION,PR_KEYWORD:PR_KEYWORD,PR_LITERAL:PR_LITERAL,PR_NOCODE:PR_NOCODE,PR_PLAIN:PR_PLAIN,PR_PUNCTUATION:PR_PUNCTUATION,PR_SOURCE:PR_SOURCE,PR_STRING:PR_STRING,PR_TAG:PR_TAG,PR_TYPE:PR_TYPE}})();
