(function(){function t(t){return t.replace(/^\s+|\s+$/g,"")}function e(t){return t.replace(/^\s+/g,"")}function i(t){return t.replace(/\s+$/g,"")}function n(t,n,s,r){var h,a,_,u,o,l,f,p,c,g,d;n=n||{};if((n.wrap_line_length===undefined||parseInt(n.wrap_line_length,10)===0)&&n.max_char!==undefined&&parseInt(n.max_char,10)!==0){n.wrap_line_length=n.max_char}a=n.indent_inner_html===undefined?false:n.indent_inner_html;_=n.indent_size===undefined?4:parseInt(n.indent_size,10);u=n.indent_char===undefined?" ":n.indent_char;l=n.brace_style===undefined?"collapse":n.brace_style;o=parseInt(n.wrap_line_length,10)===0?32786:parseInt(n.wrap_line_length||250,10);f=n.unformatted||["a","span","img","bdo","em","strong","dfn","code","samp","kbd","var","cite","abbr","acronym","q","sub","sup","tt","i","b","big","small","u","s","strike","font","ins","del","pre","address","dt","h1","h2","h3","h4","h5","h6"];p=n.preserve_newlines===undefined?true:n.preserve_newlines;c=p?isNaN(parseInt(n.max_preserve_newlines,10))?32786:parseInt(n.max_preserve_newlines,10):0;g=n.indent_handlebars===undefined?false:n.indent_handlebars;d=n.end_with_newline===undefined?false:n.end_with_newline;function w(){this.pos=0;this.token="";this.current_mode="CONTENT";this.tags={parent:"parent1",parentcount:1,parent1:""};this.tag_type="";this.token_text=this.last_token=this.last_text=this.token_type="";this.newlines=0;this.indent_content=a;this.Utils={whitespace:"\n\r ".split(""),single_token:"br,input,link,meta,!doctype,basefont,base,area,hr,wbr,param,img,isindex,?xml,embed,?php,?,?=".split(","),extra_liners:"head,body,/html".split(","),in_array:function(t,e){for(var i=0;i<e.length;i++){if(t===e[i]){return true}}return false}};this.is_whitespace=function(t){for(var e=0;e<t.length;t++){if(!this.Utils.in_array(t.charAt(e),this.Utils.whitespace)){return false}}return true};this.traverse_whitespace=function(){var t="";t=this.input.charAt(this.pos);if(this.Utils.in_array(t,this.Utils.whitespace)){this.newlines=0;while(this.Utils.in_array(t,this.Utils.whitespace)){if(p&&t==="\n"&&this.newlines<=c){this.newlines+=1}this.pos++;t=this.input.charAt(this.pos)}return true}return false};this.space_or_wrap=function(t){if(this.line_char_count>=this.wrap_line_length){this.print_newline(false,t);this.print_indentation(t)}else{this.line_char_count++;t.push(" ")}};this.get_content=function(){var t="",e=[],i=false;while(this.input.charAt(this.pos)!=="<"){if(this.pos>=this.input.length){return e.length?e.join(""):["","TK_EOF"]}if(this.traverse_whitespace()){this.space_or_wrap(e);continue}if(g){var n=this.input.substr(this.pos,3);if(n==="{{#"||n==="{{/"){break}else if(this.input.substr(this.pos,2)==="{{"){if(this.get_tag(true)==="{{else}}"){break}}}t=this.input.charAt(this.pos);this.pos++;this.line_char_count++;e.push(t)}return e.length?e.join(""):""};this.get_contents_to=function(t){if(this.pos===this.input.length){return["","TK_EOF"]}var e="";var i="";var n=new RegExp("</"+t+"\\s*>","igm");n.lastIndex=this.pos;var s=n.exec(this.input);var r=s?s.index:this.input.length;if(this.pos<r){i=this.input.substring(this.pos,r);this.pos=r}return i};this.record_tag=function(t){if(this.tags[t+"count"]){this.tags[t+"count"]++;this.tags[t+this.tags[t+"count"]]=this.indent_level}else{this.tags[t+"count"]=1;this.tags[t+this.tags[t+"count"]]=this.indent_level}this.tags[t+this.tags[t+"count"]+"parent"]=this.tags.parent;this.tags.parent=t+this.tags[t+"count"]};this.retrieve_tag=function(t){if(this.tags[t+"count"]){var e=this.tags.parent;while(e){if(t+this.tags[t+"count"]===e){break}e=this.tags[e+"parent"]}if(e){this.indent_level=this.tags[t+this.tags[t+"count"]];this.tags.parent=this.tags[e+"parent"]}delete this.tags[t+this.tags[t+"count"]+"parent"];delete this.tags[t+this.tags[t+"count"]];if(this.tags[t+"count"]===1){delete this.tags[t+"count"]}else{this.tags[t+"count"]--}}};this.indent_to_tag=function(t){if(!this.tags[t+"count"]){return}var e=this.tags.parent;while(e){if(t+this.tags[t+"count"]===e){break}e=this.tags[e+"parent"]}if(e){this.indent_level=this.tags[t+this.tags[t+"count"]]}};this.get_tag=function(t){var e="",i=[],n="",s=false,r,h,a,_=this.pos,u=this.line_char_count;t=t!==undefined?t:false;do{if(this.pos>=this.input.length){if(t){this.pos=_;this.line_char_count=u}return i.length?i.join(""):["","TK_EOF"]}e=this.input.charAt(this.pos);this.pos++;if(this.Utils.in_array(e,this.Utils.whitespace)){s=true;continue}if(e==="'"||e==='"'){e+=this.get_unformatted(e);s=true}if(e==="="){s=false}if(i.length&&i[i.length-1]!=="="&&e!==">"&&s){this.space_or_wrap(i);s=false}if(g&&a==="<"){if(e+this.input.charAt(this.pos)==="{{"){e+=this.get_unformatted("}}");if(i.length&&i[i.length-1]!==" "&&i[i.length-1]!=="<"){e=" "+e}s=true}}if(e==="<"&&!a){r=this.pos-1;a="<"}if(g&&!a){if(i.length>=2&&i[i.length-1]==="{"&&i[i.length-2]=="{"){if(e==="#"||e==="/"){r=this.pos-3}else{r=this.pos-2}a="{"}}this.line_char_count++;i.push(e);if(i[1]&&i[1]==="!"){i=[this.get_comment(r)];break}if(g&&a==="{"&&i.length>2&&i[i.length-2]==="}"&&i[i.length-1]==="}"){break}}while(e!==">");var o=i.join("");var l;var p;if(o.indexOf(" ")!==-1){l=o.indexOf(" ")}else if(o[0]==="{"){l=o.indexOf("}")}else{l=o.indexOf(">")}if(o[0]==="<"||!g){p=1}else{p=o[2]==="#"?3:2}var c=o.substring(p,l).toLowerCase();if(o.charAt(o.length-2)==="/"||this.Utils.in_array(c,this.Utils.single_token)){if(!t){this.tag_type="SINGLE"}}else if(g&&o[0]==="{"&&c==="else"){if(!t){this.indent_to_tag("if");this.tag_type="HANDLEBARS_ELSE";this.indent_content=true;this.traverse_whitespace()}}else if(this.is_unformatted(c,f)){n=this.get_unformatted("</"+c+">",o);i.push(n);h=this.pos-1;this.tag_type="SINGLE"}else if(c==="script"&&(o.search("type")===-1||o.search("type")>-1&&o.search(/\b(text|application)\/(x-)?(javascript|ecmascript|jscript|livescript)/)>-1)){if(!t){this.record_tag(c);this.tag_type="SCRIPT"}}else if(c==="style"&&(o.search("type")===-1||o.search("type")>-1&&o.search("text/css")>-1)){if(!t){this.record_tag(c);this.tag_type="STYLE"}}else if(c.charAt(0)==="!"){if(!t){this.tag_type="SINGLE";this.traverse_whitespace()}}else if(!t){if(c.charAt(0)==="/"){this.retrieve_tag(c.substring(1));this.tag_type="END"}else{this.record_tag(c);if(c.toLowerCase()!=="html"){this.indent_content=true}this.tag_type="START"}if(this.traverse_whitespace()){this.space_or_wrap(i)}if(this.Utils.in_array(c,this.Utils.extra_liners)){this.print_newline(false,this.output);if(this.output.length&&this.output[this.output.length-2]!=="\n"){this.print_newline(true,this.output)}}}if(t){this.pos=_;this.line_char_count=u}return i.join("")};this.get_comment=function(t){var e="",i=">",n=false;this.pos=t;input_char=this.input.charAt(this.pos);this.pos++;while(this.pos<=this.input.length){e+=input_char;if(e[e.length-1]===i[i.length-1]&&e.indexOf(i)!==-1){break}if(!n&&e.length<10){if(e.indexOf("<![if")===0){i="<![endif]>";n=true}else if(e.indexOf("<![cdata[")===0){i="]]>";n=true}else if(e.indexOf("<![")===0){i="]>";n=true}else if(e.indexOf("<!--")===0){i="-->";n=true}}input_char=this.input.charAt(this.pos);this.pos++}return e};this.get_unformatted=function(t,e){if(e&&e.toLowerCase().indexOf(t)!==-1){return""}var i="";var n="";var s=0;var r=true;do{if(this.pos>=this.input.length){return n}i=this.input.charAt(this.pos);this.pos++;if(this.Utils.in_array(i,this.Utils.whitespace)){if(!r){this.line_char_count--;continue}if(i==="\n"||i==="\r"){n+="\n";this.line_char_count=0;continue}}n+=i;this.line_char_count++;r=true;if(g&&i==="{"&&n.length&&n[n.length-2]==="{"){n+=this.get_unformatted("}}");s=n.length}}while(n.toLowerCase().indexOf(t,s)===-1);return n};this.get_token=function(){var t;if(this.last_token==="TK_TAG_SCRIPT"||this.last_token==="TK_TAG_STYLE"){var e=this.last_token.substr(7);t=this.get_contents_to(e);if(typeof t!=="string"){return t}return[t,"TK_"+e]}if(this.current_mode==="CONTENT"){t=this.get_content();if(typeof t!=="string"){return t}else{return[t,"TK_CONTENT"]}}if(this.current_mode==="TAG"){t=this.get_tag();if(typeof t!=="string"){return t}else{var i="TK_TAG_"+this.tag_type;return[t,i]}}};this.get_full_indent=function(t){t=this.indent_level+t||0;if(t<1){return""}return Array(t+1).join(this.indent_string)};this.is_unformatted=function(t,e){if(!this.Utils.in_array(t,e)){return false}if(t.toLowerCase()!=="a"||!this.Utils.in_array("a",e)){return true}var i=this.get_tag(true);var n=(i||"").match(/^\s*<\s*\/?([a-z]*)\s*[^>]*>\s*$/);if(!n||this.Utils.in_array(n,e)){return true}else{return false}};this.printer=function(t,n,s,r,h){this.input=t||"";this.output=[];this.indent_character=n;this.indent_string="";this.indent_size=s;this.brace_style=h;this.indent_level=0;this.wrap_line_length=r;this.line_char_count=0;for(var a=0;a<this.indent_size;a++){this.indent_string+=this.indent_character}this.print_newline=function(t,e){this.line_char_count=0;if(!e||!e.length){return}if(t||e[e.length-1]!=="\n"){if(e[e.length-1]!=="\n"){e[e.length-1]=i(e[e.length-1])}e.push("\n")}};this.print_indentation=function(t){for(var e=0;e<this.indent_level;e++){t.push(this.indent_string);this.line_char_count+=this.indent_string.length}};this.print_token=function(t){if(this.is_whitespace(t)&&!this.output.length){return}if(t||t!==""){if(this.output.length&&this.output[this.output.length-1]==="\n"){this.print_indentation(this.output);t=e(t)}}this.print_token_raw(t)};this.print_token_raw=function(t){if(this.newlines>0){t=i(t)}if(t&&t!==""){if(t.length>1&&t[t.length-1]==="\n"){this.output.push(t.slice(0,-1));this.print_newline(false,this.output)}else{this.output.push(t)}}for(var e=0;e<this.newlines;e++){this.print_newline(e>0,this.output)}this.newlines=0};this.indent=function(){this.indent_level++};this.unindent=function(){if(this.indent_level>0){this.indent_level--}}};return this}h=new w;h.printer(t,u,_,o,l);while(true){var v=h.get_token();h.token_text=v[0];h.token_type=v[1];if(h.token_type==="TK_EOF"){break}switch(h.token_type){case"TK_TAG_START":h.print_newline(false,h.output);h.print_token(h.token_text);if(h.indent_content){h.indent();h.indent_content=false}h.current_mode="CONTENT";break;case"TK_TAG_STYLE":case"TK_TAG_SCRIPT":h.print_newline(false,h.output);h.print_token(h.token_text);h.current_mode="CONTENT";break;case"TK_TAG_END":if(h.last_token==="TK_CONTENT"&&h.last_text===""){var y=h.token_text.match(/\w+/)[0];var T=null;if(h.output.length){T=h.output[h.output.length-1].match(/(?:<|{{#)\s*(\w+)/)}if(T===null||T[1]!==y){h.print_newline(false,h.output)}}h.print_token(h.token_text);h.current_mode="CONTENT";break;case"TK_TAG_SINGLE":var k=h.token_text.match(/^\s*<([a-z-]+)/i);if(!k||!h.Utils.in_array(k[1],f)){h.print_newline(false,h.output)}h.print_token(h.token_text);h.current_mode="CONTENT";break;case"TK_TAG_HANDLEBARS_ELSE":h.print_token(h.token_text);if(h.indent_content){h.indent();h.indent_content=false}h.current_mode="CONTENT";break;case"TK_CONTENT":h.print_token(h.token_text);h.current_mode="TAG";break;case"TK_STYLE":case"TK_SCRIPT":if(h.token_text!==""){h.print_newline(false,h.output);var b=h.token_text,m,x=1;if(h.token_type==="TK_SCRIPT"){m=typeof s==="function"&&s}else if(h.token_type==="TK_STYLE"){m=typeof r==="function"&&r}if(n.indent_scripts==="keep"){x=0}else if(n.indent_scripts==="separate"){x=-h.indent_level}var A=h.get_full_indent(x);if(m){b=m(b.replace(/^\s*/,A),n)}else{var E=b.match(/^\s*/)[0];var N=E.match(/[^\n\r]*$/)[0].split(h.indent_string).length-1;var O=h.get_full_indent(x-N);b=b.replace(/^\s*/,A).replace(/\r\n|\r|\n/g,"\n"+O).replace(/\s+$/,"")}if(b){h.print_token_raw(b);h.print_newline(true,h.output)}}h.current_mode="TAG";break;default:if(h.token_text!==""){h.print_token(h.token_text)}break}h.last_token=h.token_type;h.last_text=h.token_text}var K=h.output.join("").replace(/[\r\n\t ]+$/,"");if(d){K+="\n"}return K}if(typeof define==="function"&&define.amd){define(["require","./beautify","./beautify-css"],function(t){var e=t("./beautify");var i=t("./beautify-css");return{html_beautify:function(t,s){return n(t,s,e.js_beautify,i.css_beautify)}}})}else if(typeof exports!=="undefined"){var s=require("./beautify.js");var r=require("./beautify-css.js");exports.html_beautify=function(t,e){return n(t,e,s.js_beautify,r.css_beautify)}}else if(typeof window!=="undefined"){window.html_beautify=function(t,e){return n(t,e,window.js_beautify,window.css_beautify)}}else if(typeof global!=="undefined"){global.html_beautify=function(t,e){return n(t,e,global.js_beautify,global.css_beautify)}}})();