From c102562736aa294a93edec0de3e970dd27bef669 Mon Sep 17 00:00:00 2001 From: Leon van Kammen Date: Thu, 11 Jul 2024 10:54:19 +0000 Subject: [PATCH] pages: update documentation --- index.html | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/index.html b/index.html index cdac1cb..be8460f 100644 --- a/index.html +++ b/index.html @@ -63,7 +63,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." /> - Example Model Browser + Example 3D-file Browser @@ -973,7 +973,7 @@ Error message and password prompt {"created":"20151007165524815","text":"yes","bag":"default","revision":"0","type":"text/vnd.tiddlywiki","title":"$:/config/HideSidebarOnStartup","tags":"","modified":"20230504174422977","creator":"Tobias Beer"}, {"created":"20230424093821723","text":"yes","tags":"","title":"$:/config/HtmlParser/DisableSandbox","modified":"20230424142930452"}, {"created":"20230424140117603","text":"allowvr allowfullscreen allow-scripts","tags":"","title":"$:/config/HtmlParser/SandboxTokens","modified":"20230424142737213"}, -{"created":"20230423174843715","title":"$:/config/Manager/Filter","text":"css","modified":"20240702140813255"}, +{"created":"20230423174843715","title":"$:/config/Manager/Filter","text":"Example Model Br","modified":"20240711105232976"}, {"created":"20230423164137536","text":"","title":"$:/config/Manager/System","modified":"20240130120918487"}, {"created":"20230425162854560","title":"$:/config/Navigation/UpdateAddressBar","text":"permalink","modified":"20230427180247389"}, {"created":"20230424152601270","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/control-panel","modified":"20230424152601270"}, @@ -1017,8 +1017,8 @@ Error message and password prompt {"created":"20230425164931250","title":"$:/state/folded/AFRAME template","text":"show","modified":"20230425164935940"}, {"created":"20230425164931250","title":"$:/state/folded/GLSL shader template","text":"show","modified":"20230425164939576"}, {"created":"20230424142403302","text":"checked","title":"$:/state/import/select-all","modified":"20230424142404392"}, -{"created":"20230423163640468","title":"$:/state/notebook-sidebar","text":"no","modified":"20240702141631333"}, -{"created":"20230423163641722","title":"$:/state/notebook-sidebar-section","text":"","modified":"20240702141628891"}, +{"created":"20230423163640468","title":"$:/state/notebook-sidebar","text":"no","modified":"20240711105328396"}, +{"created":"20230423163641722","title":"$:/state/notebook-sidebar-section","text":"","modified":"20240711105309653"}, {"created":"20230427102758222","title":"$:/state/plugin-info--1887569658-$:/plugins/ihm/tidgraph--50210113","text":"documentation","modified":"20230427102759911"}, {"created":"20230427092525294","title":"$:/state/plugin-info--391242618-$:/plugins/tiddlywiki/browser-storage","text":"yes","modified":"20230427092525375"}, {"created":"20230427093219686","title":"$:/state/plugin-info--391242618-$:/plugins/tiddlywiki/browser-storage--605768392","text":"settings","modified":"20230427094141558"}, @@ -1026,7 +1026,7 @@ Error message and password prompt {"created":"20240627123502664","title":"$:/state/plugin-info-1605320774-$:/themes/nico/notebook--1711715474","text":"contents","modified":"20240627123505187"}, {"created":"20230424093627704","title":"$:/state/plugin-info-833095967-Draft of '$:/core'---1604322978","text":"readme","modified":"20230424093629208"}, {"created":"20230423163649566","title":"$:/state/showeditpreview","text":"no","modified":"20240517185422529"}, -{"created":"20230504174435745","title":"$:/state/sidebar","text":"no","modified":"20240709114011373"}, +{"created":"20230504174435745","title":"$:/state/sidebar","text":"no","modified":"20240711104648207"}, {"created":"20230423163453188","title":"$:/state/tab--1963855381","text":"$:/core/ui/ControlPanel/Theme","modified":"20240627122836293"}, {"created":"20230427092954391","title":"$:/state/tab--2112689675","text":"$:/core/ui/ControlPanel/Basics","modified":"20230523124903522"}, {"created":"20230424093058379","title":"$:/state/tab--697582678","text":"$:/core/ui/ControlPanel/Settings/TiddlyWiki","modified":"20230427093030201"}, @@ -1075,7 +1075,7 @@ Error message and password prompt {"created":"20230427081708927","text":"\u003C!-- sandboxify textareas with class 'sandboxify' -->\n\u003Cscript>\n\nfunction sandboxify() { \n let run = (t) => {\n let $res = t.parentElement.children[1]\n function log(res){\n\t\t if( !$res ) return\n $res.innerHTML = typeof res == 'string' ? res : JSON.stringify(res,null,2)\n }\n let _log = console.log\n console.log = log\n try{\n eval(t.value); \n }catch(e){ log(e) }finally{ console.log = _log }\n } \n const textareas = document.querySelectorAll(\"textarea.sandboxify\");\n textareas.forEach(t => {\n t.addEventListener(\"input\", function (event) {\n\t\t if( String(t.className).match(/noresult/) ) return\n try {\n run(t)\n } catch (error) {\n console.error(error);\n }\n });\n run(t)\n }); \n}\n\n// call sandboxify once on page load\nsandboxify();\n\n// set up a MutationObserver to call sandboxify on any new textareas added to the DOM\nconst observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (mutation.addedNodes && mutation.addedNodes.length > 0) {\n const addedNodes = mutation.addedNodes;\n addedNodes.forEach(addedNode => {\n if (addedNode.tagName === \"TEXTAREA\" && addedNode.classList.contains(\"sandboxify\")) {\n sandboxify();\n }\n });\n }\n });\n});\n\nobserver.observe(document, { childList: true, subtree: true });\n\u003C/script>","tags":"$:/tags/RawMarkup","title":"$:/webxr-notebook/sandboxify.js","modified":"20230627100108337"}, {"created":"20230427072514129","text":"\u003C!-- scriptie-talkie-embed.js -->\n\u003Cscript>\n\n(function(e,t,n){function i(n,s){if(!t[n]){if(!e[n]){var o=\"function\"==typeof require&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);throw Error(\"Cannot find module '\"+n+\"'\")}var u=t[n]={exports:{}};e[n][0](function(t){var r=e[n][1][t];return i(r?r:t)},u,u.exports)}return t[n].exports}for(var r=\"function\"==typeof require&&require,s=0;n.length>s;s++)i(n[s]);return i})({1:[function(require){\"use strict\";var scriptieTalkieEmbed=require(\"../../\");scriptieTalkieEmbed()},{\"../../\":2}],3:[function(require,module,exports){\"use strict\";module.exports=function(textarea){var opts={},data=textarea.getAttribute(\"data-scriptie-talkie\");if(!data)return opts;try{opts=eval(\"(\"+data+\")\")}catch(e){console.error(e)}finally{return opts}}},{}],4:[function(require,module){\"use strict\";function trimEmpty(lines){for(;lines.length&&!lines[0].trim().length;)lines.shift();for(;lines.length&&!lines[lines.length-1].trim().length;)lines.length--}function leftAlign(lines){var indent=-1;if(lines.filter(function(line){return line.trim().length}).forEach(function(line){for(var lineIndent=0,col=0;\" \"===line.charAt(col++);)lineIndent++;indent=-1===indent?lineIndent:Math.min(indent,lineIndent)}),!indent)return lines;for(var i=0;lines.length>i;i++)lines[i]=lines[i].slice(indent)}module.exports=function(textarea,addRows){addRows=addRows||0;var lines=textarea.textContent.split(\"\\n\");return trimEmpty(lines),leftAlign(lines),textarea.rows=Math.max(lines.length+addRows,1),textarea.textContent=lines.join(\"\\n\"),lines}},{}],5:[function(require,module){\"use strict\";function replaceElement(replaceEl,withEl){replaceEl.parentNode.replaceChild(withEl,replaceEl)}var format=require(\"util\").format;module.exports=function(textarea,opts){opts=opts||{};var minHeight=opts.minHeight||150,maxHeight=opts.maxHeight||600,minWidth=opts.minWidth||600,textareaWidth=textarea.clientWidth,width=Math.max(minWidth,textareaWidth),height=textarea.clientHeight+50;height=Math.max(minHeight,height),height=Math.min(maxHeight,height);var container=document.createElement(\"div\");return container.setAttribute(\"class\",\"scriptie-talkie-container\"),container.setAttribute(\"style\",format(\"width: %spx; height: %spx\",width,height)),replaceElement(textarea,container),container}},{util:6}],7:[function(require,module){\"use strict\";module.exports=function(container){var link=document.createElement(\"a\");return link.setAttribute(\"class\",\"scriptie-talkie-link\"),window.link=link,container.appendChild(link),link.textContent=\"full view\",link}},{}],8:[function(require,module){\"use script\";module.exports=function(){var head=document.getElementsByTagName(\"head\")[0],style=document.createElement(\"style\");style.type=\"text/css\",style.styleSheet?style.styleSheet.cssText=css:style.appendChild(document.createTextNode(css)),head.appendChild(style)};var css=[\"textarea.scriptie-talkie {\",\" visibility: hidden;\",\" display : block;\",\"}\",\".scriptie-talkie-container {\",\" position: relative; \",\" margin: 10px 0px;\",\"}\",\".scriptie-talkie-editor,\",\".scriptie-talkie-terminal {\",\" position: absolute;\",\" top: 0;\",\" bottom: 0;\",\" height: 100%;\",\" width: 50%;\",\"}\",\".scriptie-talkie-editor {\",\" left: 0;\",\" right: 50%;\",\"}\",\".scriptie-talkie-link {\",\" position : absolute;\",\" bottom : 1px;\",\" right : 4px;\",\" font-size : 14px;\",\" color : yellowgreen;\",\" z-index : 1;\",\"}\",\"textarea.scriptie-talkie, \",\".scriptie-talkie-terminal,\",\".scriptie-talkie-editor {\",\" /* text area needs same font to determine editor size correctly */\",\" font-size : 14px;\",\" font-family : Terminus,Consolas,Profont,Monaco,Inconsolata,Inconsolata-g,\",' Unifont,Lime,\"ClearlyU PUA\",Clean,\"DejaVu Sans Mono\",\"Lucida Console\",',' \"Bitstream Vera Sans Mono\",Freemono,\"Liberation Mono\",Dina,Anka,Droid Sans Mono,',' Anonymous Pro,Proggy fonts,Envy Code R,Gamow,Courier,\"Courier New\",Terminal,monospace;',\"}\",\".scriptie-talkie-terminal {\",\" background : black;\",\" right: 0;\",\" left: 50%;\",\" overflow: auto\",\"}\",\"/* tweak the ace editor a bit since we will never have >99 lines and need to save space */\",\".scriptie-talkie-editor .ace_gutter-cell ,\",\".scriptie-talkie-editor .ace_folding-enabled > .ace_gutter-cell { \",\" padding-left: 20px;\",\" padding-right: 5px;\",\"}\"].join(\"\\n\")},{}],9:[function(require,module){\"use strict\";var qs=require(\"querystring\"),scriptieTalkieUrl=\"http://thlorenz.github.io/scriptie-talkie\";module.exports=function(code){return scriptieTalkieUrl+\"?\"+qs.stringify({code:code})}},{querystring:10}],2:[function(require,module){\"use strict\";function harvest(scripties){for(var textarea,res=[],len=scripties.length,i=0;len>i;i++)textarea=scripties.item(i),res.push(textarea);return res}function sizeTerminalToRowsAndAdjust(container,lines){var evaluatedLines=evaluateScript(lines.join(\"\\n\")),term=createTerminal(container,{lines:evaluatedLines});return container.style.height=term.height+\"px\",term}function talkify(textareas){loadStyles(),textareas.forEach(function(textarea){function evaluate(){var code=editor.getValue();terminal.reset(),link.setAttribute(\"href\",linkTo(code)),evaluateScript(code,terminal.writeln.bind(terminal))}var term,lines=prepareTextarea(textarea,-3),config=getTextareaConfig(textarea),container=createContainer(textarea),link=createLink(container);term=config.sizeToEditor?createTerminal(container):sizeTerminalToRowsAndAdjust(container,lines);var edit=createEditor(container,textarea.textContent,config),terminal=term.terminal,editor=edit.editor;editor.on(\"change\",debounce(evaluate,400,!1)),editor.clearSelection(),evaluate()})}var debounce=require(\"debounce\"),getTextareaConfig=require(\"./lib/get-textarea-config\"),prepareTextarea=require(\"./lib/prepare-textarea\"),createContainer=require(\"./lib/create-container\"),createEditor=require(\"./lib/create-editor\"),createTerminal=require(\"./lib/create-terminal\"),createLink=require(\"./lib/create-link\"),evaluateScript=require(\"./lib/evaluate-script\"),loadStyles=require(\"./lib/load-styles\"),linkTo=require(\"./lib/link-to\");module.exports=function(){var wantScripties=document.getElementsByClassName(\"scriptie-talkie\"),textareas=harvest(wantScripties);textareas.length&&talkify(textareas)},window.scriptieTalkieEmbed=module.exports},{\"./lib/get-textarea-config\":3,\"./lib/prepare-textarea\":4,\"./lib/create-container\":5,\"./lib/create-editor\":11,\"./lib/create-terminal\":12,\"./lib/create-link\":7,\"./lib/evaluate-script\":13,\"./lib/load-styles\":8,\"./lib/link-to\":9,debounce:14}],6:[function(require,module,exports){function isArray(ar){return ar instanceof Array||Array.isArray(ar)||ar&&ar!==Object.prototype&&isArray(ar.__proto__)}function isRegExp(re){return re instanceof RegExp||\"object\"==typeof re&&\"[object RegExp]\"===Object.prototype.toString.call(re)}function isDate(d){if(d instanceof Date)return!0;if(\"object\"!=typeof d)return!1;var properties=Date.prototype&&Object_getOwnPropertyNames(Date.prototype),proto=d.__proto__&&Object_getOwnPropertyNames(d.__proto__);return JSON.stringify(proto)===JSON.stringify(properties)}require(\"events\"),exports.isArray=isArray,exports.isDate=function(obj){return\"[object Date]\"===Object.prototype.toString.call(obj)},exports.isRegExp=function(obj){return\"[object RegExp]\"===Object.prototype.toString.call(obj)},exports.print=function(){},exports.puts=function(){},exports.debug=function(){},exports.inspect=function(obj,showHidden,depth,colors){function format(value,recurseTimes){if(value&&\"function\"==typeof value.inspect&&value!==exports&&(!value.constructor||value.constructor.prototype!==value))return value.inspect(recurseTimes);switch(typeof value){case\"undefined\":return stylize(\"undefined\",\"undefined\");case\"string\":var simple=\"'\"+JSON.stringify(value).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return stylize(simple,\"string\");case\"number\":return stylize(\"\"+value,\"number\");case\"boolean\":return stylize(\"\"+value,\"boolean\")}if(null===value)return stylize(\"null\",\"null\");var visible_keys=Object_keys(value),keys=showHidden?Object_getOwnPropertyNames(value):visible_keys;if(\"function\"==typeof value&&0===keys.length){if(isRegExp(value))return stylize(\"\"+value,\"regexp\");var name=value.name?\": \"+value.name:\"\";return stylize(\"[Function\"+name+\"]\",\"special\")}if(isDate(value)&&0===keys.length)return stylize(value.toUTCString(),\"date\");var base,type,braces;if(isArray(value)?(type=\"Array\",braces=[\"[\",\"]\"]):(type=\"Object\",braces=[\"{\",\"}\"]),\"function\"==typeof value){var n=value.name?\": \"+value.name:\"\";base=isRegExp(value)?\" \"+value:\" [Function\"+n+\"]\"}else base=\"\";if(isDate(value)&&(base=\" \"+value.toUTCString()),0===keys.length)return braces[0]+base+braces[1];if(0>recurseTimes)return isRegExp(value)?stylize(\"\"+value,\"regexp\"):stylize(\"[Object]\",\"special\");seen.push(value);var output=keys.map(function(key){var name,str;if(value.__lookupGetter__&&(value.__lookupGetter__(key)?str=value.__lookupSetter__(key)?stylize(\"[Getter/Setter]\",\"special\"):stylize(\"[Getter]\",\"special\"):value.__lookupSetter__(key)&&(str=stylize(\"[Setter]\",\"special\"))),0>visible_keys.indexOf(key)&&(name=\"[\"+key+\"]\"),str||(0>seen.indexOf(value[key])?(str=null===recurseTimes?format(value[key]):format(value[key],recurseTimes-1),str.indexOf(\"\\n\")>-1&&(str=isArray(value)?str.split(\"\\n\").map(function(line){return\" \"+line}).join(\"\\n\").substr(2):\"\\n\"+str.split(\"\\n\").map(function(line){return\" \"+line}).join(\"\\n\"))):str=stylize(\"[Circular]\",\"special\")),name===void 0){if(\"Array\"===type&&key.match(/^\\d+$/))return str;name=JSON.stringify(\"\"+key),name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(name=name.substr(1,name.length-2),name=stylize(name,\"name\")):(name=name.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),name=stylize(name,\"string\"))}return name+\": \"+str});seen.pop();var numLinesEst=0,length=output.reduce(function(prev,cur){return numLinesEst++,cur.indexOf(\"\\n\")>=0&&numLinesEst++,prev+cur.length+1},0);return output=length>50?braces[0]+(\"\"===base?\"\":base+\"\\n \")+\" \"+output.join(\",\\n \")+\" \"+braces[1]:braces[0]+base+\" \"+output.join(\", \")+\" \"+braces[1]}var seen=[],stylize=function(str,styleType){var styles={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},style={special:\"cyan\",number:\"blue\",\"boolean\":\"yellow\",undefined:\"grey\",\"null\":\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"}[styleType];return style?\"\u001b[\"+styles[style][0]+\"m\"+str+\"\u001b[\"+styles[style][1]+\"m\":str};return colors||(stylize=function(str){return str}),format(obj,depth===void 0?2:depth)},exports.log=function(){},exports.pump=null;var Object_keys=Object.keys||function(obj){var res=[];for(var key in obj)res.push(key);return res},Object_getOwnPropertyNames=Object.getOwnPropertyNames||function(obj){var res=[];for(var key in obj)Object.hasOwnProperty.call(obj,key)&&res.push(key);return res},Object_create=Object.create||function(prototype,properties){var object;if(null===prototype)object={__proto__:null};else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return properties!==void 0&&Object.defineProperties&&Object.defineProperties(object,properties),object};exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object_create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})};var formatRegExp=/%[sdj%]/g;exports.format=function(f){if(\"string\"!=typeof f){for(var objects=[],i=0;arguments.length>i;i++)objects.push(exports.inspect(arguments[i]));return objects.join(\" \")}for(var i=1,args=arguments,len=args.length,str=(f+\"\").replace(formatRegExp,function(x){if(\"%%\"===x)return\"%\";if(i>=len)return x;switch(x){case\"%s\":return args[i++]+\"\";case\"%d\":return Number(args[i++]);case\"%j\":return JSON.stringify(args[i++]);default:return x}}),x=args[i];len>i;x=args[++i])str+=null===x||\"object\"!=typeof x?\" \"+x:\" \"+exports.inspect(x);return str}},{events:15}],10:[function(require,module,exports){function stringifyString(str,prefix){if(!prefix)throw new TypeError(\"stringify expects an object\");return prefix+\"=\"+encodeURIComponent(str)}function stringifyArray(arr,prefix){var ret=[];if(!prefix)throw new TypeError(\"stringify expects an object\");for(var i=0;arr.length>i;i++)ret.push(stringify(arr[i],prefix+\"[]\"));return ret.join(\"&\")}function stringifyObject(obj,prefix){for(var key,ret=[],keys=objectKeys(obj),i=0,len=keys.length;len>i;++i)key=keys[i],ret.push(stringify(obj[key],prefix?prefix+\"[\"+encodeURIComponent(key)+\"]\":encodeURIComponent(key)));return ret.join(\"&\")}function set(obj,key,val){var v=obj[key];void 0===v?obj[key]=val:isArray(v)?v.push(val):obj[key]=[v,val]}function lastBraceInKey(str){for(var brace,c,len=str.length,i=0;len>i;++i)if(c=str[i],\"]\"==c&&(brace=!1),\"[\"==c&&(brace=!0),\"=\"==c&&!brace)return i}var isArray=\"function\"==typeof Array.isArray?Array.isArray:function(xs){return\"[object Array]\"===Object.prototype.toString.call(xs)},objectKeys=Object.keys||function objectKeys(object){if(object!==Object(object))throw new TypeError(\"Invalid object\");var keys=[];for(var key in object)object.hasOwnProperty(key)&&(keys[keys.length]=key);return keys};exports.version=\"0.3.1\";var toString=Object.prototype.toString,notint=/[^0-9]/;exports.parse=function(str){function promote(parent,key){if(0==parent[key].length)return parent[key]={};var t={};for(var i in parent[key])t[i]=parent[key][i];return parent[key]=t,t}return null==str||\"\"==str?{}:(str+\"\").split(\"&\").reduce(function(ret,pair){function parse(parts,parent,key){var part=parts.shift();part?(obj=parent[key]=parent[key]||[],\"]\"==part?isArray(obj)?\"\"!=val&&obj.push(val):\"object\"==typeof obj?obj[objectKeys(obj).length]=val:obj=parent[key]=[parent[key],val]:~part.indexOf(\"]\")?(part=part.substr(0,part.length-1),notint.test(part)&&isArray(obj)&&(obj=promote(parent,key)),parse(parts,obj,part)):(notint.test(part)&&isArray(obj)&&(obj=promote(parent,key)),parse(parts,obj,part))):isArray(parent[key])?parent[key].push(val):parent[key]=\"object\"==typeof parent[key]?val:parent[key]===void 0?val:[parent[key],val]}try{pair=decodeURIComponent(pair.replace(/\\+/g,\" \"))}catch(e){}var eql=pair.indexOf(\"=\"),brace=lastBraceInKey(pair),key=pair.substr(0,brace||eql),val=pair.substr(brace||eql,pair.length),val=val.substr(val.indexOf(\"=\")+1,val.length),parent=ret;if(\"\"==key&&(key=pair,val=\"\"),~key.indexOf(\"]\")){var parts=key.split(\"[\");parts.length,parse(parts,parent,\"base\")}else{if(notint.test(key)&&isArray(parent.base)){var t={};for(var k in parent.base)t[k]=parent.base[k];parent.base=t}set(parent.base,key,val)}return ret},{base:{}}).base};var stringify=exports.stringify=function(obj,prefix){return isArray(obj)?stringifyArray(obj,prefix):\"[object Object]\"==toString.call(obj)?stringifyObject(obj,prefix):\"string\"==typeof obj?stringifyString(obj,prefix):prefix}},{}],14:[function(require,module){module.exports=function(func,threshold,execAsap){var timeout;return!1!==execAsap&&(execAsap=!0),function(){function delayed(){execAsap||func.apply(obj,args),timeout=null}var obj=this,args=arguments;timeout?clearTimeout(timeout):execAsap&&func.apply(obj,args),timeout=setTimeout(delayed,threshold||100)}}},{}],16:[function(require,module){var process=module.exports={};process.nextTick=function(){var canSetImmediate=\"undefined\"!=typeof window&&window.setImmediate,canPost=\"undefined\"!=typeof window&&window.postMessage&&window.addEventListener;if(canSetImmediate)return function(f){return window.setImmediate(f)};if(canPost){var queue=[];return window.addEventListener(\"message\",function(ev){if(ev.source===window&&\"process-tick\"===ev.data&&(ev.stopPropagation(),queue.length>0)){var fn=queue.shift();fn()}},!0),function(fn){queue.push(fn),window.postMessage(\"process-tick\",\"*\")}}return function(fn){setTimeout(fn,0)}}(),process.title=\"browser\",process.browser=!0,process.env={},process.argv=[],process.binding=function(){throw Error(\"process.binding is not supported\")},process.cwd=function(){return\"/\"},process.chdir=function(){throw Error(\"process.chdir is not supported\")}},{}],15:[function(require,module,exports){(function(process){function indexOf(xs,x){if(xs.indexOf)return xs.indexOf(x);for(var i=0;xs.length>i;i++)if(x===xs[i])return i;return-1}process.EventEmitter||(process.EventEmitter=function(){});var EventEmitter=exports.EventEmitter=process.EventEmitter,isArray=\"function\"==typeof Array.isArray?Array.isArray:function(xs){return\"[object Array]\"===Object.prototype.toString.call(xs)},defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){this._events||(this._events={}),this._events.maxListeners=n},EventEmitter.prototype.emit=function(type){if(\"error\"===type&&(!this._events||!this._events.error||isArray(this._events.error)&&!this._events.error.length))throw arguments[1]instanceof Error?arguments[1]:Error(\"Uncaught, unspecified 'error' event.\");if(!this._events)return!1;var handler=this._events[type];if(!handler)return!1;if(\"function\"==typeof handler){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:var args=Array.prototype.slice.call(arguments,1);handler.apply(this,args)}return!0}if(isArray(handler)){for(var args=Array.prototype.slice.call(arguments,1),listeners=handler.slice(),i=0,l=listeners.length;l>i;i++)listeners[i].apply(this,args);return!0}return!1},EventEmitter.prototype.addListener=function(type,listener){if(\"function\"!=typeof listener)throw Error(\"addListener only takes instances of Function\");if(this._events||(this._events={}),this.emit(\"newListener\",type,listener),this._events[type])if(isArray(this._events[type])){if(!this._events[type].warned){var m;m=void 0!==this._events.maxListeners?this._events.maxListeners:defaultMaxListeners,m&&m>0&&this._events[type].length>m&&(this._events[type].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[type].length),console.trace())}this._events[type].push(listener)}else this._events[type]=[this._events[type],listener];else this._events[type]=listener;return this},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.once=function(type,listener){var self=this;return self.on(type,function g(){self.removeListener(type,g),listener.apply(this,arguments)}),this},EventEmitter.prototype.removeListener=function(type,listener){if(\"function\"!=typeof listener)throw Error(\"removeListener only takes instances of Function\");if(!this._events||!this._events[type])return this;var list=this._events[type];if(isArray(list)){var i=indexOf(list,listener);if(0>i)return this;list.splice(i,1),0==list.length&&delete this._events[type]}else this._events[type]===listener&&delete this._events[type];return this},EventEmitter.prototype.removeAllListeners=function(type){return 0===arguments.length?(this._events={},this):(type&&this._events&&this._events[type]&&(this._events[type]=null),this)},EventEmitter.prototype.listeners=function(type){return this._events||(this._events={}),this._events[type]||(this._events[type]=[]),isArray(this._events[type])||(this._events[type]=[this._events[type]]),this._events[type]}})(require(\"__browserify_process\"))},{__browserify_process:16}],17:[function(){ace.define(\"ace/theme/monokai\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(acequire,exports){exports.isDark=!0,exports.cssClass=\"ace-monokai\",exports.cssText=\".ace-monokai .ace_gutter {background: #2F3129;color: #8F908A}.ace-monokai .ace_print-margin {width: 1px;background: #555651}.ace-monokai .ace_scroller {background-color: #272822}.ace-monokai .ace_text-layer {color: #F8F8F2}.ace-monokai .ace_cursor {border-left: 2px solid #F8F8F0}.ace-monokai .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #F8F8F0}.ace-monokai .ace_marker-layer .ace_selection {background: #49483E}.ace-monokai.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #272822;border-radius: 2px}.ace-monokai .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-monokai .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E}.ace-monokai .ace_marker-layer .ace_active-line {background: #202020}.ace-monokai .ace_gutter-active-line {background-color: #272727}.ace-monokai .ace_marker-layer .ace_selected-word {border: 1px solid #49483E}.ace-monokai .ace_invisible {color: #52524d}.ace-monokai .ace_entity.ace_name.ace_tag,.ace-monokai .ace_keyword,.ace-monokai .ace_meta,.ace-monokai .ace_storage {color: #F92672}.ace-monokai .ace_constant.ace_character,.ace-monokai .ace_constant.ace_language,.ace-monokai .ace_constant.ace_numeric,.ace-monokai .ace_constant.ace_other {color: #AE81FF}.ace-monokai .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-monokai .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-monokai .ace_support.ace_constant,.ace-monokai .ace_support.ace_function {color: #66D9EF}.ace-monokai .ace_fold {background-color: #A6E22E;border-color: #F8F8F2}.ace-monokai .ace_storage.ace_type,.ace-monokai .ace_support.ace_class,.ace-monokai .ace_support.ace_type {font-style: italic;color: #66D9EF}.ace-monokai .ace_entity.ace_name.ace_function,.ace-monokai .ace_entity.ace_other,.ace-monokai .ace_variable {color: #A6E22E}.ace-monokai .ace_variable.ace_parameter {font-style: italic;color: #FD971F}.ace-monokai .ace_string {color: #E6DB74}.ace-monokai .ace_comment {color: #75715E}.ace-monokai .ace_markup.ace_underline {text-decoration: underline}.ace-monokai .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ11D6z7Bq1ar/ABCKBG6g04U2AAAAAElFTkSuQmCC) right repeat-y}\";var dom=acequire(\"../lib/dom\");dom.importCssString(exports.cssText,exports.cssClass)})},{}],18:[function(require){(function(){ace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/tokenizer\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/range\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"],function(acequire,exports){var oop=acequire(\"../lib/oop\"),TextMode=acequire(\"./text\").Mode,Tokenizer=acequire(\"../tokenizer\").Tokenizer,JavaScriptHighlightRules=acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules,MatchingBraceOutdent=acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;acequire(\"../range\").Range;var WorkerClient=acequire(\"../worker/worker_client\").WorkerClient,CstyleBehaviour=acequire(\"./behaviour/cstyle\").CstyleBehaviour,CStyleFoldMode=acequire(\"./folding/cstyle\").FoldMode,Mode=function(){this.$tokenizer=new Tokenizer((new JavaScriptHighlightRules).getRules()),this.$outdent=new MatchingBraceOutdent,this.$behaviour=new CstyleBehaviour,this.foldingRules=new CStyleFoldMode};oop.inherits(Mode,TextMode),function(){this.lineCommentStart=\"//\",this.blockComment={start:\"/*\",end:\"*/\"},this.getNextLineIndent=function(state,line,tab){var indent=this.$getIndent(line),tokenizedLine=this.$tokenizer.getLineTokens(line,state),tokens=tokenizedLine.tokens,endState=tokenizedLine.state;if(tokens.length&&\"comment\"==tokens[tokens.length-1].type)return indent;if(\"start\"==state||\"no_regex\"==state){var match=line.match(/^.*(?:\\bcase\\b.*\\:|[\\{\\(\\[])\\s*$/);match&&(indent+=tab)}else if(\"doc-start\"==state){if(\"start\"==endState||\"no_regex\"==endState)return\"\";var match=line.match(/^\\s*(\\/?)\\*/);match&&(match[1]&&(indent+=\" \"),indent+=\"* \")}return indent},this.checkOutdent=function(state,line,input){return this.$outdent.checkOutdent(line,input)},this.autoOutdent=function(state,doc,row){this.$outdent.autoOutdent(doc,row)},this.createWorker=function(session){var worker=new WorkerClient([\"ace\"],require(\"../worker/javascript\"),\"JavaScriptWorker\");return worker.attachToDocument(session.getDocument()),worker.on(\"jslint\",function(results){session.setAnnotations(results.data)}),worker.on(\"terminate\",function(){session.clearAnnotations()}),worker}}.call(Mode.prototype),exports.Mode=Mode}),ace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"],function(acequire,exports){var oop=acequire(\"../lib/oop\"),DocCommentHighlightRules=acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules,TextHighlightRules=acequire(\"./text_highlight_rules\").TextHighlightRules,JavaScriptHighlightRules=function(){var keywordMapper=this.createKeywordMapper({\"variable.language\":\"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document\",keyword:\"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\"storage.type\":\"const|let|var|function\",\"constant.language\":\"null|Infinity|NaN|undefined\",\"support.function\":\"alert\",\"constant.language.boolean\":\"true|false\"},\"identifier\"),kwBeforeRe=\"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\",identifierRe=\"[a-zA-Z\\\\$_¡-￿][a-zA-Z\\\\d\\\\$_¡-￿]*\\\\b\",escapedRe=\"\\\\\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)\";this.$rules={no_regex:[{token:\"comment\",regex:/\\/\\/.*$/},DocCommentHighlightRules.getStartRule(\"doc-start\"),{token:\"comment\",regex:/\\/\\*/,next:\"comment\"},{token:\"string\",regex:\"'(?=.)\",next:\"qstring\"},{token:\"string\",regex:'\"(?=.)',next:\"qqstring\"},{token:\"constant.numeric\",regex:/0[xX][0-9a-fA-F]+\\b/},{token:\"constant.numeric\",regex:/[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b/},{token:[\"storage.type\",\"punctuation.operator\",\"support.function\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\"],regex:\"(\"+identifierRe+\")(\\\\.)(prototype)(\\\\.)(\"+identifierRe+\")(\\\\s*)(=)\",next:\"function_arguments\"},{token:[\"storage.type\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+identifierRe+\")(\\\\.)(\"+identifierRe+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+identifierRe+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"storage.type\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"entity.name.function\",\"text\",\"paren.lparen\"],regex:\"(\"+identifierRe+\")(\\\\.)(\"+identifierRe+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"storage.type\",\"text\",\"entity.name.function\",\"text\",\"paren.lparen\"],regex:\"(function)(\\\\s+)(\"+identifierRe+\")(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"entity.name.function\",\"text\",\"punctuation.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+identifierRe+\")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"text\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:\"keyword\",regex:\"(?:\"+kwBeforeRe+\")\\\\b\",next:\"start\"},{token:[\"punctuation.operator\",\"support.function\"],regex:/(\\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/},{token:[\"punctuation.operator\",\"support.function.dom\"],regex:/(\\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/},{token:[\"punctuation.operator\",\"support.constant\"],regex:/(\\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/},{token:[\"storage.type\",\"punctuation.operator\",\"support.function.firebug\"],regex:/(console)(\\.)(warn|info|log|error|time|timeEnd|assert)\\b/},{token:keywordMapper,regex:identifierRe},{token:\"keyword.operator\",regex:/--|\\+\\+|[!$%&*+\\-~]|===|==|=|!=|!==|\u003C=|>=|\u003C\u003C=|>>=|>>>=|\u003C>|\u003C|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=/,next:\"start\"},{token:\"punctuation.operator\",regex:/\\?|\\:|\\,|\\;|\\./,next:\"start\"},{token:\"paren.lparen\",regex:/[\\[({]/,next:\"start\"},{token:\"paren.rparen\",regex:/[\\])}]/},{token:\"keyword.operator\",regex:/\\/=?/,next:\"start\"},{token:\"comment\",regex:/^#!.*$/}],start:[DocCommentHighlightRules.getStartRule(\"doc-start\"),{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"comment_regex_allowed\"},{token:\"comment\",regex:\"\\\\/\\\\/.*$\",next:\"start\"},{token:\"string.regexp\",regex:\"\\\\/\",next:\"regex\"},{token:\"text\",regex:\"\\\\s+|^$\",next:\"start\"},{token:\"empty\",regex:\"\",next:\"no_regex\"}],regex:[{token:\"regexp.keyword.operator\",regex:\"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"},{token:\"string.regexp\",regex:\"/\\\\w*\",next:\"no_regex\"},{token:\"invalid\",regex:/\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/},{token:\"constant.language.escape\",regex:/\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?]/},{token:\"constant.language.delimiter\",regex:/\\|/},{token:\"constant.language.escape\",regex:/\\[\\^?/,next:\"regex_character_class\"},{token:\"empty\",regex:\"$\",next:\"no_regex\"},{defaultToken:\"string.regexp\"}],regex_character_class:[{token:\"regexp.keyword.operator\",regex:\"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"},{token:\"constant.language.escape\",regex:\"]\",next:\"regex\"},{token:\"constant.language.escape\",regex:\"-\"},{token:\"empty\",regex:\"$\",next:\"no_regex\"},{defaultToken:\"string.regexp.charachterclass\"}],function_arguments:[{token:\"variable.parameter\",regex:identifierRe},{token:\"punctuation.operator\",regex:\"[, ]+\"},{token:\"punctuation.operator\",regex:\"$\"},{token:\"empty\",regex:\"\",next:\"no_regex\"}],comment_regex_allowed:[{token:\"comment\",regex:\"\\\\*\\\\/\",next:\"start\"},{defaultToken:\"comment\"}],comment:[{token:\"comment\",regex:\"\\\\*\\\\/\",next:\"no_regex\"},{defaultToken:\"comment\"}],qqstring:[{token:\"constant.language.escape\",regex:escapedRe},{token:\"string\",regex:\"\\\\\\\\$\",next:\"qqstring\"},{token:\"string\",regex:'\"|$',next:\"no_regex\"},{defaultToken:\"string\"}],qstring:[{token:\"constant.language.escape\",regex:escapedRe},{token:\"string\",regex:\"\\\\\\\\$\",next:\"qstring\"},{token:\"string\",regex:\"'|$\",next:\"no_regex\"},{defaultToken:\"string\"}]},this.embedRules(DocCommentHighlightRules,\"doc-\",[DocCommentHighlightRules.getEndRule(\"no_regex\")])\n};oop.inherits(JavaScriptHighlightRules,TextHighlightRules),exports.JavaScriptHighlightRules=JavaScriptHighlightRules}),ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],function(acequire,exports){var oop=acequire(\"../lib/oop\"),TextHighlightRules=acequire(\"./text_highlight_rules\").TextHighlightRules,DocCommentHighlightRules=function(){this.$rules={start:[{token:\"comment.doc.tag\",regex:\"@[\\\\w\\\\d_]+\"},{token:\"comment.doc.tag\",regex:\"\\\\bTODO\\\\b\"},{defaultToken:\"comment.doc\"}]}};oop.inherits(DocCommentHighlightRules,TextHighlightRules),DocCommentHighlightRules.getStartRule=function(start){return{token:\"comment.doc\",regex:\"\\\\/\\\\*(?=\\\\*)\",next:start}},DocCommentHighlightRules.getEndRule=function(start){return{token:\"comment.doc\",regex:\"\\\\*\\\\/\",next:start}},exports.DocCommentHighlightRules=DocCommentHighlightRules}),ace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(acequire,exports){var Range=acequire(\"../range\").Range,MatchingBraceOutdent=function(){};(function(){this.checkOutdent=function(line,input){return/^\\s+$/.test(line)?/^\\s*\\}/.test(input):!1},this.autoOutdent=function(doc,row){var line=doc.getLine(row),match=line.match(/^(\\s*\\})/);if(!match)return 0;var column=match[1].length,openBracePos=doc.findMatchingBracket({row:row,column:column});if(!openBracePos||openBracePos.row==row)return 0;var indent=this.$getIndent(doc.getLine(openBracePos.row));doc.replace(new Range(row,0,row,column-1),indent)},this.$getIndent=function(line){return line.match(/^\\s*/)[0]}}).call(MatchingBraceOutdent.prototype),exports.MatchingBraceOutdent=MatchingBraceOutdent}),ace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"],function(acequire,exports){var oop=acequire(\"../../lib/oop\"),Behaviour=acequire(\"../behaviour\").Behaviour,TokenIterator=acequire(\"../../token_iterator\").TokenIterator,lang=acequire(\"../../lib/lang\"),SAFE_INSERT_IN_TOKENS=[\"text\",\"paren.rparen\",\"punctuation.operator\"],SAFE_INSERT_BEFORE_TOKENS=[\"text\",\"paren.rparen\",\"punctuation.operator\",\"comment\"],autoInsertedBrackets=0,autoInsertedRow=-1,autoInsertedLineEnd=\"\",maybeInsertedBrackets=0,maybeInsertedRow=-1,maybeInsertedLineStart=\"\",maybeInsertedLineEnd=\"\",CstyleBehaviour=function(){CstyleBehaviour.isSaneInsertion=function(editor,session){var cursor=editor.getCursorPosition(),iterator=new TokenIterator(session,cursor.row,cursor.column);if(!this.$matchTokenType(iterator.getCurrentToken()||\"text\",SAFE_INSERT_IN_TOKENS)){var iterator2=new TokenIterator(session,cursor.row,cursor.column+1);if(!this.$matchTokenType(iterator2.getCurrentToken()||\"text\",SAFE_INSERT_IN_TOKENS))return!1}return iterator.stepForward(),iterator.getCurrentTokenRow()!==cursor.row||this.$matchTokenType(iterator.getCurrentToken()||\"text\",SAFE_INSERT_BEFORE_TOKENS)},CstyleBehaviour.$matchTokenType=function(token,types){return types.indexOf(token.type||token)>-1},CstyleBehaviour.recordAutoInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition(),line=session.doc.getLine(cursor.row);this.isAutoInsertedClosing(cursor,line,autoInsertedLineEnd[0])||(autoInsertedBrackets=0),autoInsertedRow=cursor.row,autoInsertedLineEnd=bracket+line.substr(cursor.column),autoInsertedBrackets++},CstyleBehaviour.recordMaybeInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition(),line=session.doc.getLine(cursor.row);this.isMaybeInsertedClosing(cursor,line)||(maybeInsertedBrackets=0),maybeInsertedRow=cursor.row,maybeInsertedLineStart=line.substr(0,cursor.column)+bracket,maybeInsertedLineEnd=line.substr(cursor.column),maybeInsertedBrackets++},CstyleBehaviour.isAutoInsertedClosing=function(cursor,line,bracket){return autoInsertedBrackets>0&&cursor.row===autoInsertedRow&&bracket===autoInsertedLineEnd[0]&&line.substr(cursor.column)===autoInsertedLineEnd},CstyleBehaviour.isMaybeInsertedClosing=function(cursor,line){return maybeInsertedBrackets>0&&cursor.row===maybeInsertedRow&&line.substr(cursor.column)===maybeInsertedLineEnd&&line.substr(0,cursor.column)==maybeInsertedLineStart},CstyleBehaviour.popAutoInsertedClosing=function(){autoInsertedLineEnd=autoInsertedLineEnd.substr(1),autoInsertedBrackets--},CstyleBehaviour.clearMaybeInsertedClosing=function(){maybeInsertedBrackets=0,maybeInsertedRow=-1},this.add(\"braces\",\"insertion\",function(state,action,editor,session,text){var cursor=editor.getCursorPosition(),line=session.doc.getLine(cursor.row);if(\"{\"==text){var selection=editor.getSelectionRange(),selected=session.doc.getTextRange(selection);if(\"\"!==selected&&\"{\"!==selected&&editor.getWrapBehavioursEnabled())return{text:\"{\"+selected+\"}\",selection:!1};if(CstyleBehaviour.isSaneInsertion(editor,session))return/[\\]\\}\\)]/.test(line[cursor.column])?(CstyleBehaviour.recordAutoInsert(editor,session,\"}\"),{text:\"{}\",selection:[1,1]}):(CstyleBehaviour.recordMaybeInsert(editor,session,\"{\"),{text:\"{\",selection:[1,1]})}else if(\"}\"==text){var rightChar=line.substring(cursor.column,cursor.column+1);if(\"}\"==rightChar){var matching=session.$findOpeningBracket(\"}\",{column:cursor.column+1,row:cursor.row});if(null!==matching&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text))return CstyleBehaviour.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}else if(\"\\n\"==text||\"\\r\\n\"==text){var closing=\"\";CstyleBehaviour.isMaybeInsertedClosing(cursor,line)&&(closing=lang.stringRepeat(\"}\",maybeInsertedBrackets),CstyleBehaviour.clearMaybeInsertedClosing());var rightChar=line.substring(cursor.column,cursor.column+1);if(\"}\"==rightChar||\"\"!==closing){var openBracePos=session.findMatchingBracket({row:cursor.row,column:cursor.column},\"}\");if(!openBracePos)return null;var indent=this.getNextLineIndent(state,line.substring(0,cursor.column),session.getTabString()),next_indent=this.$getIndent(line);return{text:\"\\n\"+indent+\"\\n\"+next_indent+closing,selection:[1,indent.length,1,indent.length]}}}}),this.add(\"braces\",\"deletion\",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&\"{\"==selected){var line=session.doc.getLine(range.start.row),rightChar=line.substring(range.end.column,range.end.column+1);if(\"}\"==rightChar)return range.end.column++,range;maybeInsertedBrackets--}}),this.add(\"parens\",\"insertion\",function(state,action,editor,session,text){if(\"(\"==text){var selection=editor.getSelectionRange(),selected=session.doc.getTextRange(selection);if(\"\"!==selected&&editor.getWrapBehavioursEnabled())return{text:\"(\"+selected+\")\",selection:!1};if(CstyleBehaviour.isSaneInsertion(editor,session))return CstyleBehaviour.recordAutoInsert(editor,session,\")\"),{text:\"()\",selection:[1,1]}}else if(\")\"==text){var cursor=editor.getCursorPosition(),line=session.doc.getLine(cursor.row),rightChar=line.substring(cursor.column,cursor.column+1);if(\")\"==rightChar){var matching=session.$findOpeningBracket(\")\",{column:cursor.column+1,row:cursor.row});if(null!==matching&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text))return CstyleBehaviour.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"parens\",\"deletion\",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&\"(\"==selected){var line=session.doc.getLine(range.start.row),rightChar=line.substring(range.start.column+1,range.start.column+2);if(\")\"==rightChar)return range.end.column++,range}}),this.add(\"brackets\",\"insertion\",function(state,action,editor,session,text){if(\"[\"==text){var selection=editor.getSelectionRange(),selected=session.doc.getTextRange(selection);if(\"\"!==selected&&editor.getWrapBehavioursEnabled())return{text:\"[\"+selected+\"]\",selection:!1};if(CstyleBehaviour.isSaneInsertion(editor,session))return CstyleBehaviour.recordAutoInsert(editor,session,\"]\"),{text:\"[]\",selection:[1,1]}}else if(\"]\"==text){var cursor=editor.getCursorPosition(),line=session.doc.getLine(cursor.row),rightChar=line.substring(cursor.column,cursor.column+1);if(\"]\"==rightChar){var matching=session.$findOpeningBracket(\"]\",{column:cursor.column+1,row:cursor.row});if(null!==matching&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text))return CstyleBehaviour.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"brackets\",\"deletion\",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&\"[\"==selected){var line=session.doc.getLine(range.start.row),rightChar=line.substring(range.start.column+1,range.start.column+2);if(\"]\"==rightChar)return range.end.column++,range}}),this.add(\"string_dquotes\",\"insertion\",function(state,action,editor,session,text){if('\"'==text||\"'\"==text){var quote=text,selection=editor.getSelectionRange(),selected=session.doc.getTextRange(selection);if(\"\"!==selected&&\"'\"!==selected&&'\"'!=selected&&editor.getWrapBehavioursEnabled())return{text:quote+selected+quote,selection:!1};var cursor=editor.getCursorPosition(),line=session.doc.getLine(cursor.row),leftChar=line.substring(cursor.column-1,cursor.column);if(\"\\\\\"==leftChar)return null;for(var token,tokens=session.getTokens(selection.start.row),col=0,quotepos=-1,x=0;tokens.length>x&&(token=tokens[x],\"string\"==token.type?quotepos=-1:0>quotepos&&(quotepos=token.value.indexOf(quote)),!(token.value.length+col>selection.start.column));x++)col+=tokens[x].value.length;if(!token||0>quotepos&&\"comment\"!==token.type&&(\"string\"!==token.type||selection.start.column!==token.value.length+col-1&&token.value.lastIndexOf(quote)===token.value.length-1)){if(!CstyleBehaviour.isSaneInsertion(editor,session))return;return{text:quote+quote,selection:[1,1]}}if(token&&\"string\"===token.type){var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==quote)return{text:\"\",selection:[1,1]}}}}),this.add(\"string_dquotes\",\"deletion\",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&('\"'==selected||\"'\"==selected)){var line=session.doc.getLine(range.start.row),rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==selected)return range.end.column++,range}})};oop.inherits(CstyleBehaviour,Behaviour),exports.CstyleBehaviour=CstyleBehaviour}),ace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"],function(acequire,exports){var oop=acequire(\"../../lib/oop\");acequire(\"../../range\").Range;var BaseFoldMode=acequire(\"./fold_mode\").FoldMode,FoldMode=exports.FoldMode=function(commentRegex){commentRegex&&(this.foldingStartMarker=RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/,\"|\"+commentRegex.start)),this.foldingStopMarker=RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/,\"|\"+commentRegex.end)))};oop.inherits(FoldMode,BaseFoldMode),function(){this.foldingStartMarker=/(\\{|\\[)[^\\}\\]]*$|^\\s*(\\/\\*)/,this.foldingStopMarker=/^[^\\[\\{]*(\\}|\\])|^[\\s\\*]*(\\*\\/)/,this.getFoldWidgetRange=function(session,foldStyle,row){var line=session.getLine(row),match=line.match(this.foldingStartMarker);if(match){var i=match.index;return match[1]?this.openingBracketBlock(session,match[1],row,i):session.getCommentFoldRange(row,i+match[0].length,1)}if(\"markbeginend\"===foldStyle){var match=line.match(this.foldingStopMarker);if(match){var i=match.index+match[0].length;return match[1]?this.closingBracketBlock(session,match[1],row,i):session.getCommentFoldRange(row,i,-1)}}}}.call(FoldMode.prototype)})})()},{\"../worker/javascript\":19}],11:[function(require,module){\"use strict\";var ace=require(\"brace\");require(\"brace/mode/javascript\"),require(\"brace/theme/monokai\"),module.exports=function(container,src){var editorContainer=document.createElement(\"div\");editorContainer.setAttribute(\"class\",\"scriptie-talkie-editor\"),container.appendChild(editorContainer);var editor=ace.edit(editorContainer),session=editor.getSession();return editor.setTheme(\"ace/theme/monokai\"),session.setMode(\"ace/mode/javascript\"),session.$tabSize=2,editor.$highlightActiveLine=!1,editor.setValue(src),{container:editorContainer,editor:editor}}},{\"brace/mode/javascript\":18,\"brace/theme/monokai\":17,brace:20}],12:[function(require,module){\"use strict\";function appendTerminal(terminalContainer,lines){var terminal=hypernal();return lines&&lines.forEach(function(line){terminal.writeln(line)}),terminal.appendTo(terminalContainer),terminal}function appendTerminalAndGetHeight(terminalContainer,lines){var terminal=appendTerminal(terminalContainer,lines),height=terminal.element.clientHeight;return{terminal:terminal,height:height}}var hypernal=require(\"hypernal\");module.exports=function(container,opts){opts=opts||{};var height,terminal,terminalContainer=document.createElement(\"div\");if(terminalContainer.setAttribute(\"class\",\"scriptie-talkie-terminal\"),container.appendChild(terminalContainer),opts.lines){var appended=appendTerminalAndGetHeight(terminalContainer,opts.lines);terminal=appended.terminal,height=appended.height}else terminal=appendTerminal(terminalContainer);return{container:terminalContainer,terminal:terminal,height:height}}},{hypernal:21}],13:[function(require,module){\"use strict\";var scriptieTalkie=require(\"scriptie-talkie\");module.exports=function(script,writeln){var lines=[];if(writeln=writeln||function(){},!script.trim().length)return lines;try{lines=scriptieTalkie(script),lines.forEach(function(line){writeln(line)})}catch(e){if(console.log(e.stack),console.error(\"\"+e),e instanceof ReferenceError&&/Trying to access object from destroyed plug-in/.test(e.message)){var msg=\"Looks like your iPad Safari browser doesn't like what scriptie talkie is doing.\\nPlease try another device and/or browser, i.e. chrome works everywhere, even on iPad.\";writeln(msg)}else e.inner?(writeln(\"unable to parse the current code, looks like you have an error on: \"),writeln(\"line: \"+e.inner.lineNumber+\" column: \"+e.inner.column)):(writeln(\"\"+e),writeln(e.stack))}return lines}},{\"scriptie-talkie\":22}],19:[function(require,module){(function(){module.exports.id=\"ace/mode/javascript_worker\",module.exports.src='\"no use strict\";(function(window){void 0!==window.window&&window.document||(window.console={log:function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},error:function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})}},window.window=window,window.ace=window,window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return normalizeModule(parentId,chunks[0])+\"!\"+normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=base+\"/\"+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/\\\\/\\\\.\\\\//,\"/\").replace(/[^\\\\/]+\\\\/\\\\.\\\\.\\\\//,\"\")}}return moduleName},window.acequire=function(parentId,id){if(!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=normalizeModule(parentId,id);var module=acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;var chunks=id.split(\"/\");chunks[0]=acequire.tlns[chunks[0]]||chunks[0];var path=chunks.join(\"/\")+\".js\";return acequire.id=id,importScripts(path),acequire(parentId,id)},acequire.modules={},acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=acequire.id)):1==arguments.length&&(factory=id,id=acequire.id),0!==id.indexOf(\"text!\")){var req=function(deps,factory){return acequire(id,deps,factory)};acequire.modules[id]={factory:function(){var module={exports:{}},returnExports=factory(req,module.exports,module);return returnExports&&(module.exports=returnExports),module}}}},window.initBaseUrls=function initBaseUrls(topLevelNamespaces){acequire.tlns=topLevelNamespaces},window.initSender=function initSender(){var EventEmitter=acequire(null,\"ace/lib/event_emitter\").EventEmitter,oop=acequire(null,\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender},window.main=null,window.sender=null,window.onmessage=function(e){var msg=e.data;if(msg.command){if(!main[msg.command])throw Error(\"Unknown command:\"+msg.command);main[msg.command].apply(main,msg.args)}else if(msg.init){initBaseUrls(msg.tlns),acequire(null,\"ace/lib/fixoldbrowsers\"),sender=initSender();var clazz=acequire(null,msg.module)[msg.classname];main=new clazz(sender)}else msg.event&&sender&&sender._emit(msg.event,msg.data)})})(this),ace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/regexp\",\"ace/lib/es5-shim\"],function(acequire){acequire(\"./regexp\"),acequire(\"./es5-shim\")}),ace.define(\"ace/lib/regexp\",[\"require\",\"exports\",\"module\"],function(){function getNativeFlags(regex){return(regex.global?\"g\":\"\")+(regex.ignoreCase?\"i\":\"\")+(regex.multiline?\"m\":\"\")+(regex.extended?\"x\":\"\")+(regex.sticky?\"y\":\"\")}function indexOf(array,item,from){if(Array.prototype.indexOf)return array.indexOf(item,from);for(var i=from||0;array.length>i;i++)if(array[i]===item)return i;return-1}var real={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},compliantExecNpcg=void 0===real.exec.call(/()??/,\"\")[1],compliantLastIndexIncrement=function(){var x=/^/g;return real.test.call(x,\"\"),!x.lastIndex}();compliantLastIndexIncrement&&compliantExecNpcg||(RegExp.prototype.exec=function(str){var name,r2,match=real.exec.apply(this,arguments);if(\"string\"==typeof str&&match){if(!compliantExecNpcg&&match.length>1&&indexOf(match,\"\")>-1&&(r2=RegExp(this.source,real.replace.call(getNativeFlags(this),\"g\",\"\")),real.replace.call(str.slice(match.index),r2,function(){for(var i=1;arguments.length-2>i;i++)void 0===arguments[i]&&(match[i]=void 0)})),this._xregexp&&this._xregexp.captureNames)for(var i=1;match.length>i;i++)name=this._xregexp.captureNames[i-1],name&&(match[name]=match[i]);!compliantLastIndexIncrement&&this.global&&!match[0].length&&this.lastIndex>match.index&&this.lastIndex--}return match},compliantLastIndexIncrement||(RegExp.prototype.test=function(str){var match=real.exec.call(this,str);return match&&this.global&&!match[0].length&&this.lastIndex>match.index&&this.lastIndex--,!!match}))}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != \\'object\\'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\\\n\u000b\\\\f\\\\r  ᠎              \\\\u2028\\\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can\\'t convert \"+o+\" to object\");return Object(o)}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault);for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners)for(var i=0;listeners.length>i;i++)listeners[i](e,this)},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){if(this._defaultHandlers=this._defaultHandlers||{},this._defaultHandlers[eventName])throw Error(\"The default handler for \\'\"+eventName+\"\\' is already set\");this._defaultHandlers[eventName]=callback},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){exports.inherits=function(){var tempCtor=function(){};return function(ctor,superCtor){tempCtor.prototype=superCtor.prototype,ctor.super_=superCtor.prototype,ctor.prototype=new tempCtor,ctor.prototype.constructor=ctor}}(),exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\"ace/mode/javascript_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/javascript/jshint\"],function(acequire,exports,module){function startRegex(arr){return RegExp(\"^(\"+arr.join(\"|\")+\")\")}var oop=acequire(\"../lib/oop\"),Mirror=acequire(\"../worker/mirror\").Mirror,lint=acequire(\"./javascript/jshint\").JSHINT,disabledWarningsRe=startRegex([\"Bad for in variable \\'(.+)\\'.\",\\'Missing \"use strict\"\\']),errorsRe=startRegex([\"Unexpected\",\"Expected \",\"Confusing (plus|minus)\",\"\\\\\\\\{a\\\\\\\\} unterminated regular expression\",\"Unclosed \",\"Unmatched \",\"Unbegun comment\",\"Bad invocation\",\"Missing space after\",\"Missing operator at\"]),infoRe=startRegex([\"Expected an assignment\",\"Bad escapement of EOL\",\"Unexpected comma\",\"Unexpected space\",\"Missing radix parameter.\",\"A leading decimal point can\",\"\\\\\\\\[\\'{a}\\'\\\\\\\\] is better written in dot notation.\",\"\\'{a}\\' used out of scope\"]),JavaScriptWorker=exports.JavaScriptWorker=function(sender){Mirror.call(this,sender),this.setTimeout(500),this.setOptions()};oop.inherits(JavaScriptWorker,Mirror),function(){this.setOptions=function(options){this.options=options||{es5:!0,esnext:!0,devel:!0,browser:!0,node:!0,laxcomma:!0,laxbreak:!0,lastsemic:!0,onevar:!1,passfail:!1,maxerr:100,expr:!0,multistr:!0,globalstrict:!0},this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.changeOptions=function(newOptions){oop.mixin(this.options,newOptions),this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.isValidJS=function(str){try{eval(\"throw 0;\"+str)}catch(e){if(0===e)return!0}return!1},this.onUpdate=function(){var value=this.doc.getValue();if(value=value.replace(/^#!.*\\\\n/,\"\\\\n\"),!value)return this.sender.emit(\"jslint\",[]),void 0;var errors=[],maxErrorLevel=this.isValidJS(value)?\"warning\":\"error\";lint(value,this.options);for(var results=lint.errors,errorAdded=!1,i=0;results.length>i;i++){var error=results[i];if(error){var raw=error.raw,type=\"warning\";if(\"Missing semicolon.\"==raw){var str=error.evidence.substr(error.character);str=str.charAt(str.search(/\\\\S/)),\"error\"==maxErrorLevel&&str&&/[\\\\w\\\\d{([\\'\"]/.test(str)?(error.reason=\\'Missing \";\" before statement\\',type=\"error\"):type=\"info\"}else{if(disabledWarningsRe.test(raw))continue;infoRe.test(raw)?type=\"info\":errorsRe.test(raw)?(errorAdded=!0,type=maxErrorLevel):\"\\'{a}\\' is not defined.\"==raw?type=\"warning\":\"\\'{a}\\' is defined but never used.\"==raw&&(type=\"info\")}errors.push({row:error.line-1,column:error.character-1,text:error.reason,type:type,raw:raw})}}this.sender.emit(\"jslint\",errors)}}.call(JavaScriptWorker.prototype)}),ace.define(\"ace/worker/mirror\",[\"require\",\"exports\",\"module\",\"ace/document\",\"ace/lib/lang\"],function(acequire,exports){var Document=acequire(\"../document\").Document,lang=acequire(\"../lib/lang\"),Mirror=exports.Mirror=function(sender){this.sender=sender;var doc=this.doc=new Document(\"\"),deferredUpdate=this.deferredUpdate=lang.delayedCall(this.onUpdate.bind(this)),_self=this;sender.on(\"change\",function(e){doc.applyDeltas([e.data]),deferredUpdate.schedule(_self.$timeout)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){}}).call(Mirror.prototype)}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(text){this.$lines=[],0==text.length?this.$lines=[\"\"]:Array.isArray(text)?this.insertLines(0,text):this.insert({row:0,column:0},text)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength();this.remove(new Range(0,0,len,this.getLine(len-1).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==\"aaa\".split(/a/).length?function(text){return text.replace(/\\\\r\\\\n|\\\\r/g,\"\\\\n\").split(\"\\\\n\")}:function(text){return text.split(/\\\\r\\\\n|\\\\r|\\\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\\\r\\\\n|\\\\r|\\\\n)/m);this.$autoNewLine=match?match[1]:\"\\\\n\"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\\\r\\\\n\";case\"unix\":return\"\\\\n\";default:return this.$autoNewLine}},this.$autoNewLine=\"\\\\n\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode)},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\\\r\\\\n\"==text||\"\\\\r\"==text||\"\\\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){if(range.start.row==range.end.row)return this.$lines[range.start.row].substring(range.start.column,range.end.column);var lines=this.getLines(range.start.row+1,range.end.row-1);return lines.unshift((this.$lines[range.start.row]||\"\").substring(range.start.column)),lines.push((this.$lines[range.end.row]||\"\").substring(0,range.end.column)),lines.join(this.getNewLineCharacter())},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):0>position.row&&(position.row=0),position},this.insert=function(position,text){if(!text||0===text.length)return position;position=this.$clipPosition(position),1>=this.getLength()&&this.$detectNewLine(text);var lines=this.$split(text),firstLine=lines.splice(0,1)[0],lastLine=0==lines.length?null:lines.splice(lines.length-1,1)[0];return position=this.insertInLine(position,firstLine),null!==lastLine&&(position=this.insertNewLine(position),position=this.insertLines(position.row,lines),position=this.insertInLine(position,lastLine||\"\")),position},this.insertLines=function(row,lines){if(0==lines.length)return{row:row,column:0};if(lines.length>65535){var end=this.insertLines(row,lines.slice(65535));lines=lines.slice(0,65535)}var args=[row,0];args.push.apply(args,lines),this.$lines.splice.apply(this.$lines,args);var range=new Range(row,0,row+lines.length,0),delta={action:\"insertLines\",range:range,lines:lines};return this._emit(\"change\",{data:delta}),end||range.end},this.insertNewLine=function(position){position=this.$clipPosition(position);var line=this.$lines[position.row]||\"\";this.$lines[position.row]=line.substring(0,position.column),this.$lines.splice(position.row+1,0,line.substring(position.column,line.length));var end={row:position.row+1,column:0},delta={action:\"insertText\",range:Range.fromPoints(position,end),text:this.getNewLineCharacter()};return this._emit(\"change\",{data:delta}),end},this.insertInLine=function(position,text){if(0==text.length)return position;var line=this.$lines[position.row]||\"\";this.$lines[position.row]=line.substring(0,position.column)+text+line.substring(position.column);var end={row:position.row,column:position.column+text.length},delta={action:\"insertText\",range:Range.fromPoints(position,end),text:text};return this._emit(\"change\",{data:delta}),end},this.remove=function(range){if(range.start=this.$clipPosition(range.start),range.end=this.$clipPosition(range.end),range.isEmpty())return range.start;var firstRow=range.start.row,lastRow=range.end.row;if(range.isMultiLine()){var firstFullRow=0==range.start.column?firstRow:firstRow+1,lastFullRow=lastRow-1;range.end.column>0&&this.removeInLine(lastRow,0,range.end.column),lastFullRow>=firstFullRow&&this.removeLines(firstFullRow,lastFullRow),firstFullRow!=firstRow&&(this.removeInLine(firstRow,range.start.column,this.getLine(firstRow).length),this.removeNewLine(range.start.row))}else this.removeInLine(firstRow,range.start.column,range.end.column);return range.start},this.removeInLine=function(row,startColumn,endColumn){if(startColumn!=endColumn){var range=new Range(row,startColumn,row,endColumn),line=this.getLine(row),removed=line.substring(startColumn,endColumn),newLine=line.substring(0,startColumn)+line.substring(endColumn,line.length);this.$lines.splice(row,1,newLine);var delta={action:\"removeText\",range:range,text:removed};return this._emit(\"change\",{data:delta}),range.start}},this.removeLines=function(firstRow,lastRow){var range=new Range(firstRow,0,lastRow+1,0),removed=this.$lines.splice(firstRow,lastRow-firstRow+1),delta={action:\"removeLines\",range:range,nl:this.getNewLineCharacter(),lines:removed};return this._emit(\"change\",{data:delta}),removed},this.removeNewLine=function(row){var firstLine=this.getLine(row),secondLine=this.getLine(row+1),range=new Range(row,firstLine.length,row+1,0),line=firstLine+secondLine;this.$lines.splice(row,2,line);var delta={action:\"removeText\",range:range,text:this.getNewLineCharacter()};this._emit(\"change\",{data:delta})},this.replace=function(range,text){if(0==text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;if(this.remove(range),text)var end=this.insert(range.start,text);else end=range.start;return end},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);\"insertLines\"==delta.action?this.insertLines(range.start.row,delta.lines):\"insertText\"==delta.action?this.insert(range.start,delta.text):\"removeLines\"==delta.action?this.removeLines(range.start.row,range.end.row-1):\"removeText\"==delta.action&&this.remove(range)}},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);\"insertLines\"==delta.action?this.removeLines(range.start.row,range.end.row-1):\"insertText\"==delta.action?this.remove(range):\"removeLines\"==delta.action?this.insertLines(range.start.row,delta.lines):\"removeText\"==delta.action&&this.insert(range.start,delta.text)}},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length;return index+newlineLength*i+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)\\n},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.document=doc,column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column),this.$onChange=this.onChange.bind(this),doc.on(\"change\",this.$onChange)};(function(){oop.implement(this,EventEmitter),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.onChange=function(e){var delta=e.data,range=delta.range;if(!(range.start.row==range.end.row&&range.start.row!=this.row||range.start.row>this.row||range.start.row==this.row&&range.start.column>this.column)){var row=this.row,column=this.column,start=range.start,end=range.end;\"insertText\"===delta.action?start.row===row&&column>=start.column?start.row===end.row?column+=end.column-start.column:(column-=start.column,row+=end.row-start.row):start.row!==end.row&&row>start.row&&(row+=end.row-start.row):\"insertLines\"===delta.action?row>=start.row&&(row+=end.row-start.row):\"removeText\"===delta.action?start.row===row&&column>start.column?column=end.column>=column?start.column:Math.max(0,column-(end.column-start.column)):start.row!==end.row&&row>start.row?(end.row===row&&(column=Math.max(0,column-end.column)+start.column),row-=end.row-start.row):end.row===row&&(row-=end.row-start.row,column=Math.max(0,column-end.column)+start.column):\"removeLines\"==delta.action&&row>=start.row&&(row>=end.row?row-=end.row-start.row:(row=start.row,column=0)),this.setPosition(row,column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._emit(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\\\s\\\\s*/,trimEndRegexp=/\\\\s\\\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function(obj){if(\"object\"!=typeof obj)return obj;var copy=obj.constructor();for(var key in obj)copy[key]=\"object\"==typeof obj[key]?this.deepCopy(obj[key]):obj[key];return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\\\]\\\\/\\\\\\\\])/g,\"\\\\\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/\\'/g,\"'\").replace(/\u003C/g,\"<\")},exports.getMatchOffsets=function(string,regExp){var matches=[];return string.replace(regExp,function(str){matches.push({offset:arguments[arguments.length-2],length:str.length})}),matches},exports.deferredCall=function(fcn){var timer=null,callback=function(){timer=null,fcn()},deferred=function(timeout){return deferred.cancel(),timer=setTimeout(callback,timeout||0),deferred};return deferred.schedule=deferred,deferred.call=function(){return this.cancel(),fcn(),deferred},deferred.cancel=function(){return clearTimeout(timer),timer=null,deferred},deferred},exports.delayedCall=function(fcn,defaultTimeout){var timer=null,callback=function(){timer=null,fcn()},_self=function(timeout){timer&&clearTimeout(timer),timer=setTimeout(callback,timeout||defaultTimeout)};return _self.delay=_self,_self.schedule=function(timeout){null==timer&&(timer=setTimeout(callback,timeout||0))},_self.call=function(){this.cancel(),fcn()},_self.cancel=function(){timer&&clearTimeout(timer),timer=null},_self.isPending=function(){return timer},_self}}),ace.define(\"ace/mode/javascript/jshint\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var JSHINT=function(){function F(){}function is_own(object,name){return Object.prototype.hasOwnProperty.call(object,name)}function checkOption(name,t){void 0===valOptions[name]&&void 0===boolOptions[name]&&warning(\"Bad option: \\'\"+name+\"\\'.\",t)}function isString(obj){return\"[object String]\"===Object.prototype.toString.call(obj)}function isAlpha(str){return str>=\"a\"&&\"z￿\">=str||str>=\"A\"&&\"Z￿\">=str}function isDigit(str){return str>=\"0\"&&\"9\">=str}function isIdentifier(token,value){return token?token.identifier&&token.value===value?!0:!1:!1}function supplant(str,data){return str.replace(/\\\\{([^{}]*)\\\\}/g,function(a,b){var r=data[b];return\"string\"==typeof r||\"number\"==typeof r?r:a})}function combine(t,o){var n;for(n in o)is_own(o,n)&&!is_own(JSHINT.blacklist,n)&&(t[n]=o[n])}function updatePredefined(){Object.keys(JSHINT.blacklist).forEach(function(key){delete predefined[key]})}function assume(){option.couch&&combine(predefined,couch),option.rhino&&combine(predefined,rhino),option.prototypejs&&combine(predefined,prototypejs),option.node&&(combine(predefined,node),option.globalstrict=!0),option.devel&&combine(predefined,devel),option.dojo&&combine(predefined,dojo),option.browser&&combine(predefined,browser),option.nonstandard&&combine(predefined,nonstandard),option.jquery&&combine(predefined,jquery),option.mootools&&combine(predefined,mootools),option.worker&&combine(predefined,worker),option.wsh&&combine(predefined,wsh),option.esnext&&useESNextSyntax(),option.globalstrict&&option.strict!==!1&&(option.strict=!0),option.yui&&combine(predefined,yui)}function quit(message,line,chr){var percentage=Math.floor(100*(line/lines.length));throw{name:\"JSHintError\",line:line,character:chr,message:message+\" (\"+percentage+\"% scanned).\",raw:message}}function isundef(scope,m,t,a){return JSHINT.undefs.push([scope,m,t,a])}function warning(m,t,a,b,c,d){var ch,l,w;return t=t||nexttoken,\"(end)\"===t.id&&(t=token),l=t.line||0,ch=t.from||0,w={id:\"(error)\",raw:m,evidence:lines[l-1]||\"\",line:l,character:ch,scope:JSHINT.scope,a:a,b:b,c:c,d:d},w.reason=supplant(m,w),JSHINT.errors.push(w),option.passfail&&quit(\"Stopping. \",l,ch),warnings+=1,warnings>=option.maxerr&&quit(\"Too many errors.\",l,ch),w}function warningAt(m,l,ch,a,b,c,d){return warning(m,{line:l,from:ch},a,b,c,d)}function error(m,t,a,b,c,d){warning(m,t,a,b,c,d)}function errorAt(m,l,ch,a,b,c,d){return error(m,{line:l,from:ch},a,b,c,d)}function addInternalSrc(elem,src){var i;return i={id:\"(internal)\",elem:elem,value:src},JSHINT.internals.push(i),i}function addlabel(t,type,token){\"hasOwnProperty\"===t&&warning(\"\\'hasOwnProperty\\' is a really bad name.\"),\"exception\"===type&&is_own(funct[\"(context)\"],t)&&(funct[t]===!0||option.node||warning(\"Value of \\'{a}\\' may be overwritten in IE.\",nexttoken,t)),is_own(funct,t)&&!funct[\"(global)\"]&&(funct[t]===!0?option.latedef&&warning(\"\\'{a}\\' was used before it was defined.\",nexttoken,t):option.shadow||\"exception\"===type||warning(\"\\'{a}\\' is already defined.\",nexttoken,t)),funct[t]=type,token&&(funct[\"(tokens)\"][t]=token),funct[\"(global)\"]?(global[t]=funct,is_own(implied,t)&&(option.latedef&&warning(\"\\'{a}\\' was used before it was defined.\",nexttoken,t),delete implied[t])):scope[t]=funct}function doOption(){var b,obj,filter,t,tn,v,minus,nt=nexttoken,o=nt.value,quotmarkValue=option.quotmark,predef={};switch(o){case\"*/\":error(\"Unbegun comment.\");break;case\"/*members\":case\"/*member\":o=\"/*members\",membersOnly||(membersOnly={}),obj=membersOnly,option.quotmark=!1;break;case\"/*jshint\":case\"/*jslint\":obj=option,filter=boolOptions;break;case\"/*global\":obj=predef;break;default:error(\"What?\")}for(t=lex.token();;){minus=!1;for(var breakOuterLoop;;){if(\"special\"===t.type&&\"*/\"===t.value){breakOuterLoop=!0;break}if(\"(endline)\"!==t.id&&\",\"!==t.id)break;t=lex.token()}if(breakOuterLoop)break;if(\"/*global\"===o&&\"-\"===t.value&&(minus=!0,t=lex.token()),\"(string)\"!==t.type&&\"(identifier)\"!==t.type&&\"/*members\"!==o&&error(\"Bad option.\",t),v=lex.token(),\":\"===v.id){v=lex.token(),obj===membersOnly&&error(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",t,\"*/\",\":\"),\"/*jshint\"===o&&checkOption(t.value,t);var numericVals=[\"maxstatements\",\"maxparams\",\"maxdepth\",\"maxcomplexity\",\"maxerr\",\"maxlen\",\"indent\"];if(numericVals.indexOf(t.value)>-1&&(\"/*jshint\"===o||\"/*jslint\"===o))b=+v.value,(\"number\"!=typeof b||!isFinite(b)||0>=b||Math.floor(b)!==b)&&error(\"Expected a small integer and instead saw \\'{a}\\'.\",v,v.value),\"indent\"===t.value&&(obj.white=!0),obj[t.value]=b;else if(\"validthis\"===t.value)funct[\"(global)\"]?error(\"Option \\'validthis\\' can\\'t be used in a global scope.\"):\"true\"===v.value||\"false\"===v.value?obj[t.value]=\"true\"===v.value:error(\"Bad option value.\",v);else if(\"quotmark\"===t.value&&\"/*jshint\"===o)switch(v.value){case\"true\":obj.quotmark=!0;break;case\"false\":obj.quotmark=!1;break;case\"double\":case\"single\":obj.quotmark=v.value;break;default:error(\"Bad option value.\",v)}else\"true\"===v.value||\"false\"===v.value?(\"/*jslint\"===o?(tn=renamedOptions[t.value]||t.value,obj[tn]=\"true\"===v.value,void 0!==invertedOptions[tn]&&(obj[tn]=!obj[tn])):obj[t.value]=\"true\"===v.value,\"newcap\"===t.value&&(obj[\"(explicitNewcap)\"]=!0)):error(\"Bad option value.\",v);t=lex.token()}else(\"/*jshint\"===o||\"/*jslint\"===o)&&error(\"Missing option value.\",t),obj[t.value]=!1,\"/*global\"===o&&minus===!0&&(JSHINT.blacklist[t.value]=t.value,updatePredefined()),t=v}\"/*members\"===o&&(option.quotmark=quotmarkValue),combine(predefined,predef);for(var key in predef)is_own(predef,key)&&(declared[key]=nt);filter&&assume()}function peek(p){for(var t,i=p||0,j=0;i>=j;)t=lookahead[j],t||(t=lookahead[j]=lex.token()),j+=1;return t}function advance(id,t){switch(token.id){case\"(number)\":\".\"===nexttoken.id&&warning(\"A dot following a number can be confused with a decimal point.\",token);break;case\"-\":(\"-\"===nexttoken.id||\"--\"===nexttoken.id)&&warning(\"Confusing minusses.\");break;case\"+\":(\"+\"===nexttoken.id||\"++\"===nexttoken.id)&&warning(\"Confusing plusses.\")}for((\"(string)\"===token.type||token.identifier)&&(anonname=token.value),id&&nexttoken.id!==id&&(t?\"(end)\"===nexttoken.id?warning(\"Unmatched \\'{a}\\'.\",t,t.id):warning(\"Expected \\'{a}\\' to match \\'{b}\\' from line {c} and instead saw \\'{d}\\'.\",nexttoken,id,t.id,t.line,nexttoken.value):(\"(identifier)\"!==nexttoken.type||nexttoken.value!==id)&&warning(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",nexttoken,id,nexttoken.value)),prevtoken=token,token=nexttoken;;){if(nexttoken=lookahead.shift()||lex.token(),\"(end)\"===nexttoken.id||\"(error)\"===nexttoken.id)return;if(\"special\"===nexttoken.type)doOption();else if(\"(endline)\"!==nexttoken.id)break}}function expression(rbp,initial){var left,isArray=!1,isObject=!1;if(\"(end)\"===nexttoken.id&&error(\"Unexpected early end of program.\",token),advance(),initial&&(anonname=\"anonymous\",funct[\"(verb)\"]=token.value),initial===!0&&token.fud)left=token.fud();else{if(token.nud)left=token.nud();else{if(\"(number)\"===nexttoken.type&&\".\"===token.id)return warning(\"A leading decimal point can be confused with a dot: \\'.{a}\\'.\",token,nexttoken.value),advance(),token;error(\"Expected an identifier and instead saw \\'{a}\\'.\",token,token.id)}for(;nexttoken.lbp>rbp;)isArray=\"Array\"===token.value,isObject=\"Object\"===token.value,left&&(left.value||left.first&&left.first.value)&&(\"new\"!==left.value||left.first&&left.first.value&&\".\"===left.first.value)&&(isArray=!1,left.value!==token.value&&(isObject=!1)),advance(),isArray&&\"(\"===token.id&&\")\"===nexttoken.id&&warning(\"Use the array literal notation [].\",token),isObject&&\"(\"===token.id&&\")\"===nexttoken.id&&warning(\"Use the object literal notation {}.\",token),token.led?left=token.led(left):error(\"Expected an operator and instead saw \\'{a}\\'.\",token,token.id)}return left}function adjacent(left,right){left=left||token,right=right||nexttoken,option.white&&left.character!==right.from&&left.line===right.line&&(left.from+=left.character-left.from,warning(\"Unexpected space after \\'{a}\\'.\",left,left.value))}function nobreak(left,right){left=left||token,right=right||nexttoken,!option.white||left.character===right.from&&left.line===right.line||warning(\"Unexpected space before \\'{a}\\'.\",right,right.value)}function nospace(left,right){left=left||token,right=right||nexttoken,option.white&&!left.comment&&left.line===right.line&&adjacent(left,right)}function nonadjacent(left,right){if(option.white){if(left=left||token,right=right||nexttoken,\";\"===left.value&&\";\"===right.value)return;left.line===right.line&&left.character===right.from&&(left.from+=left.character-left.from,warning(\"Missing space after \\'{a}\\'.\",left,left.value))}}function nobreaknonadjacent(left,right){left=left||token,right=right||nexttoken,option.laxbreak||left.line===right.line?option.white&&(left=left||token,right=right||nexttoken,left.character===right.from&&(left.from+=left.character-left.from,warning(\"Missing space after \\'{a}\\'.\",left,left.value))):warning(\"Bad line breaking before \\'{a}\\'.\",right,right.id)}function indentation(bias){var i;option.white&&\"(end)\"!==nexttoken.id&&(i=indent+(bias||0),nexttoken.from!==i&&warning(\"Expected \\'{a}\\' to have an indentation at {b} instead at {c}.\",nexttoken,nexttoken.value,i,nexttoken.from))}function nolinebreak(t){t=t||token,t.line!==nexttoken.line&&warning(\"Line breaking error \\'{a}\\'.\",t,t.value)}function comma(){token.line!==nexttoken.line?option.laxcomma||(comma.first&&(warning(\"Comma warnings can be turned off with \\'laxcomma\\'\"),comma.first=!1),warning(\"Bad line breaking before \\'{a}\\'.\",token,nexttoken.id)):!token.comment&&token.character!==nexttoken.from&&option.white&&(token.from+=token.character-token.from,warning(\"Unexpected space after \\'{a}\\'.\",token,token.value)),advance(\",\"),nonadjacent(token,nexttoken)}function symbol(s,p){var x=syntax[s];return x&&\"object\"==typeof x||(syntax[s]=x={id:s,lbp:p,value:s}),x}function delim(s){return symbol(s,0)}function stmt(s,f){var x=delim(s);return x.identifier=x.reserved=!0,x.fud=f,x}function blockstmt(s,f){var x=stmt(s,f);return x.block=!0,x}function reserveName(x){var c=x.id.charAt(0);return(c>=\"a\"&&\"z\">=c||c>=\"A\"&&\"Z\">=c)&&(x.identifier=x.reserved=!0),x}function prefix(s,f){var x=symbol(s,150);return reserveName(x),x.nud=\"function\"==typeof f?f:function(){return this.right=expression(150),this.arity=\"unary\",(\"++\"===this.id||\"--\"===this.id)&&(option.plusplus?warning(\"Unexpected use of \\'{a}\\'.\",this,this.id):this.right.identifier&&!this.right.reserved||\".\"===this.right.id||\"[\"===this.right.id||warning(\"Bad operand.\",this)),this},x}function type(s,f){var x=delim(s);return x.type=s,x.nud=f,x}function reserve(s,f){var x=type(s,f);return x.identifier=x.reserved=!0,x}function reservevar(s,v){return reserve(s,function(){return\"function\"==typeof v&&v(this),this})}function infix(s,f,p,w){var x=symbol(s,p);return reserveName(x),x.led=function(left){return w||(nobreaknonadjacent(prevtoken,token),nonadjacent(token,nexttoken)),\"in\"===s&&\"!\"===left.id&&warning(\"Confusing use of \\'{a}\\'.\",left,\"!\"),\"function\"==typeof f?f(left,this):(this.left=left,this.right=expression(p),this)},x}function relation(s,f){var x=symbol(s,100);return x.led=function(left){nobreaknonadjacent(prevtoken,token),nonadjacent(token,nexttoken);var right=expression(100);return isIdentifier(left,\"NaN\")||isIdentifier(right,\"NaN\")?warning(\"Use the isNaN function to compare with NaN.\",this):f&&f.apply(this,[left,right]),\"!\"===left.id&&warning(\"Confusing use of \\'{a}\\'.\",left,\"!\"),\"!\"===right.id&&warning(\"Confusing use of \\'{a}\\'.\",right,\"!\"),this.left=left,this.right=right,this},x}function isPoorRelation(node){return node&&(\"(number)\"===node.type&&0===+node.value||\"(string)\"===node.type&&\"\"===node.value||\"null\"===node.type&&!option.eqnull||\"true\"===node.type||\"false\"===node.type||\"undefined\"===node.type)}function assignop(s){return symbol(s,20).exps=!0,infix(s,function(left,that){if(that.left=left,predefined[left.value]===!1&&scope[left.value][\"(global)\"]===!0?warning(\"Read only.\",left):left[\"function\"]&&warning(\"\\'{a}\\' is a function.\",left,left.value),left){if(option.esnext&&\"const\"===funct[left.value]&&warning(\"Attempting to override \\'{a}\\' which is a constant\",left,left.value),\".\"===left.id||\"[\"===left.id)return left.left&&\"arguments\"!==left.left.value||warning(\"Bad assignment.\",that),that.right=expression(19),that;if(left.identifier&&!left.reserved)return\"exception\"===funct[left.value]&&warning(\"Do not assign to the exception parameter.\",left),that.right=expression(19),that;left===syntax[\"function\"]&&warning(\"Expected an identifier in an assignment and instead saw a function invocation.\",token)}error(\"Bad assignment.\",that)},20)}function bitwise(s,f,p){var x=symbol(s,p);return reserveName(x),x.led=\"function\"==typeof f?f:function(left){return option.bitwise&&warning(\"Unexpected use of \\'{a}\\'.\",this,this.id),this.left=left,this.right=expression(p),this},x}function bitwiseassignop(s){return symbol(s,20).exps=!0,infix(s,function(left,that){return option.bitwise&&warning(\"Unexpected use of \\'{a}\\'.\",that,that.id),nonadjacent(prevtoken,token),nonadjacent(token,nexttoken),left?\".\"===left.id||\"[\"===left.id||left.identifier&&!left.reserved?(expression(19),that):(left===syntax[\"function\"]&&warning(\"Expected an identifier in an assignment, and instead saw a function invocation.\",token),that):(error(\"Bad assignment.\",that),void 0)},20)}function suffix(s){var x=symbol(s,150);return x.led=function(left){return option.plusplus?warning(\"Unexpected use of \\'{a}\\'.\",this,this.id):left.identifier&&!left.reserved||\".\"===left.id||\"[\"===left.id||warning(\"Bad operand.\",this),this.left=left,this},x}function optionalidentifier(fnparam){return nexttoken.identifier?(advance(),token.reserved&&!option.es5&&(fnparam&&\"undefined\"===token.value||warning(\"Expected an identifier and instead saw \\'{a}\\' (a reserved word).\",token,token.id)),token.value):void 0}function identifier(fnparam){var i=optionalidentifier(fnparam);return i?i:(\"function\"===token.id&&\"(\"===nexttoken.id?warning(\"Missing name in function declaration.\"):error(\"Expected an identifier and instead saw \\'{a}\\'.\",nexttoken,nexttoken.value),void 0)}function reachable(s){var t,i=0;if(\";\"===nexttoken.id&&!noreach)for(;;){if(t=peek(i),t.reach)return;if(\"(endline)\"!==t.id){if(\"function\"===t.id){if(!option.latedef)break;warning(\"Inner functions should be listed at the top of the outer function.\",t);break}warning(\"Unreachable \\'{a}\\' after \\'{b}\\'.\",t,t.value,s);break}i+=1}}function statement(noindent){var r,i=indent,s=scope,t=nexttoken;if(\";\"===t.id)return advance(\";\"),void 0;if(t.identifier&&!t.reserved&&\":\"===peek().id&&(advance(),advance(\":\"),scope=Object.create(s),addlabel(t.value,\"label\"),nexttoken.labelled||\"{\"===nexttoken.value||warning(\"Label \\'{a}\\' on {b} statement.\",nexttoken,t.value,nexttoken.value),jx.test(t.value+\":\")&&warning(\"Label \\'{a}\\' looks like a javascript url.\",t,t.value),nexttoken.label=t.value,t=nexttoken),\"{\"===t.id)return block(!0,!0),void 0;if(noindent||indentation(),r=expression(0,!0),!t.block){if(option.expr||r&&r.exps?option.nonew&&\"(\"===r.id&&\"new\"===r.left.id&&warning(\"Do not use \\'new\\' for side effects.\",t):warning(\"Expected an assignment or function call and instead saw an expression.\",token),\",\"===nexttoken.id)return comma();\";\"!==nexttoken.id?option.asi||option.lastsemic&&\"}\"===nexttoken.id&&nexttoken.line===token.line||warningAt(\"Missing semicolon.\",token.line,token.character):(adjacent(token,nexttoken),advance(\";\"),nonadjacent(token,nexttoken))}return indent=i,scope=s,r}function statements(startLine){for(var p,a=[];!nexttoken.reach&&\"(end)\"!==nexttoken.id;)\";\"===nexttoken.id?(p=peek(),p&&\"(\"===p.id||warning(\"Unnecessary semicolon.\"),advance(\";\")):a.push(statement(startLine===nexttoken.line));return a}function directives(){for(var i,p,pn;\"(string)\"===nexttoken.id;){if(p=peek(0),\"(endline)\"===p.id){i=1;do pn=peek(i),i+=1;while(\"(endline)\"===pn.id);if(\";\"!==pn.id){if(\"(string)\"!==pn.id&&\"(number)\"!==pn.id&&\"(regexp)\"!==pn.id&&pn.identifier!==!0&&\"}\"!==pn.id)break;warning(\"Missing semicolon.\",nexttoken)}else p=pn}else if(\"}\"===p.id)warning(\"Missing semicolon.\",p);else if(\";\"!==p.id)break;indentation(),advance(),directive[token.value]&&warning(\\'Unnecessary directive \"{a}\".\\',token,token.value),\"use strict\"===token.value&&(option[\"(explicitNewcap)\"]||(option.newcap=!0),option.undef=!0),directive[token.value]=!0,\";\"===p.id&&advance(\";\")}}function block(ordinary,stmt,isfunc){var a,m,t,line,d,b=inblock,old_indent=indent,s=scope;inblock=ordinary,ordinary&&option.funcscope||(scope=Object.create(scope)),nonadjacent(token,nexttoken),t=nexttoken;var metrics=funct[\"(metrics)\"];if(metrics.nestedBlockDepth+=1,metrics.verifyMaxNestedBlockDepthPerFunction(),\"{\"===nexttoken.id){if(advance(\"{\"),line=token.line,\"}\"!==nexttoken.id){for(indent+=option.indent;!ordinary&&nexttoken.from>indent;)indent+=option.indent;if(isfunc){m={};for(d in directive)is_own(directive,d)&&(m[d]=directive[d]);directives(),option.strict&&funct[\"(context)\"][\"(global)\"]&&(m[\"use strict\"]||directive[\"use strict\"]||warning(\\'Missing \"use strict\" statement.\\'))}a=statements(line),metrics.statementCount+=a.length,isfunc&&(directive=m),indent-=option.indent,line!==nexttoken.line&&indentation()}else line!==nexttoken.line&&indentation();advance(\"}\",t),indent=old_indent}else ordinary?((!stmt||option.curly)&&warning(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",nexttoken,\"{\",nexttoken.value),noreach=!0,indent+=option.indent,a=[statement(nexttoken.line===token.line)],indent-=option.indent,noreach=!1):error(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",nexttoken,\"{\",nexttoken.value);return funct[\"(verb)\"]=null,ordinary&&option.funcscope||(scope=s),inblock=b,!ordinary||!option.noempty||a&&0!==a.length||warning(\"Empty block.\"),metrics.nestedBlockDepth-=1,a}function countMember(m){membersOnly&&\"boolean\"!=typeof membersOnly[m]&&warning(\"Unexpected /*member \\'{a}\\'.\",token,m),\"number\"==typeof member[m]?member[m]+=1:member[m]=1}function note_implied(token){var name=token.value,line=token.line,a=implied[name];\"function\"==typeof a&&(a=!1),a?a[a.length-1]!==line&&a.push(line):(a=[line],implied[name]=a)}function property_name(){var id=optionalidentifier(!0);return id||(\"(string)\"===nexttoken.id?(id=nexttoken.value,advance()):\"(number)\"===nexttoken.id&&(id=\"\"+nexttoken.value,advance())),id}function functionparams(){var ident,next=nexttoken,params=[];if(advance(\"(\"),nospace(),\")\"===nexttoken.id)return advance(\")\"),void 0;for(;;){if(ident=identifier(!0),params.push(ident),addlabel(ident,\"unused\",token),\",\"!==nexttoken.id)return advance(\")\",next),nospace(prevtoken,token),params;comma()}}function doFunction(name,statement){var f,oldOption=option,oldScope=scope;return option=Object.create(option),scope=Object.create(scope),funct={\"(name)\":name||\\'\"\\'+anonname+\\'\"\\',\"(line)\":nexttoken.line,\"(character)\":nexttoken.character,\"(context)\":funct,\"(breakage)\":0,\"(loopage)\":0,\"(metrics)\":createMetrics(nexttoken),\"(scope)\":scope,\"(statement)\":statement,\"(tokens)\":{}},f=funct,token.funct=funct,functions.push(funct),name&&addlabel(name,\"function\"),funct[\"(params)\"]=functionparams(),funct[\"(metrics)\"].verifyMaxParametersPerFunction(funct[\"(params)\"]),block(!1,!1,!0),funct[\"(metrics)\"].verifyMaxStatementsPerFunction(),funct[\"(metrics)\"].verifyMaxComplexityPerFunction(),scope=oldScope,option=oldOption,funct[\"(last)\"]=token.line,funct[\"(lastcharacter)\"]=token.character,funct=funct[\"(context)\"],f}function createMetrics(functionStartToken){return{statementCount:0,nestedBlockDepth:-1,ComplexityCount:1,verifyMaxStatementsPerFunction:function(){if(option.maxstatements&&this.statementCount>option.maxstatements){var message=\"Too many statements per function (\"+this.statementCount+\").\";warning(message,functionStartToken)}},verifyMaxParametersPerFunction:function(params){if(params=params||[],option.maxparams&¶ms.length>option.maxparams){var message=\"Too many parameters per function (\"+params.length+\").\";warning(message,functionStartToken)}},verifyMaxNestedBlockDepthPerFunction:function(){if(option.maxdepth&&this.nestedBlockDepth>0&&this.nestedBlockDepth===option.maxdepth+1){var message=\"Blocks are nested too deeply (\"+this.nestedBlockDepth+\").\";warning(message)}},verifyMaxComplexityPerFunction:function(){var max=option.maxcomplexity,cc=this.ComplexityCount;if(max&&cc>max){var message=\"Cyclomatic complexity is too high per function (\"+cc+\").\";warning(message,functionStartToken)}}}}function increaseComplexityCount(){funct[\"(metrics)\"].ComplexityCount+=1}function jsonValue(){function jsonObject(){var o={},t=nexttoken;if(advance(\"{\"),\"}\"!==nexttoken.id)for(;;){if(\"(end)\"===nexttoken.id)error(\"Missing \\'}\\' to match \\'{\\' from line {a}.\",nexttoken,t.line);else{if(\"}\"===nexttoken.id){warning(\"Unexpected comma.\",token);break}\",\"===nexttoken.id?error(\"Unexpected comma.\",nexttoken):\"(string)\"!==nexttoken.id&&warning(\"Expected a string and instead saw {a}.\",nexttoken,nexttoken.value)}if(o[nexttoken.value]===!0?warning(\"Duplicate key \\'{a}\\'.\",nexttoken,nexttoken.value):\"__proto__\"===nexttoken.value&&!option.proto||\"__iterator__\"===nexttoken.value&&!option.iterator?warning(\"The \\'{a}\\' key may produce unexpected results.\",nexttoken,nexttoken.value):o[nexttoken.value]=!0,advance(),advance(\":\"),jsonValue(),\",\"!==nexttoken.id)break;advance(\",\")}advance(\"}\")}function jsonArray(){var t=nexttoken;if(advance(\"[\"),\"]\"!==nexttoken.id)for(;;){if(\"(end)\"===nexttoken.id)error(\"Missing \\']\\' to match \\'[\\' from line {a}.\",nexttoken,t.line);else{if(\"]\"===nexttoken.id){warning(\"Unexpected comma.\",token);break}\",\"===nexttoken.id&&error(\"Unexpected comma.\",nexttoken)}if(jsonValue(),\",\"!==nexttoken.id)break;advance(\",\")}advance(\"]\")}switch(nexttoken.id){case\"{\":jsonObject();break;case\"[\":jsonArray();break;case\"true\":case\"false\":case\"null\":case\"(number)\":case\"(string)\":advance();break;case\"-\":advance(\"-\"),token.character!==nexttoken.from&&warning(\"Unexpected space after \\'-\\'.\",token),adjacent(token,nexttoken),advance(\"(number)\");break;default:error(\"Expected a JSON value.\",nexttoken)}}var anonname,declared,funct,functions,global,implied,inblock,indent,jsonmode,lines,lookahead,member,membersOnly,nexttoken,noreach,option,predefined,prereg,prevtoken,quotmark,scope,stack,directive,tab,token,unuseds,urls,useESNextSyntax,warnings,ax,cx,tx,nx,nxg,lx,ix,jx,ft,bang={\"\u003C\":!0,\"\u003C=\":!0,\"==\":!0,\"===\":!0,\"!==\":!0,\"!=\":!0,\">\":!0,\">=\":!0,\"+\":!0,\"-\":!0,\"*\":!0,\"/\":!0,\"%\":!0},boolOptions={asi:!0,bitwise:!0,boss:!0,browser:!0,camelcase:!0,couch:!0,curly:!0,debug:!0,devel:!0,dojo:!0,eqeqeq:!0,eqnull:!0,es5:!0,esnext:!0,evil:!0,expr:!0,forin:!0,funcscope:!0,globalstrict:!0,immed:!0,iterator:!0,jquery:!0,lastsemic:!0,latedef:!0,laxbreak:!0,laxcomma:!0,loopfunc:!0,mootools:!0,multistr:!0,newcap:!0,noarg:!0,node:!0,noempty:!0,nonew:!0,nonstandard:!0,nomen:!0,onevar:!0,onecase:!0,passfail:!0,plusplus:!0,proto:!0,prototypejs:!0,regexdash:!0,regexp:!0,rhino:!0,undef:!0,unused:!0,scripturl:!0,shadow:!0,smarttabs:!0,strict:!0,sub:!0,supernew:!0,trailing:!0,validthis:!0,withstmt:!0,white:!0,worker:!0,wsh:!0,yui:!0},valOptions={maxlen:!1,indent:!1,maxerr:!1,predef:!1,quotmark:!1,scope:!1,maxstatements:!1,maxdepth:!1,maxparams:!1,maxcomplexity:!1},invertedOptions={bitwise:!0,forin:!0,newcap:!0,nomen:!0,plusplus:!0,regexp:!0,undef:!0,white:!0,eqeqeq:!0,onevar:!0},renamedOptions={eqeq:\"eqeqeq\",vars:\"onevar\",windows:\"wsh\"},browser={ArrayBuffer:!1,ArrayBufferView:!1,Audio:!1,Blob:!1,addEventListener:!1,applicationCache:!1,atob:!1,blur:!1,btoa:!1,clearInterval:!1,clearTimeout:!1,close:!1,closed:!1,DataView:!1,DOMParser:!1,defaultStatus:!1,document:!1,event:!1,FileReader:!1,Float32Array:!1,Float64Array:!1,FormData:!1,focus:!1,frames:!1,getComputedStyle:!1,HTMLElement:!1,HTMLAnchorElement:!1,HTMLBaseElement:!1,HTMLBlockquoteElement:!1,HTMLBodyElement:!1,HTMLBRElement:!1,HTMLButtonElement:!1,HTMLCanvasElement:!1,HTMLDirectoryElement:!1,HTMLDivElement:!1,HTMLDListElement:!1,HTMLFieldSetElement:!1,HTMLFontElement:!1,HTMLFormElement:!1,HTMLFrameElement:!1,HTMLFrameSetElement:!1,HTMLHeadElement:!1,HTMLHeadingElement:!1,HTMLHRElement:!1,HTMLHtmlElement:!1,HTMLIFrameElement:!1,HTMLImageElement:!1,HTMLInputElement:!1,HTMLIsIndexElement:!1,HTMLLabelElement:!1,HTMLLayerElement:!1,HTMLLegendElement:!1,HTMLLIElement:!1,HTMLLinkElement:!1,HTMLMapElement:!1,HTMLMenuElement:!1,HTMLMetaElement:!1,HTMLModElement:!1,HTMLObjectElement:!1,HTMLOListElement:!1,HTMLOptGroupElement:!1,HTMLOptionElement:!1,HTMLParagraphElement:!1,HTMLParamElement:!1,HTMLPreElement:!1,HTMLQuoteElement:!1,HTMLScriptElement:!1,HTMLSelectElement:!1,HTMLStyleElement:!1,HTMLTableCaptionElement:!1,HTMLTableCellElement:!1,HTMLTableColElement:!1,HTMLTableElement:!1,HTMLTableRowElement:!1,HTMLTableSectionElement:!1,HTMLTextAreaElement:!1,HTMLTitleElement:!1,HTMLUListElement:!1,HTMLVideoElement:!1,history:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Image:!1,length:!1,localStorage:!1,location:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,moveBy:!1,moveTo:!1,MutationObserver:!1,name:!1,Node:!1,NodeFilter:!1,navigator:!1,onbeforeunload:!0,onblur:!0,onerror:!0,onfocus:!0,onload:!0,onresize:!0,onunload:!0,open:!1,openDatabase:!1,opener:!1,Option:!1,parent:!1,print:!1,removeEventListener:!1,resizeBy:!1,resizeTo:!1,screen:!1,scroll:!1,scrollBy:!1,scrollTo:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,SharedWorker:!1,status:!1,top:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,WebSocket:!1,window:!1,Worker:!1,XMLHttpRequest:!1,XMLSerializer:!1,XPathEvaluator:!1,XPathException:!1,XPathExpression:!1,XPathNamespace:!1,XPathNSResolver:!1,XPathResult:!1},couch={require:!1,respond:!1,getRow:!1,emit:!1,send:!1,start:!1,sum:!1,log:!1,exports:!1,module:!1,provides:!1},devel={alert:!1,confirm:!1,console:!1,Debug:!1,opera:!1,prompt:!1},dojo={dojo:!1,dijit:!1,dojox:!1,define:!1,require:!1},functionicity=[\"closure\",\"exception\",\"global\",\"label\",\"outer\",\"unused\",\"var\"],jquery={$:!1,jQuery:!1},mootools={$:!1,$$:!1,Asset:!1,Browser:!1,Chain:!1,Class:!1,Color:!1,Cookie:!1,Core:!1,Document:!1,DomReady:!1,DOMEvent:!1,DOMReady:!1,Drag:!1,Element:!1,Elements:!1,Event:!1,Events:!1,Fx:!1,Group:!1,Hash:!1,HtmlTable:!1,Iframe:!1,IframeShim:!1,InputValidator:!1,instanceOf:!1,Keyboard:!1,Locale:!1,Mask:!1,MooTools:!1,Native:!1,Options:!1,OverText:!1,Request:!1,Scroller:!1,Slick:!1,Slider:!1,Sortables:!1,Spinner:!1,Swiff:!1,Tips:!1,Type:!1,typeOf:!1,URI:!1,Window:!1},node={__filename:!1,__dirname:!1,Buffer:!1,console:!1,exports:!0,GLOBAL:!1,global:!1,module:!1,process:!1,acequire:!1,setTimeout:!1,clearTimeout:!1,setInterval:!1,clearInterval:!1},prototypejs={$:!1,$$:!1,$A:!1,$F:!1,$H:!1,$R:!1,$break:!1,$continue:!1,$w:!1,Abstract:!1,Ajax:!1,Class:!1,Enumerable:!1,Element:!1,Event:!1,Field:!1,Form:!1,Hash:!1,Insertion:!1,ObjectRange:!1,PeriodicalExecuter:!1,Position:!1,Prototype:!1,Selector:!1,Template:!1,Toggle:!1,Try:!1,Autocompleter:!1,Builder:!1,Control:!1,Draggable:!1,Draggables:!1,Droppables:!1,Effect:!1,Sortable:!1,SortableObserver:!1,Sound:!1,Scriptaculous:!1},rhino={defineClass:!1,deserialize:!1,gc:!1,help:!1,importPackage:!1,java:!1,load:!1,loadClass:!1,print:!1,quit:!1,readFile:!1,readUrl:!1,runCommand:!1,seal:!1,serialize:!1,spawn:!1,sync:!1,toint32:!1,version:!1},standard={Array:!1,Boolean:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,eval:!1,EvalError:!1,Function:!1,hasOwnProperty:!1,isFinite:!1,isNaN:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseInt:!1,parseFloat:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,Set:!1,String:!1,SyntaxError:!1,TypeError:!1,URIError:!1,WeakMap:!1},nonstandard={escape:!1,unescape:!1},syntax={},worker={importScripts:!0,postMessage:!0,self:!0},wsh={ActiveXObject:!0,Enumerator:!0,GetObject:!0,ScriptEngine:!0,ScriptEngineBuildVersion:!0,ScriptEngineMajorVersion:!0,ScriptEngineMinorVersion:!0,VBArray:!0,WSH:!0,WScript:!0,XDomainRequest:!0},yui={YUI:!1,Y:!1,YUI_config:!1};\\n(function(){ax=/@cc|\u003C\\\\/?|script|\\\\]\\\\s*\\\\]|\u003C\\\\s*!|</i,cx=/[\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f\\\\u00ad\\\\u0600-\\\\u0604\\\\u070f\\\\u17b4\\\\u17b5\\\\u200c-\\\\u200f\\\\u2028-\\\\u202f\\\\u2060-\\\\u206f\\\\ufeff\\\\ufff0-\\\\uffff]/,tx=/^\\\\s*([(){}\\\\[.,:;\\'\"~\\\\?\\\\]#@]|==?=?|\\\\/=(?!(\\\\S*\\\\/[gim]?))|\\\\/(\\\\*(jshint|jslint|members?|global)?|\\\\/)?|\\\\*[\\\\/=]?|\\\\+(?:=|\\\\++)?|-(?:=|-+)?|%=?|&[&=]?|\\\\|[|=]?|>>?>?=?|\u003C([\\\\/=!]|\\\\!(\\\\[|--)?|\u003C=?)?|\\\\^=?|\\\\!=?=?|[a-zA-Z_$][a-zA-Z0-9_$]*|[0-9]+([xX][0-9a-fA-F]+|\\\\.[0-9]*)?([eE][+\\\\-]?[0-9]+)?)/,nx=/[\\\\u0000-\\\\u001f&\u003C\"\\\\/\\\\\\\\\\\\u007f-\\\\u009f\\\\u00ad\\\\u0600-\\\\u0604\\\\u070f\\\\u17b4\\\\u17b5\\\\u200c-\\\\u200f\\\\u2028-\\\\u202f\\\\u2060-\\\\u206f\\\\ufeff\\\\ufff0-\\\\uffff]/,nxg=/[\\\\u0000-\\\\u001f&\u003C\"\\\\/\\\\\\\\\\\\u007f-\\\\u009f\\\\u00ad\\\\u0600-\\\\u0604\\\\u070f\\\\u17b4\\\\u17b5\\\\u200c-\\\\u200f\\\\u2028-\\\\u202f\\\\u2060-\\\\u206f\\\\ufeff\\\\ufff0-\\\\uffff]/g,lx=/\\\\*\\\\//,ix=/^([a-zA-Z_$][a-zA-Z0-9_$]*)$/,jx=/^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\\\\s*:/i,ft=/^\\\\s*\\\\/\\\\*\\\\s*falls\\\\sthrough\\\\s*\\\\*\\\\/\\\\s*$/})(),\"function\"!=typeof Array.isArray&&(Array.isArray=function(o){return\"[object Array]\"===Object.prototype.toString.apply(o)}),Array.prototype.forEach||(Array.prototype.forEach=function(fn,scope){for(var len=this.length,i=0;len>i;i++)fn.call(scope||this,this[i],i,this)}),Array.prototype.indexOf||(Array.prototype.indexOf=function(searchElement){if(null===this||void 0===this)throw new TypeError;var t=Object(this),len=t.length>>>0;if(0===len)return-1;var n=0;if(arguments.length>0&&(n=Number(arguments[1]),n!=n?n=0:0!==n&&1/0!=n&&n!=-1/0&&(n=(n>0||-1)*Math.floor(Math.abs(n)))),n>=len)return-1;for(var k=n>=0?n:Math.max(len-Math.abs(n),0);len>k;k++)if(k in t&&t[k]===searchElement)return k;return-1}),\"function\"!=typeof Object.create&&(Object.create=function(o){return F.prototype=o,new F}),\"function\"!=typeof Object.keys&&(Object.keys=function(o){var k,a=[];for(k in o)is_own(o,k)&&a.push(k);return a});var lex=function lex(){function nextLine(){var at,match,tw;return line>=lines.length?!1:(character=1,s=lines[line],line+=1,option.smarttabs?(match=s.match(/(\\\\/\\\\/)? \\\\t/),at=match&&!match[1]?0:-1):at=s.search(/ \\\\t|\\\\t [^\\\\*]/),at>=0&&warningAt(\"Mixed spaces and tabs.\",line,at+1),s=s.replace(/\\\\t/g,tab),at=s.search(cx),at>=0&&warningAt(\"Unsafe character.\",line,at),option.maxlen&&option.maxlen\u003Cs.length&&warningAt(\"Line too long.\",line,s.length),tw=option.trailing&&s.match(/^(.*?)\\\\s+$/),tw&&!/^\\\\s+$/.test(s)&&warningAt(\"Trailing whitespace.\",line,tw[1].length+1),!0)}function it(type,value){function checkName(name){if(!option.proto&&\"__proto__\"===name)return warningAt(\"The \\'{a}\\' property is deprecated.\",line,from,name),void 0;if(!option.iterator&&\"__iterator__\"===name)return warningAt(\"\\'{a}\\' is only available in JavaScript 1.7.\",line,from,name),void 0;var hasDangling=/^(_+.*|.*_+)$/.test(name);if(option.nomen&&hasDangling&&\"_\"!==name){if(option.node&&\".\"!==token.id&&/^(__dirname|__filename)$/.test(name))return;return warningAt(\"Unexpected {a} in \\'{b}\\'.\",line,from,\"dangling \\'_\\'\",name),void 0}option.camelcase&&name.replace(/^_+/,\"\").indexOf(\"_\")>-1&&!name.match(/^[A-Z0-9_]*$/)&&warningAt(\"Identifier \\'{a}\\' is not in camel case.\",line,from,value)}var i,t;return t=\"(color)\"===type||\"(range)\"===type?{type:type}:\"(punctuator)\"===type||\"(identifier)\"===type&&is_own(syntax,value)?syntax[value]||syntax[\"(error)\"]:syntax[type],t=Object.create(t),(\"(string)\"===type||\"(range)\"===type)&&!option.scripturl&&jx.test(value)&&warningAt(\"Script URL.\",line,from),\"(identifier)\"===type&&(t.identifier=!0,checkName(value)),t.value=value,t.line=line,t.character=character,t.from=from,i=t.id,\"(endline)\"!==i&&(prereg=i&&(\"(,=:[!&|?{};\".indexOf(i.charAt(i.length-1))>=0||\"return\"===i||\"case\"===i)),t}var character,from,line,s;return{init:function(source){lines=\"string\"==typeof source?source.replace(/\\\\r\\\\n/g,\"\\\\n\").replace(/\\\\r/g,\"\\\\n\").split(\"\\\\n\"):source,lines[0]&&\"#!\"===lines[0].substr(0,2)&&(lines[0]=\"\"),line=0,nextLine(),from=1},range:function(begin,end){var c,value=\"\";for(from=character,s.charAt(0)!==begin&&errorAt(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",line,character,begin,s.charAt(0));;){switch(s=s.slice(1),character+=1,c=s.charAt(0)){case\"\":errorAt(\"Missing \\'{a}\\'.\",line,character,c);break;case end:return s=s.slice(1),character+=1,it(\"(range)\",value);case\"\\\\\\\\\":warningAt(\"Unexpected \\'{a}\\'.\",line,character,c)}value+=c}},token:function(){function match(x){var r1,r=x.exec(s);return r?(l=r[0].length,r1=r[1],c=r1.charAt(0),s=s.substr(l),from=character+l-r1.length,character+=l,r1):void 0}function string(x){function esc(n){var i=parseInt(s.substr(j+1,n),16);j+=n,i>=32&&126>=i&&34!==i&&92!==i&&39!==i&&warningAt(\"Unnecessary escapement.\",line,character),character+=n,c=String.fromCharCode(i)}var c,j,r=\"\",allowNewLine=!1;jsonmode&&\\'\"\\'!==x&&warningAt(\"Strings must use doublequote.\",line,character),option.quotmark&&(\"single\"===option.quotmark&&\"\\'\"!==x?warningAt(\"Strings must use singlequote.\",line,character):\"double\"===option.quotmark&&\\'\"\\'!==x?warningAt(\"Strings must use doublequote.\",line,character):option.quotmark===!0&&(quotmark=quotmark||x,quotmark!==x&&warningAt(\"Mixed double and single quotes.\",line,character))),j=0;unclosedString:for(;;){for(;j>=s.length;){j=0;var cl=line,cf=from;if(!nextLine()){errorAt(\"Unclosed string.\",cl,cf);break unclosedString}allowNewLine?allowNewLine=!1:warningAt(\"Unclosed string.\",cl,cf)}if(c=s.charAt(j),c===x)return character+=1,s=s.substr(j+1),it(\"(string)\",r,x);if(\" \">c){if(\"\\\\n\"===c||\"\\\\r\"===c)break;warningAt(\"Control character in string: {a}.\",line,character+j,s.slice(0,j))}else if(\"\\\\\\\\\"===c)switch(j+=1,character+=1,c=s.charAt(j),n=s.charAt(j+1),c){case\"\\\\\\\\\":case\\'\"\\':case\"/\":break;case\"\\'\":jsonmode&&warningAt(\"Avoid \\\\\\\\\\'.\",line,character);break;case\"b\":c=\"\\\\b\";break;case\"f\":c=\"\\\\f\";break;case\"n\":c=\"\\\\n\";break;case\"r\":c=\"\\\\r\";break;case\"t\":c=\"\t\";break;case\"0\":c=\"\\\\0\",n>=0&&7>=n&&directive[\"use strict\"]&&warningAt(\"Octal literals are not allowed in strict mode.\",line,character);break;case\"u\":esc(4);break;case\"v\":jsonmode&&warningAt(\"Avoid \\\\\\\\v.\",line,character),c=\"\u000b\";break;case\"x\":jsonmode&&warningAt(\"Avoid \\\\\\\\x-.\",line,character),esc(2);break;case\"\":if(allowNewLine=!0,option.multistr){jsonmode&&warningAt(\"Avoid EOL escapement.\",line,character),c=\"\",character-=1;break}warningAt(\"Bad escapement of EOL. Use option multistr if needed.\",line,character);break;case\"!\":if(\"\u003C\"===s.charAt(j-2))break;default:warningAt(\"Bad escapement.\",line,character)}r+=c,character+=1,j+=1}}for(var b,c,captures,d,depth,high,i,l,low,q,t,isLiteral,isInRange,n;;){if(!s)return it(nextLine()?\"(endline)\":\"(end)\",\"\");if(t=match(tx)){if(isAlpha(c)||\"_\"===c||\"$\"===c)return it(\"(identifier)\",t);if(isDigit(c))return isFinite(Number(t))||warningAt(\"Bad number \\'{a}\\'.\",line,character,t),isAlpha(s.substr(0,1))&&warningAt(\"Missing space after \\'{a}\\'.\",line,character,t),\"0\"===c&&(d=t.substr(1,1),isDigit(d)?\".\"!==token.id&&warningAt(\"Don\\'t use extra leading zeros \\'{a}\\'.\",line,character,t):!jsonmode||\"x\"!==d&&\"X\"!==d||warningAt(\"Avoid 0x-. \\'{a}\\'.\",line,character,t)),\".\"===t.substr(t.length-1)&&warningAt(\"A trailing decimal point can be confused with a dot \\'{a}\\'.\",line,character,t),it(\"(number)\",t);switch(t){case\\'\"\\':case\"\\'\":return string(t);case\"//\":s=\"\",token.comment=!0;break;case\"/*\":for(;i=s.search(lx),!(i>=0);)nextLine()||errorAt(\"Unclosed comment.\",line,character);s=s.substr(i+2),token.comment=!0;break;case\"/*members\":case\"/*member\":case\"/*jshint\":case\"/*jslint\":case\"/*global\":case\"*/\":return{value:t,type:\"special\",line:line,character:character,from:from};case\"\":break;case\"/\":if(\"=\"===s.charAt(0)&&errorAt(\"A regular expression literal can be confused with \\'/=\\'.\",line,from),prereg){for(depth=0,captures=0,l=0;;){switch(b=!0,c=s.charAt(l),l+=1,c){case\"\":return errorAt(\"Unclosed regular expression.\",line,from),quit(\"Stopping.\",line,from);case\"/\":for(depth>0&&warningAt(\"{a} unterminated regular expression group(s).\",line,from+l,depth),c=s.substr(0,l-1),q={g:!0,i:!0,m:!0};q[s.charAt(l)]===!0;)q[s.charAt(l)]=!1,l+=1;return character+=l,s=s.substr(l),q=s.charAt(0),(\"/\"===q||\"*\"===q)&&errorAt(\"Confusing regular expression.\",line,from),it(\"(regexp)\",c);case\"\\\\\\\\\":c=s.charAt(l),\" \">c?warningAt(\"Unexpected control character in regular expression.\",line,from+l):\"\u003C\"===c&&warningAt(\"Unexpected escaped character \\'{a}\\' in regular expression.\",line,from+l,c),l+=1;break;case\"(\":if(depth+=1,b=!1,\"?\"===s.charAt(l))switch(l+=1,s.charAt(l)){case\":\":case\"=\":case\"!\":l+=1;break;default:warningAt(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",line,from+l,\":\",s.charAt(l))}else captures+=1;break;case\"|\":b=!1;break;case\")\":0===depth?warningAt(\"Unescaped \\'{a}\\'.\",line,from+l,\")\"):depth-=1;break;case\" \":for(q=1;\" \"===s.charAt(l);)l+=1,q+=1;q>1&&warningAt(\"Spaces are hard to count. Use {{a}}.\",line,from+l,q);break;case\"[\":c=s.charAt(l),\"^\"===c&&(l+=1,\"]\"===s.charAt(l)&&errorAt(\"Unescaped \\'{a}\\'.\",line,from+l,\"^\")),\"]\"===c&&warningAt(\"Empty class.\",line,from+l-1),isLiteral=!1,isInRange=!1;klass:do switch(c=s.charAt(l),l+=1,c){case\"[\":case\"^\":warningAt(\"Unescaped \\'{a}\\'.\",line,from+l,c),isInRange?isInRange=!1:isLiteral=!0;break;case\"-\":isLiteral&&!isInRange?(isLiteral=!1,isInRange=!0):isInRange?isInRange=!1:\"]\"===s.charAt(l)?isInRange=!0:(option.regexdash!==(2===l||3===l&&\"^\"===s.charAt(1))&&warningAt(\"Unescaped \\'{a}\\'.\",line,from+l-1,\"-\"),isLiteral=!0);break;case\"]\":isInRange&&!option.regexdash&&warningAt(\"Unescaped \\'{a}\\'.\",line,from+l-1,\"-\");break klass;case\"\\\\\\\\\":c=s.charAt(l),\" \">c?warningAt(\"Unexpected control character in regular expression.\",line,from+l):\"\u003C\"===c&&warningAt(\"Unexpected escaped character \\'{a}\\' in regular expression.\",line,from+l,c),l+=1,/[wsd]/i.test(c)?(isInRange&&(warningAt(\"Unescaped \\'{a}\\'.\",line,from+l,\"-\"),isInRange=!1),isLiteral=!1):isInRange?isInRange=!1:isLiteral=!0;break;case\"/\":warningAt(\"Unescaped \\'{a}\\'.\",line,from+l-1,\"/\"),isInRange?isInRange=!1:isLiteral=!0;break;case\"\u003C\":isInRange?isInRange=!1:isLiteral=!0;break;default:isInRange?isInRange=!1:isLiteral=!0}while(c);break;case\".\":option.regexp&&warningAt(\"Insecure \\'{a}\\'.\",line,from+l,c);break;case\"]\":case\"?\":case\"{\":case\"}\":case\"+\":case\"*\":warningAt(\"Unescaped \\'{a}\\'.\",line,from+l,c)}if(b)switch(s.charAt(l)){case\"?\":case\"+\":case\"*\":l+=1,\"?\"===s.charAt(l)&&(l+=1);break;case\"{\":if(l+=1,c=s.charAt(l),\"0\">c||c>\"9\"){warningAt(\"Expected a number and instead saw \\'{a}\\'.\",line,from+l,c);break}for(l+=1,low=+c;c=s.charAt(l),!(\"0\">c||c>\"9\");)l+=1,low=+c+10*low;if(high=low,\",\"===c&&(l+=1,high=1/0,c=s.charAt(l),c>=\"0\"&&\"9\">=c))for(l+=1,high=+c;c=s.charAt(l),!(\"0\">c||c>\"9\");)l+=1,high=+c+10*high;\"}\"!==s.charAt(l)?warningAt(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",line,from+l,\"}\",c):l+=1,\"?\"===s.charAt(l)&&(l+=1),low>high&&warningAt(\"\\'{a}\\' should not be greater than \\'{b}\\'.\",line,from+l,low,high)}}return c=s.substr(0,l-1),character+=l,s=s.substr(l),it(\"(regexp)\",c)}return it(\"(punctuator)\",t);case\"#\":return it(\"(punctuator)\",t);default:return it(\"(punctuator)\",t)}}else{for(t=\"\",c=\"\";s&&\"!\">s;)s=s.substr(1);s&&(errorAt(\"Unexpected \\'{a}\\'.\",line,character,s.substr(0,1)),s=\"\")}}}}}();type(\"(number)\",function(){return this}),type(\"(string)\",function(){return this}),syntax[\"(identifier)\"]={type:\"(identifier)\",lbp:0,identifier:!0,nud:function(){var f,v=this.value,s=scope[v];if(\"function\"==typeof s?s=void 0:\"boolean\"==typeof s&&(f=funct,funct=functions[0],addlabel(v,\"var\"),s=funct,funct=f),funct===s)switch(funct[v]){case\"unused\":funct[v]=\"var\";break;case\"unction\":funct[v]=\"function\",this[\"function\"]=!0;break;case\"function\":this[\"function\"]=!0;break;case\"label\":warning(\"\\'{a}\\' is a statement label.\",token,v)}else if(funct[\"(global)\"])option.undef&&\"boolean\"!=typeof predefined[v]&&(\"typeof\"!==anonname&&\"delete\"!==anonname||nexttoken&&(\".\"===nexttoken.value||\"[\"===nexttoken.value))&&isundef(funct,\"\\'{a}\\' is not defined.\",token,v),note_implied(token);else switch(funct[v]){case\"closure\":case\"function\":case\"var\":case\"unused\":warning(\"\\'{a}\\' used out of scope.\",token,v);break;case\"label\":warning(\"\\'{a}\\' is a statement label.\",token,v);break;case\"outer\":case\"global\":break;default:if(s===!0)funct[v]=!0;else if(null===s)warning(\"\\'{a}\\' is not allowed.\",token,v),note_implied(token);else if(\"object\"!=typeof s)option.undef&&(\"typeof\"!==anonname&&\"delete\"!==anonname||nexttoken&&(\".\"===nexttoken.value||\"[\"===nexttoken.value))&&isundef(funct,\"\\'{a}\\' is not defined.\",token,v),funct[v]=!0,note_implied(token);else switch(s[v]){case\"function\":case\"unction\":this[\"function\"]=!0,s[v]=\"closure\",funct[v]=s[\"(global)\"]?\"global\":\"outer\";break;case\"var\":case\"unused\":s[v]=\"closure\",funct[v]=s[\"(global)\"]?\"global\":\"outer\";break;case\"closure\":funct[v]=s[\"(global)\"]?\"global\":\"outer\";break;case\"label\":warning(\"\\'{a}\\' is a statement label.\",token,v)}}return this},led:function(){error(\"Expected an operator and instead saw \\'{a}\\'.\",nexttoken,nexttoken.value)}},type(\"(regexp)\",function(){return this}),delim(\"(endline)\"),delim(\"(begin)\"),delim(\"(end)\").reach=!0,delim(\"\u003C/\").reach=!0,delim(\"\u003C!\"),delim(\"\u003C!--\"),delim(\"-->\"),delim(\"(error)\").reach=!0,delim(\"}\").reach=!0,delim(\")\"),delim(\"]\"),delim(\\'\"\\').reach=!0,delim(\"\\'\").reach=!0,delim(\";\"),delim(\":\").reach=!0,delim(\",\"),delim(\"#\"),delim(\"@\"),reserve(\"else\"),reserve(\"case\").reach=!0,reserve(\"catch\"),reserve(\"default\").reach=!0,reserve(\"finally\"),reservevar(\"arguments\",function(x){directive[\"use strict\"]&&funct[\"(global)\"]&&warning(\"Strict violation.\",x)}),reservevar(\"eval\"),reservevar(\"false\"),reservevar(\"Infinity\"),reservevar(\"null\"),reservevar(\"this\",function(x){directive[\"use strict\"]&&!option.validthis&&(funct[\"(statement)\"]&&funct[\"(name)\"].charAt(0)>\"Z\"||funct[\"(global)\"])&&warning(\"Possible strict violation.\",x)}),reservevar(\"true\"),reservevar(\"undefined\"),assignop(\"=\",\"assign\",20),assignop(\"+=\",\"assignadd\",20),assignop(\"-=\",\"assignsub\",20),assignop(\"*=\",\"assignmult\",20),assignop(\"/=\",\"assigndiv\",20).nud=function(){error(\"A regular expression literal can be confused with \\'/=\\'.\")},assignop(\"%=\",\"assignmod\",20),bitwiseassignop(\"&=\",\"assignbitand\",20),bitwiseassignop(\"|=\",\"assignbitor\",20),bitwiseassignop(\"^=\",\"assignbitxor\",20),bitwiseassignop(\"\u003C\u003C=\",\"assignshiftleft\",20),bitwiseassignop(\">>=\",\"assignshiftright\",20),bitwiseassignop(\">>>=\",\"assignshiftrightunsigned\",20),infix(\"?\",function(left,that){return that.left=left,that.right=expression(10),advance(\":\"),that[\"else\"]=expression(10),that},30),infix(\"||\",\"or\",40),infix(\"&&\",\"and\",50),bitwise(\"|\",\"bitor\",70),bitwise(\"^\",\"bitxor\",80),bitwise(\"&\",\"bitand\",90),relation(\"==\",function(left,right){var eqnull=option.eqnull&&(\"null\"===left.value||\"null\"===right.value);return!eqnull&&option.eqeqeq?warning(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",this,\"===\",\"==\"):isPoorRelation(left)?warning(\"Use \\'{a}\\' to compare with \\'{b}\\'.\",this,\"===\",left.value):isPoorRelation(right)&&warning(\"Use \\'{a}\\' to compare with \\'{b}\\'.\",this,\"===\",right.value),this}),relation(\"===\"),relation(\"!=\",function(left,right){var eqnull=option.eqnull&&(\"null\"===left.value||\"null\"===right.value);return!eqnull&&option.eqeqeq?warning(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",this,\"!==\",\"!=\"):isPoorRelation(left)?warning(\"Use \\'{a}\\' to compare with \\'{b}\\'.\",this,\"!==\",left.value):isPoorRelation(right)&&warning(\"Use \\'{a}\\' to compare with \\'{b}\\'.\",this,\"!==\",right.value),this}),relation(\"!==\"),relation(\"\u003C\"),relation(\">\"),relation(\"\u003C=\"),relation(\">=\"),bitwise(\"\u003C\u003C\",\"shiftleft\",120),bitwise(\">>\",\"shiftright\",120),bitwise(\">>>\",\"shiftrightunsigned\",120),infix(\"in\",\"in\",120),infix(\"instanceof\",\"instanceof\",120),infix(\"+\",function(left,that){var right=expression(130);return left&&right&&\"(string)\"===left.id&&\"(string)\"===right.id?(left.value+=right.value,left.character=right.character,!option.scripturl&&jx.test(left.value)&&warning(\"JavaScript URL.\",left),left):(that.left=left,that.right=right,that)},130),prefix(\"+\",\"num\"),prefix(\"+++\",function(){return warning(\"Confusing pluses.\"),this.right=expression(150),this.arity=\"unary\",this}),infix(\"+++\",function(left){return warning(\"Confusing pluses.\"),this.left=left,this.right=expression(130),this},130),infix(\"-\",\"sub\",130),prefix(\"-\",\"neg\"),prefix(\"---\",function(){return warning(\"Confusing minuses.\"),this.right=expression(150),this.arity=\"unary\",this}),infix(\"---\",function(left){return warning(\"Confusing minuses.\"),this.left=left,this.right=expression(130),this},130),infix(\"*\",\"mult\",140),infix(\"/\",\"div\",140),infix(\"%\",\"mod\",140),suffix(\"++\",\"postinc\"),prefix(\"++\",\"preinc\"),syntax[\"++\"].exps=!0,suffix(\"--\",\"postdec\"),prefix(\"--\",\"predec\"),syntax[\"--\"].exps=!0,prefix(\"delete\",function(){var p=expression(0);return(!p||\".\"!==p.id&&\"[\"!==p.id)&&warning(\"Variables should not be deleted.\"),this.first=p,this}).exps=!0,prefix(\"~\",function(){return option.bitwise&&warning(\"Unexpected \\'{a}\\'.\",this,\"~\"),expression(150),this}),prefix(\"!\",function(){return this.right=expression(150),this.arity=\"unary\",bang[this.right.id]===!0&&warning(\"Confusing use of \\'{a}\\'.\",this,\"!\"),this}),prefix(\"typeof\",\"typeof\"),prefix(\"new\",function(){var i,c=expression(155);if(c&&\"function\"!==c.id)if(c.identifier)switch(c[\"new\"]=!0,c.value){case\"Number\":case\"String\":case\"Boolean\":case\"Math\":case\"JSON\":warning(\"Do not use {a} as a constructor.\",prevtoken,c.value);break;case\"Function\":option.evil||warning(\"The Function constructor is eval.\");break;case\"Date\":case\"RegExp\":break;default:\"function\"!==c.id&&(i=c.value.substr(0,1),option.newcap&&(\"A\">i||i>\"Z\")&&!is_own(global,c.value)&&warning(\"A constructor name should start with an uppercase letter.\",token))}else\".\"!==c.id&&\"[\"!==c.id&&\"(\"!==c.id&&warning(\"Bad constructor.\",token);else option.supernew||warning(\"Weird construction. Delete \\'new\\'.\",this);return adjacent(token,nexttoken),\"(\"===nexttoken.id||option.supernew||warning(\"Missing \\'()\\' invoking a constructor.\",token,token.value),this.first=c,this}),syntax[\"new\"].exps=!0,prefix(\"void\").exps=!0,infix(\".\",function(left,that){adjacent(prevtoken,token),nobreak();var m=identifier();return\"string\"==typeof m&&countMember(m),that.left=left,that.right=m,!left||\"arguments\"!==left.value||\"callee\"!==m&&\"caller\"!==m?option.evil||!left||\"document\"!==left.value||\"write\"!==m&&\"writeln\"!==m||warning(\"document.write can be a form of eval.\",left):option.noarg?warning(\"Avoid arguments.{a}.\",left,m):directive[\"use strict\"]&&error(\"Strict violation.\"),option.evil||\"eval\"!==m&&\"execScript\"!==m||warning(\"eval is evil.\"),that},160,!0),infix(\"(\",function(left,that){\"}\"!==prevtoken.id&&\")\"!==prevtoken.id&&nobreak(prevtoken,token),nospace(),option.immed&&!left.immed&&\"function\"===left.id&&warning(\"Wrap an immediate function invocation in parentheses to assist the reader in understanding that the expression is the result of a function, and not the function itself.\");var n=0,p=[];if(left&&\"(identifier)\"===left.type&&left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)&&-1===\"Number String Boolean Date Object\".indexOf(left.value)&&(\"Math\"===left.value?warning(\"Math is not a function.\",left):option.newcap&&warning(\"Missing \\'new\\' prefix when invoking a constructor.\",left)),\")\"!==nexttoken.id)for(;p[p.length]=expression(10),n+=1,\",\"===nexttoken.id;)comma();return advance(\")\"),nospace(prevtoken,token),\"object\"==typeof left&&(\"parseInt\"===left.value&&1===n&&warning(\"Missing radix parameter.\",token),option.evil||(\"eval\"===left.value||\"Function\"===left.value||\"execScript\"===left.value?(warning(\"eval is evil.\",left),p[0]&&\"(string)\"===[0].id&&addInternalSrc(left,p[0].value)):!p[0]||\"(string)\"!==p[0].id||\"setTimeout\"!==left.value&&\"setInterval\"!==left.value?!p[0]||\"(string)\"!==p[0].id||\".\"!==left.value||\"window\"!==left.left.value||\"setTimeout\"!==left.right&&\"setInterval\"!==left.right||(warning(\"Implied eval is evil. Pass a function instead of a string.\",left),addInternalSrc(left,p[0].value)):(warning(\"Implied eval is evil. Pass a function instead of a string.\",left),addInternalSrc(left,p[0].value))),left.identifier||\".\"===left.id||\"[\"===left.id||\"(\"===left.id||\"&&\"===left.id||\"||\"===left.id||\"?\"===left.id||warning(\"Bad invocation.\",left)),that.left=left,that},155,!0).exps=!0,prefix(\"(\",function(){nospace(),\"function\"===nexttoken.id&&(nexttoken.immed=!0);var v=expression(0);return advance(\")\",this),nospace(prevtoken,token),option.immed&&\"function\"===v.id&&\"(\"!==nexttoken.id&&(\".\"!==nexttoken.id||\"call\"!==peek().value&&\"apply\"!==peek().value)&&warning(\"Do not wrap function literals in parens unless they are to be immediately invoked.\",this),v}),infix(\"[\",function(left,that){nobreak(prevtoken,token),nospace();var s,e=expression(0);return e&&\"(string)\"===e.type&&(option.evil||\"eval\"!==e.value&&\"execScript\"!==e.value||warning(\"eval is evil.\",that),countMember(e.value),!option.sub&&ix.test(e.value)&&(s=syntax[e.value],s&&s.reserved||warning(\"[\\'{a}\\'] is better written in dot notation.\",prevtoken,e.value))),advance(\"]\",that),nospace(prevtoken,token),that.left=left,that.right=e,that},160,!0),prefix(\"[\",function(){var b=token.line!==nexttoken.line;for(this.first=[],b&&(indent+=option.indent,nexttoken.from===indent+option.indent&&(indent+=option.indent));\"(end)\"!==nexttoken.id;){for(;\",\"===nexttoken.id;)option.es5||warning(\"Extra comma.\"),advance(\",\");if(\"]\"===nexttoken.id)break;if(b&&token.line!==nexttoken.line&&indentation(),this.first.push(expression(10)),\",\"!==nexttoken.id)break;if(comma(),\"]\"===nexttoken.id&&!option.es5){warning(\"Extra comma.\",token);break}}return b&&(indent-=option.indent,indentation()),advance(\"]\",this),this},160),function(x){x.nud=function(){function saveProperty(name,token){props[name]&&is_own(props,name)?warning(\"Duplicate member \\'{a}\\'.\",nexttoken,i):props[name]={},props[name].basic=!0,props[name].basicToken=token}function saveSetter(name,token){props[name]&&is_own(props,name)?(props[name].basic||props[name].setter)&&warning(\"Duplicate member \\'{a}\\'.\",nexttoken,i):props[name]={},props[name].setter=!0,props[name].setterToken=token}function saveGetter(name){props[name]&&is_own(props,name)?(props[name].basic||props[name].getter)&&warning(\"Duplicate member \\'{a}\\'.\",nexttoken,i):props[name]={},props[name].getter=!0,props[name].getterToken=token}var b,f,i,p,t,props={};for(b=token.line!==nexttoken.line,b&&(indent+=option.indent,nexttoken.from===indent+option.indent&&(indent+=option.indent));\"}\"!==nexttoken.id;){if(b&&indentation(),\"get\"===nexttoken.value&&\":\"!==peek().id)advance(\"get\"),option.es5||error(\"get/set are ES5 features.\"),i=property_name(),i||error(\"Missing property name.\"),saveGetter(i),t=nexttoken,adjacent(token,nexttoken),f=doFunction(),p=f[\"(params)\"],p&&warning(\"Unexpected parameter \\'{a}\\' in get {b} function.\",t,p[0],i),adjacent(token,nexttoken);else if(\"set\"===nexttoken.value&&\":\"!==peek().id)advance(\"set\"),option.es5||error(\"get/set are ES5 features.\"),i=property_name(),i||error(\"Missing property name.\"),saveSetter(i,nexttoken),t=nexttoken,adjacent(token,nexttoken),f=doFunction(),p=f[\"(params)\"],p&&1===p.length||warning(\"Expected a single parameter in set {a} function.\",t,i);else{if(i=property_name(),saveProperty(i,nexttoken),\"string\"!=typeof i)break;advance(\":\"),nonadjacent(token,nexttoken),expression(10)}if(countMember(i),\",\"!==nexttoken.id)break;comma(),\",\"===nexttoken.id?warning(\"Extra comma.\",token):\"}\"!==nexttoken.id||option.es5||warning(\"Extra comma.\",token)}if(b&&(indent-=option.indent,indentation()),advance(\"}\",this),option.es5)for(var name in props)is_own(props,name)&&props[name].setter&&!props[name].getter&&warning(\"Setter is defined without getter.\",props[name].setterToken);return this},x.fud=function(){error(\"Expected to see a statement and instead saw a block.\",token)}}(delim(\"{\")),useESNextSyntax=function(){var conststatement=stmt(\"const\",function(prefix){var id,name,value;for(this.first=[];(nonadjacent(token,nexttoken),id=identifier(),\"const\"===funct[id]&&warning(\"const \\'\"+id+\"\\' has already been declared\"),funct[\"(global)\"]&&predefined[id]===!1&&warning(\"Redefinition of \\'{a}\\'.\",token,id),addlabel(id,\"const\"),!prefix)&&(name=token,this.first.push(token),\"=\"!==nexttoken.id&&warning(\"const \\'{a}\\' is initialized to \\'undefined\\'.\",token,id),\"=\"===nexttoken.id&&(nonadjacent(token,nexttoken),advance(\"=\"),nonadjacent(token,nexttoken),\"undefined\"===nexttoken.id&&warning(\"It is not necessary to initialize \\'{a}\\' to \\'undefined\\'.\",token,id),\"=\"===peek(0).id&&nexttoken.identifier&&error(\"Constant {a} was not declared correctly.\",nexttoken,nexttoken.value),value=expression(0),name.first=value),\",\"===nexttoken.id);)comma();return this});conststatement.exps=!0};var varstatement=stmt(\"var\",function(prefix){var id,name,value;for(funct[\"(onevar)\"]&&option.onevar?warning(\"Too many var statements.\"):funct[\"(global)\"]||(funct[\"(onevar)\"]=!0),this.first=[];(nonadjacent(token,nexttoken),id=identifier(),option.esnext&&\"const\"===funct[id]&&warning(\"const \\'\"+id+\"\\' has already been declared\"),funct[\"(global)\"]&&predefined[id]===!1&&warning(\"Redefinition of \\'{a}\\'.\",token,id),addlabel(id,\"unused\",token),!prefix)&&(name=token,this.first.push(token),\"=\"===nexttoken.id&&(nonadjacent(token,nexttoken),advance(\"=\"),nonadjacent(token,nexttoken),\"undefined\"===nexttoken.id&&warning(\"It is not necessary to initialize \\'{a}\\' to \\'undefined\\'.\",token,id),\"=\"===peek(0).id&&nexttoken.identifier&&error(\"Variable {a} was not declared correctly.\",nexttoken,nexttoken.value),value=expression(0),name.first=value),\",\"===nexttoken.id);)comma();return this});varstatement.exps=!0,blockstmt(\"function\",function(){inblock&&warning(\"Function declarations should not be placed in blocks. Use a function expression or move the statement to the top of the outer function.\",token);var i=identifier();return option.esnext&&\"const\"===funct[i]&&warning(\"const \\'\"+i+\"\\' has already been declared\"),adjacent(token,nexttoken),addlabel(i,\"unction\",token),doFunction(i,{statement:!0}),\"(\"===nexttoken.id&&nexttoken.line===token.line&&error(\"Function declarations are not invocable. Wrap the whole function invocation in parens.\"),this}),prefix(\"function\",function(){var i=optionalidentifier();return i?adjacent(token,nexttoken):nonadjacent(token,nexttoken),doFunction(i),!option.loopfunc&&funct[\"(loopage)\"]&&warning(\"Don\\'t make functions within a loop.\"),this}),blockstmt(\"if\",function(){var t=nexttoken;return increaseComplexityCount(),advance(\"(\"),nonadjacent(this,t),nospace(),expression(20),\"=\"===nexttoken.id&&(option.boss||warning(\"Assignment in conditional expression\"),advance(\"=\"),expression(20)),advance(\")\",t),nospace(prevtoken,token),block(!0,!0),\"else\"===nexttoken.id&&(nonadjacent(token,nexttoken),advance(\"else\"),\"if\"===nexttoken.id||\"switch\"===nexttoken.id?statement(!0):block(!0,!0)),this}),blockstmt(\"try\",function(){function doCatch(){var e,oldScope=scope;advance(\"catch\"),nonadjacent(token,nexttoken),advance(\"(\"),scope=Object.create(oldScope),e=nexttoken.value,\"(identifier)\"!==nexttoken.type&&(e=null,warning(\"Expected an identifier and instead saw \\'{a}\\'.\",nexttoken,e)),advance(),advance(\")\"),funct={\"(name)\":\"(catch)\",\"(line)\":nexttoken.line,\"(character)\":nexttoken.character,\"(context)\":funct,\"(breakage)\":funct[\"(breakage)\"],\"(loopage)\":funct[\"(loopage)\"],\"(scope)\":scope,\"(statement)\":!1,\"(metrics)\":createMetrics(nexttoken),\"(catch)\":!0,\"(tokens)\":{}},e&&addlabel(e,\"exception\"),token.funct=funct,functions.push(funct),block(!1),scope=oldScope,funct[\"(last)\"]=token.line,funct[\"(lastcharacter)\"]=token.character,funct=funct[\"(context)\"]}var b;return block(!1),\"catch\"===nexttoken.id&&(increaseComplexityCount(),doCatch(),b=!0),\"finally\"===nexttoken.id?(advance(\"finally\"),block(!1),void 0):(b||error(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",nexttoken,\"catch\",nexttoken.value),this)}),blockstmt(\"while\",function(){var t=nexttoken;return funct[\"(breakage)\"]+=1,funct[\"(loopage)\"]+=1,increaseComplexityCount(),advance(\"(\"),nonadjacent(this,t),nospace(),expression(20),\"=\"===nexttoken.id&&(option.boss||warning(\"Assignment in conditional expression\"),advance(\"=\"),expression(20)),advance(\")\",t),nospace(prevtoken,token),block(!0,!0),funct[\"(breakage)\"]-=1,funct[\"(loopage)\"]-=1,this}).labelled=!0,blockstmt(\"with\",function(){var t=nexttoken;return directive[\"use strict\"]?error(\"\\'with\\' is not allowed in strict mode.\",token):option.withstmt||warning(\"Don\\'t use \\'with\\'.\",token),advance(\"(\"),nonadjacent(this,t),nospace(),expression(0),advance(\")\",t),nospace(prevtoken,token),block(!0,!0),this}),blockstmt(\"switch\",function(){var t=nexttoken,g=!1;for(funct[\"(breakage)\"]+=1,advance(\"(\"),nonadjacent(this,t),nospace(),this.condition=expression(20),advance(\")\",t),nospace(prevtoken,token),nonadjacent(token,nexttoken),t=nexttoken,advance(\"{\"),nonadjacent(token,nexttoken),indent+=option.indent,this.cases=[];;)switch(nexttoken.id){case\"case\":switch(funct[\"(verb)\"]){case\"break\":case\"case\":case\"continue\":case\"return\":case\"switch\":case\"throw\":break;default:ft.test(lines[nexttoken.line-2])||warning(\"Expected a \\'break\\' statement before \\'case\\'.\",token)}indentation(-option.indent),advance(\"case\"),this.cases.push(expression(20)),increaseComplexityCount(),g=!0,advance(\":\"),funct[\"(verb)\"]=\"case\";break;case\"default\":switch(funct[\"(verb)\"]){case\"break\":case\"continue\":case\"return\":case\"throw\":break;default:ft.test(lines[nexttoken.line-2])||warning(\"Expected a \\'break\\' statement before \\'default\\'.\",token)}indentation(-option.indent),advance(\"default\"),g=!0,advance(\":\");break;case\"}\":return indent-=option.indent,indentation(),advance(\"}\",t),(1===this.cases.length||\"true\"===this.condition.id||\"false\"===this.condition.id)&&(option.onecase||warning(\"This \\'switch\\' should be an \\'if\\'.\",this)),funct[\"(breakage)\"]-=1,funct[\"(verb)\"]=void 0,void 0;case\"(end)\":return error(\"Missing \\'{a}\\'.\",nexttoken,\"}\"),void 0;default:if(g)switch(token.id){case\",\":return error(\"Each value should have its own case label.\"),void 0;case\":\":g=!1,statements();break;default:return error(\"Missing \\':\\' on a case clause.\",token),void 0}else{if(\":\"!==token.id)return error(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",nexttoken,\"case\",nexttoken.value),void 0;advance(\":\"),error(\"Unexpected \\'{a}\\'.\",token,\":\"),statements()}}}).labelled=!0,stmt(\"debugger\",function(){return option.debug||warning(\"All \\'debugger\\' statements should be removed.\"),this}).exps=!0,function(){var x=stmt(\"do\",function(){funct[\"(breakage)\"]+=1,funct[\"(loopage)\"]+=1,increaseComplexityCount(),this.first=block(!0),advance(\"while\");var t=nexttoken;return nonadjacent(token,t),advance(\"(\"),nospace(),expression(20),\"=\"===nexttoken.id&&(option.boss||warning(\"Assignment in conditional expression\"),advance(\"=\"),expression(20)),advance(\")\",t),nospace(prevtoken,token),funct[\"(breakage)\"]-=1,funct[\"(loopage)\"]-=1,this});x.labelled=!0,x.exps=!0}(),blockstmt(\"for\",function(){var s,t=nexttoken;if(funct[\"(breakage)\"]+=1,funct[\"(loopage)\"]+=1,increaseComplexityCount(),advance(\"(\"),nonadjacent(this,t),nospace(),\"in\"===peek(\"var\"===nexttoken.id?1:0).id){if(\"var\"===nexttoken.id)advance(\"var\"),varstatement.fud.call(varstatement,!0);else{switch(funct[nexttoken.value]){case\"unused\":funct[nexttoken.value]=\"var\";break;case\"var\":break;default:warning(\"Bad for in variable \\'{a}\\'.\",nexttoken,nexttoken.value)}advance()}return advance(\"in\"),expression(20),advance(\")\",t),s=block(!0,!0),option.forin&&s&&(s.length>1||\"object\"!=typeof s[0]||\"if\"!==s[0].value)&&warning(\"The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.\",this),funct[\"(breakage)\"]-=1,funct[\"(loopage)\"]-=1,this}if(\";\"!==nexttoken.id)if(\"var\"===nexttoken.id)advance(\"var\"),varstatement.fud.call(varstatement);else for(;expression(0,\"for\"),\",\"===nexttoken.id;)comma();if(nolinebreak(token),advance(\";\"),\";\"!==nexttoken.id&&(expression(20),\"=\"===nexttoken.id&&(option.boss||warning(\"Assignment in conditional expression\"),advance(\"=\"),expression(20))),nolinebreak(token),advance(\";\"),\";\"===nexttoken.id&&error(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",nexttoken,\")\",\";\"),\")\"!==nexttoken.id)for(;expression(0,\"for\"),\",\"===nexttoken.id;)comma();return advance(\")\",t),nospace(prevtoken,token),block(!0,!0),funct[\"(breakage)\"]-=1,funct[\"(loopage)\"]-=1,this}).labelled=!0,stmt(\"break\",function(){var v=nexttoken.value;return 0===funct[\"(breakage)\"]&&warning(\"Unexpected \\'{a}\\'.\",nexttoken,this.value),option.asi||nolinebreak(this),\";\"!==nexttoken.id&&token.line===nexttoken.line&&(\"label\"!==funct[v]?warning(\"\\'{a}\\' is not a statement label.\",nexttoken,v):scope[v]!==funct&&warning(\"\\'{a}\\' is out of scope.\",nexttoken,v),this.first=nexttoken,advance()),reachable(\"break\"),this\\n}).exps=!0,stmt(\"continue\",function(){var v=nexttoken.value;return 0===funct[\"(breakage)\"]&&warning(\"Unexpected \\'{a}\\'.\",nexttoken,this.value),option.asi||nolinebreak(this),\";\"!==nexttoken.id?token.line===nexttoken.line&&(\"label\"!==funct[v]?warning(\"\\'{a}\\' is not a statement label.\",nexttoken,v):scope[v]!==funct&&warning(\"\\'{a}\\' is out of scope.\",nexttoken,v),this.first=nexttoken,advance()):funct[\"(loopage)\"]||warning(\"Unexpected \\'{a}\\'.\",nexttoken,this.value),reachable(\"continue\"),this}).exps=!0,stmt(\"return\",function(){return this.line===nexttoken.line?(\"(regexp)\"===nexttoken.id&&warning(\"Wrap the /regexp/ literal in parens to disambiguate the slash operator.\"),\";\"===nexttoken.id||nexttoken.reach||(nonadjacent(token,nexttoken),\"=\"!==peek().value||option.boss||warningAt(\"Did you mean to return a conditional instead of an assignment?\",token.line,token.character+1),this.first=expression(0))):option.asi||nolinebreak(this),reachable(\"return\"),this}).exps=!0,stmt(\"throw\",function(){return nolinebreak(this),nonadjacent(token,nexttoken),this.first=expression(20),reachable(\"throw\"),this}).exps=!0,reserve(\"class\"),reserve(\"const\"),reserve(\"enum\"),reserve(\"export\"),reserve(\"extends\"),reserve(\"import\"),reserve(\"super\"),reserve(\"let\"),reserve(\"yield\"),reserve(\"implements\"),reserve(\"interface\"),reserve(\"package\"),reserve(\"private\"),reserve(\"protected\"),reserve(\"public\"),reserve(\"static\");var itself=function(s,o,g){var a,i,k,x,optionKeys,newOptionObj={};if(o&&o.scope?JSHINT.scope=o.scope:(JSHINT.errors=[],JSHINT.undefs=[],JSHINT.internals=[],JSHINT.blacklist={},JSHINT.scope=\"(main)\"),predefined=Object.create(standard),declared=Object.create(null),combine(predefined,g||{}),o)for(a=o.predef,a&&(Array.isArray(a)||\"object\"!=typeof a||(a=Object.keys(a)),a.forEach(function(item){var slice;\"-\"===item[0]?(slice=item.slice(1),JSHINT.blacklist[slice]=slice):predefined[item]=!0})),optionKeys=Object.keys(o),x=0;optionKeys.length>x;x++)newOptionObj[optionKeys[x]]=o[optionKeys[x]],\"newcap\"===optionKeys[x]&&o[optionKeys[x]]===!1&&(newOptionObj[\"(explicitNewcap)\"]=!0),\"indent\"===optionKeys[x]&&(newOptionObj.white=!0);for(option=newOptionObj,option.indent=option.indent||4,option.maxerr=option.maxerr||50,tab=\"\",i=0;option.indent>i;i+=1)tab+=\" \";if(indent=1,global=Object.create(predefined),scope=global,funct={\"(global)\":!0,\"(name)\":\"(global)\",\"(scope)\":scope,\"(breakage)\":0,\"(loopage)\":0,\"(tokens)\":{},\"(metrics)\":createMetrics(nexttoken)},functions=[funct],urls=[],stack=null,member={},membersOnly=null,implied={},inblock=!1,lookahead=[],jsonmode=!1,warnings=0,lines=[],unuseds=[],!isString(s)&&!Array.isArray(s))return errorAt(\"Input is neither a string nor an array of strings.\",0),!1;if(isString(s)&&/^\\\\s*$/g.test(s))return errorAt(\"Input is an empty string.\",0),!1;if(0===s.length)return errorAt(\"Input is an empty array.\",0),!1;lex.init(s),prereg=!0,directive={},prevtoken=token=nexttoken=syntax[\"(begin)\"];for(var name in o)is_own(o,name)&&checkOption(name,token);assume(),combine(predefined,g||{}),comma.first=!0,quotmark=void 0;try{switch(advance(),nexttoken.id){case\"{\":case\"[\":option.laxbreak=!0,jsonmode=!0,jsonValue();break;default:directives(),directive[\"use strict\"]&&!option.globalstrict&&warning(\\'Use the function form of \"use strict\".\\',prevtoken),statements()}advance(nexttoken&&\".\"!==nexttoken.value?\"(end)\":void 0);var markDefined=function(name,context){do{if(\"string\"==typeof context[name])return\"unused\"===context[name]?context[name]=\"var\":\"unction\"===context[name]&&(context[name]=\"closure\"),!0;context=context[\"(context)\"]}while(context);return!1},clearImplied=function(name,line){if(implied[name]){for(var newImplied=[],i=0;implied[name].length>i;i+=1)implied[name][i]!==line&&newImplied.push(implied[name][i]);0===newImplied.length?delete implied[name]:implied[name]=newImplied}},warnUnused=function(name,token){var line=token.line,chr=token.character;option.unused&&warningAt(\"\\'{a}\\' is defined but never used.\",line,chr,name),unuseds.push({name:name,line:line,character:chr})},checkUnused=function(func,key){var type=func[key],token=func[\"(tokens)\"][key];\"(\"!==key.charAt(0)&&(\"unused\"===type||\"unction\"===type)&&(func[\"(params)\"]&&-1!==func[\"(params)\"].indexOf(key)||warnUnused(key,token))};for(i=0;JSHINT.undefs.length>i;i+=1)k=JSHINT.undefs[i].slice(0),markDefined(k[2].value,k[0])?clearImplied(k[2].value,k[2].line):warning.apply(warning,k.slice(1));functions.forEach(function(func){for(var key in func)is_own(func,key)&&checkUnused(func,key);if(func[\"(params)\"])for(var type,params=func[\"(params)\"].slice(),param=params.pop();param;){if(type=func[param],\"undefined\"===param)return;if(\"unused\"!==type&&\"unction\"!==type)return;warnUnused(param,func[\"(tokens)\"][param]),param=params.pop()}});for(var key in declared)is_own(declared,key)&&!is_own(global,key)&&warnUnused(key,declared[key])}catch(e){if(e){var nt=nexttoken||{};JSHINT.errors.push({raw:e.raw,reason:e.message,line:e.line||nt.line,character:e.character||nt.from},null)}}if(\"(main)\"===JSHINT.scope)for(o=o||{},i=0;JSHINT.internals.length>i;i+=1)k=JSHINT.internals[i],o.scope=k.elem,itself(k.value,o,g);return 0===JSHINT.errors.length};return itself.data=function(){var fu,f,i,j,n,globals,data={functions:[],options:option},implieds=[],members=[];itself.errors.length&&(data.errors=itself.errors),jsonmode&&(data.json=!0);for(n in implied)is_own(implied,n)&&implieds.push({name:n,line:implied[n]});for(implieds.length>0&&(data.implieds=implieds),urls.length>0&&(data.urls=urls),globals=Object.keys(scope),globals.length>0&&(data.globals=globals),i=1;functions.length>i;i+=1){for(f=functions[i],fu={},j=0;functionicity.length>j;j+=1)fu[functionicity[j]]=[];for(j=0;functionicity.length>j;j+=1)0===fu[functionicity[j]].length&&delete fu[functionicity[j]];fu.name=f[\"(name)\"],fu.param=f[\"(params)\"],fu.line=f[\"(line)\"],fu.character=f[\"(character)\"],fu.last=f[\"(last)\"],fu.lastcharacter=f[\"(lastcharacter)\"],data.functions.push(fu)}unuseds.length>0&&(data.unused=unuseds),members=[];for(n in member)if(\"number\"==typeof member[n]){data.member=member;break}return data},itself.jshint=itself,itself}();\"object\"==typeof exports&&exports&&(exports.JSHINT=JSHINT)});'\n})()},{}],23:[function(){\"use strict\";Function.prototype.bind||(Function.prototype.bind=function(this_){if(\"function\"!=typeof this)throw new TypeError(\"Function.prototype.bind - what is trying to be bound is not callable\");var args=Array.prototype.slice.call(arguments,1),fn=this,Noop=function(){},fnbound=function(){return fn.apply(this instanceof Noop&&this_?this:this_,args.concat(Array.prototype.slice.call(arguments)))};return Noop.prototype=this.prototype,fnbound.prototype=new Noop,fnbound})},{}],21:[function(require,module){\"use strict\";function scroll(elem){elem&&(elem.scrollTop=elem.scrollHeight)}var Terminal=require(\"./term\"),through=require(\"through\");module.exports=function(opts){var term=new Terminal(opts);term.open();var hypernal=through(term.write.bind(term));return hypernal.appendTo=function(elem){\"string\"==typeof elem&&(elem=document.querySelector(elem)),elem.appendChild(term.element),elem.setAttribute(\"style\",\"overflow-y : auto;\"),hypernal.container=elem,term.element.style.position=\"relative\"},hypernal.writeln=function(line){term.writeln(line),hypernal.tail&&scroll(hypernal.container)},hypernal.write=function(data){term.write(data),hypernal.tail&&scroll(hypernal.container)},hypernal.reset=term.reset.bind(term),hypernal.element=term.element,hypernal.term=term,hypernal}},{\"./term\":24,through:25}],22:[function(require,module){(function(process){\"use strict\";function highlightLines(script){return highlight(script,{linenos:!0}).split(\"\\n\")}require(\"./lib/shim-bind\");var highlight=require(\"cardinal\").highlight,snippetify=require(\"snippetify\"),evalSnippets=require(\"./lib/eval-snippets\"),resolveTales=require(\"./lib/resolve-tales\");process.browser,module.exports=function(script,scriptPath,opts){opts=opts||{};var toLines=opts.toLines||highlightLines,writeln=opts.writeln||(process.browser===!0?function(){}:console.log.bind(console)),snippets=snippetify(script,{nonstrict:!0});evalSnippets(snippets,scriptPath,opts.diff);var tales=resolveTales(snippets,opts),lines=toLines(script),offset=0;return tales.forEach(function(x){x.tale.length&&lines.splice(x.insertAfter+offset++,0,x.tale)}),lines=lines.filter(function(x){return x.length}),lines.forEach(function(line){writeln(line)}),lines}})(require(\"__browserify_process\"))},{\"./lib/shim-bind\":23,\"./lib/eval-snippets\":26,\"./lib/resolve-tales\":27,cardinal:28,snippetify:29,__browserify_process:16}],20:[function(require,module){(function(){(function(){function exportAce(ns){var acequire=function(module,callback){return _acequire(\"\",module,callback)},root=global;ns&&(global[ns]||(global[ns]={}),root=global[ns]),root.define&&root.define.packaged||(_define.original=root.define,root.define=_define,root.define.packaged=!0),root.acequire&&root.acequire.packaged||(_acequire.original=root.acequire,root.acequire=acequire,root.acequire.packaged=!0)}var ACE_NAMESPACE=\"ace\",global=function(){return this}();if(ACE_NAMESPACE||\"undefined\"==typeof acequirejs){var _define=function(module,deps,payload){return\"string\"!=typeof module?(_define.original?_define.original.apply(window,arguments):(console.error(\"dropping module because define wasn't a string.\"),console.trace()),void 0):(2==arguments.length&&(payload=deps),_define.modules||(_define.modules={}),_define.modules[module]=payload,void 0)},_acequire=function(parentId,module,callback){if(\"[object Array]\"===Object.prototype.toString.call(module)){for(var params=[],i=0,l=module.length;l>i;++i){var dep=lookup(parentId,module[i]);if(!dep&&_acequire.original)return _acequire.original.apply(window,arguments);params.push(dep)}callback&&callback.apply(null,params)}else{if(\"string\"==typeof module){var payload=lookup(parentId,module);return!payload&&_acequire.original?_acequire.original.apply(window,arguments):(callback&&callback(),payload)}if(_acequire.original)return _acequire.original.apply(window,arguments)}},normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return normalizeModule(parentId,chunks[0])+\"!\"+normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=base+\"/\"+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return moduleName},lookup=function(parentId,moduleName){moduleName=normalizeModule(parentId,moduleName);var module=_define.modules[moduleName];if(!module)return null;if(\"function\"==typeof module){var exports={},mod={id:moduleName,uri:\"\",exports:exports,packaged:!0},req=function(module,callback){return _acequire(moduleName,module,callback)},returnValue=module(req,exports,mod);return exports=returnValue||mod.exports,_define.modules[moduleName]=exports,exports}return module};exportAce(ACE_NAMESPACE)}})(),ace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/multi_select\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/config\"],function(acequire,exports){acequire(\"./lib/fixoldbrowsers\");var dom=acequire(\"./lib/dom\"),event=acequire(\"./lib/event\"),Editor=acequire(\"./editor\").Editor,EditSession=acequire(\"./edit_session\").EditSession,UndoManager=acequire(\"./undomanager\").UndoManager,Renderer=acequire(\"./virtual_renderer\").VirtualRenderer,MultiSelect=acequire(\"./multi_select\").MultiSelect;acequire(\"./worker/worker_client\"),acequire(\"./keyboard/hash_handler\"),acequire(\"./placeholder\"),acequire(\"./mode/folding/fold_mode\"),acequire(\"./theme/textmate\"),exports.config=acequire(\"./config\"),exports.acequire=acequire,exports.edit=function(el){if(\"string\"==typeof el){var _id=el,el=document.getElementById(_id);if(!el)throw\"ace.edit can't find div #\"+_id}if(el.env&&el.env.editor instanceof Editor)return el.env.editor;var doc=exports.createEditSession(dom.getInnerText(el));el.innerHTML=\"\";var editor=new Editor(new Renderer(el));new MultiSelect(editor),editor.setSession(doc);var env={document:doc,editor:editor,onResize:editor.resize.bind(editor,null)};return event.addListener(window,\"resize\",env.onResize),editor.on(\"destroy\",function(){event.removeListener(window,\"resize\",env.onResize)}),el.env=editor.env=env,editor},exports.createEditSession=function(text){var doc=new EditSession(text,doc);return doc.setUndoManager(new UndoManager),doc},exports.EditSession=EditSession,exports.UndoManager=UndoManager}),ace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/regexp\",\"ace/lib/es5-shim\"],function(acequire){acequire(\"./regexp\"),acequire(\"./es5-shim\")}),ace.define(\"ace/lib/regexp\",[\"require\",\"exports\",\"module\"],function(){function getNativeFlags(regex){return(regex.global?\"g\":\"\")+(regex.ignoreCase?\"i\":\"\")+(regex.multiline?\"m\":\"\")+(regex.extended?\"x\":\"\")+(regex.sticky?\"y\":\"\")}function indexOf(array,item,from){if(Array.prototype.indexOf)return array.indexOf(item,from);for(var i=from||0;array.length>i;i++)if(array[i]===item)return i;return-1}var real={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},compliantExecNpcg=void 0===real.exec.call(/()??/,\"\")[1],compliantLastIndexIncrement=function(){var x=/^/g;return real.test.call(x,\"\"),!x.lastIndex}();compliantLastIndexIncrement&&compliantExecNpcg||(RegExp.prototype.exec=function(str){var name,r2,match=real.exec.apply(this,arguments);if(\"string\"==typeof str&&match){if(!compliantExecNpcg&&match.length>1&&indexOf(match,\"\")>-1&&(r2=RegExp(this.source,real.replace.call(getNativeFlags(this),\"g\",\"\")),real.replace.call(str.slice(match.index),r2,function(){for(var i=1;arguments.length-2>i;i++)void 0===arguments[i]&&(match[i]=void 0)})),this._xregexp&&this._xregexp.captureNames)for(var i=1;match.length>i;i++)name=this._xregexp.captureNames[i-1],name&&(match[name]=match[i]);!compliantLastIndexIncrement&&this.global&&!match[0].length&&this.lastIndex>match.index&&this.lastIndex--}return match},compliantLastIndexIncrement||(RegExp.prototype.test=function(str){var match=real.exec.call(this,str);return match&&this.global&&!match[0].length&&this.lastIndex>match.index&&this.lastIndex--,!!match}))}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r  ᠎              \\u2028\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}}),ace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\"],function(acequire,exports){if(\"undefined\"!=typeof document){var XHTML_NS=\"http://www.w3.org/1999/xhtml\";exports.getDocumentHead=function(doc){return doc||(doc=document),doc.head||doc.getElementsByTagName(\"head\")[0]||doc.documentElement},exports.createElement=function(tag,ns){return document.createElementNS?document.createElementNS(ns||XHTML_NS,tag):document.createElement(tag)},exports.hasCssClass=function(el,name){var classes=el.className.split(/\\s+/g);return-1!==classes.indexOf(name)},exports.addCssClass=function(el,name){exports.hasCssClass(el,name)||(el.className+=\" \"+name)},exports.removeCssClass=function(el,name){for(var classes=el.className.split(/\\s+/g);;){var index=classes.indexOf(name);if(-1==index)break;classes.splice(index,1)}el.className=classes.join(\" \")},exports.toggleCssClass=function(el,name){for(var classes=el.className.split(/\\s+/g),add=!0;;){var index=classes.indexOf(name);if(-1==index)break;add=!1,classes.splice(index,1)}return add&&classes.push(name),el.className=classes.join(\" \"),add},exports.setCssClass=function(node,className,include){include?exports.addCssClass(node,className):exports.removeCssClass(node,className)},exports.hasCssString=function(id,doc){var sheets,index=0;if(doc=doc||document,doc.createStyleSheet&&(sheets=doc.styleSheets)){for(;sheets.length>index;)if(sheets[index++].owningElement.id===id)return!0}else if(sheets=doc.getElementsByTagName(\"style\"))for(;sheets.length>index;)if(sheets[index++].id===id)return!0;return!1},exports.importCssString=function(cssText,id,doc){if(doc=doc||document,id&&exports.hasCssString(id,doc))return null;var style;doc.createStyleSheet?(style=doc.createStyleSheet(),style.cssText=cssText,id&&(style.owningElement.id=id)):(style=doc.createElementNS?doc.createElementNS(XHTML_NS,\"style\"):doc.createElement(\"style\"),style.appendChild(doc.createTextNode(cssText)),id&&(style.id=id),exports.getDocumentHead(doc).appendChild(style))},exports.importCssStylsheet=function(uri,doc){if(doc.createStyleSheet)doc.createStyleSheet(uri);else{var link=exports.createElement(\"link\");link.rel=\"stylesheet\",link.href=uri,exports.getDocumentHead(doc).appendChild(link)}},exports.getInnerWidth=function(element){return parseInt(exports.computedStyle(element,\"paddingLeft\"),10)+parseInt(exports.computedStyle(element,\"paddingRight\"),10)+element.clientWidth},exports.getInnerHeight=function(element){return parseInt(exports.computedStyle(element,\"paddingTop\"),10)+parseInt(exports.computedStyle(element,\"paddingBottom\"),10)+element.clientHeight},void 0!==window.pageYOffset?(exports.getPageScrollTop=function(){return window.pageYOffset},exports.getPageScrollLeft=function(){return window.pageXOffset}):(exports.getPageScrollTop=function(){return document.body.scrollTop},exports.getPageScrollLeft=function(){return document.body.scrollLeft}),exports.computedStyle=window.getComputedStyle?function(element,style){return style?(window.getComputedStyle(element,\"\")||{})[style]||\"\":window.getComputedStyle(element,\"\")||{}}:function(element,style){return style?element.currentStyle[style]:element.currentStyle},exports.scrollbarWidth=function(document){var inner=exports.createElement(\"ace_inner\");inner.style.width=\"100%\",inner.style.minWidth=\"0px\",inner.style.height=\"200px\",inner.style.display=\"block\";var outer=exports.createElement(\"ace_outer\"),style=outer.style;style.position=\"absolute\",style.left=\"-10000px\",style.overflow=\"hidden\",style.width=\"200px\",style.minWidth=\"0px\",style.height=\"150px\",style.display=\"block\",outer.appendChild(inner);var body=document.documentElement;body.appendChild(outer);var noScrollbar=inner.offsetWidth;style.overflow=\"scroll\";var withScrollbar=inner.offsetWidth;return noScrollbar==withScrollbar&&(withScrollbar=outer.clientWidth),body.removeChild(outer),noScrollbar-withScrollbar},exports.setInnerHtml=function(el,innerHtml){var element=el.cloneNode(!1);return element.innerHTML=innerHtml,el.parentNode.replaceChild(element,el),element},\"textContent\"in document.documentElement?(exports.setInnerText=function(el,innerText){el.textContent=innerText},exports.getInnerText=function(el){return el.textContent}):(exports.setInnerText=function(el,innerText){el.innerText=innerText},exports.getInnerText=function(el){return el.innerText}),exports.getParentWindow=function(document){return document.defaultView||document.parentWindow}}}),ace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\",\"ace/lib/dom\"],function(acequire,exports){function normalizeCommandKeys(callback,e,keyCode){var hashId=0;if(hashId=!useragent.isOpera||\"KeyboardEvent\"in window||!useragent.isMac?0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0):0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0),keyCode in keys.MODIFIER_KEYS){switch(keys.MODIFIER_KEYS[keyCode]){case\"Alt\":hashId=2;break;case\"Shift\":hashId=4;break;case\"Ctrl\":hashId=1;break;default:hashId=8}keyCode=0}return 8&hashId&&(91==keyCode||93==keyCode)&&(keyCode=0),hashId||keyCode in keys.FUNCTION_KEYS||keyCode in keys.PRINTABLE_KEYS?callback(e,hashId,keyCode):!1}var keys=acequire(\"./keys\"),useragent=acequire(\"./useragent\");if(acequire(\"./dom\"),exports.addListener=function(elem,type,callback){if(elem.addEventListener)return elem.addEventListener(type,callback,!1);if(elem.attachEvent){var wrapper=function(){callback(window.event)};callback._wrapper=wrapper,elem.attachEvent(\"on\"+type,wrapper)}},exports.removeListener=function(elem,type,callback){return elem.removeEventListener?elem.removeEventListener(type,callback,!1):(elem.detachEvent&&elem.detachEvent(\"on\"+type,callback._wrapper||callback),void 0)},exports.stopEvent=function(e){return exports.stopPropagation(e),exports.preventDefault(e),!1},exports.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},exports.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},exports.getButton=function(e){return\"dblclick\"==e.type?0:\"contextmenu\"==e.type||e.ctrlKey&&useragent.isMac?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},exports.capture=document.documentElement.setCapture?function(el,eventHandler,releaseCaptureHandler){function onReleaseCapture(e){eventHandler(e),called||(called=!0,releaseCaptureHandler(e)),exports.removeListener(el,\"mousemove\",eventHandler),exports.removeListener(el,\"mouseup\",onReleaseCapture),exports.removeListener(el,\"losecapture\",onReleaseCapture),el.releaseCapture()}var called=!1;exports.addListener(el,\"mousemove\",eventHandler),exports.addListener(el,\"mouseup\",onReleaseCapture),exports.addListener(el,\"losecapture\",onReleaseCapture),el.setCapture()}:function(el,eventHandler,releaseCaptureHandler){function onMouseUp(e){eventHandler&&eventHandler(e),releaseCaptureHandler&&releaseCaptureHandler(e),document.removeEventListener(\"mousemove\",eventHandler,!0),document.removeEventListener(\"mouseup\",onMouseUp,!0),e.stopPropagation()}document.addEventListener(\"mousemove\",eventHandler,!0),document.addEventListener(\"mouseup\",onMouseUp,!0)},exports.addMouseWheelListener=function(el,callback){var factor=8,listener=function(e){void 0!==e.wheelDelta?void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/factor,e.wheelY=-e.wheelDeltaY/factor):(e.wheelX=0,e.wheelY=-e.wheelDelta/factor):e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=5*(e.detail||0),e.wheelY=0):(e.wheelX=0,e.wheelY=5*(e.detail||0)),callback(e)};exports.addListener(el,\"DOMMouseScroll\",listener),exports.addListener(el,\"mousewheel\",listener)},exports.addMultiMouseDownListener=function(el,timeouts,eventHandler,callbackName){var startX,startY,timer,clicks=0,eventNames={2:\"dblclick\",3:\"tripleclick\",4:\"quadclick\"};exports.addListener(el,\"mousedown\",function(e){if(0!=exports.getButton(e))clicks=0;else{var isNewClick=Math.abs(e.clientX-startX)>5||Math.abs(e.clientY-startY)>5;(!timer||isNewClick)&&(clicks=0),clicks+=1,timer&&clearTimeout(timer),timer=setTimeout(function(){timer=null},timeouts[clicks-1]||600)}if(1==clicks&&(startX=e.clientX,startY=e.clientY),eventHandler[callbackName](\"mousedown\",e),clicks>4)clicks=0;else if(clicks>1)return eventHandler[callbackName](eventNames[clicks],e)}),useragent.isOldIE&&exports.addListener(el,\"dblclick\",function(e){clicks=2,timer&&clearTimeout(timer),timer=setTimeout(function(){timer=null},timeouts[clicks-1]||600),eventHandler[callbackName](\"mousedown\",e),eventHandler[callbackName](eventNames[clicks],e)})},exports.addCommandKeyListener=function(el,callback){var addListener=exports.addListener;if(useragent.isOldGecko||useragent.isOpera&&!(\"KeyboardEvent\"in window)){var lastKeyDownKeyCode=null;addListener(el,\"keydown\",function(e){lastKeyDownKeyCode=e.keyCode}),addListener(el,\"keypress\",function(e){return normalizeCommandKeys(callback,e,lastKeyDownKeyCode)})}else{var lastDown=null;addListener(el,\"keydown\",function(e){return lastDown=e.keyIdentifier||e.keyCode,normalizeCommandKeys(callback,e,e.keyCode)})}},window.postMessage&&!useragent.isOldIE){var postMessageId=1;exports.nextTick=function(callback,win){win=win||window;var messageName=\"zero-timeout-message-\"+postMessageId;exports.addListener(win,\"message\",function listener(e){e.data==messageName&&(exports.stopPropagation(e),exports.removeListener(win,\"message\",listener),callback())}),win.postMessage(messageName,\"*\")}}exports.nextFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame,exports.nextFrame=exports.nextFrame?exports.nextFrame.bind(window):function(callback){setTimeout(callback,17)}}),ace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"],function(acequire,exports){var oop=acequire(\"./oop\"),Keys=function(){var ret={MODIFIER_KEYS:{16:\"Shift\",17:\"Ctrl\",18:\"Alt\",224:\"Meta\"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,meta:8,command:8,cmd:8},FUNCTION_KEYS:{8:\"Backspace\",9:\"Tab\",13:\"Return\",19:\"Pause\",27:\"Esc\",32:\"Space\",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"Left\",38:\"Up\",39:\"Right\",40:\"Down\",44:\"Print\",45:\"Insert\",46:\"Delete\",96:\"Numpad0\",97:\"Numpad1\",98:\"Numpad2\",99:\"Numpad3\",100:\"Numpad4\",101:\"Numpad5\",102:\"Numpad6\",103:\"Numpad7\",104:\"Numpad8\",105:\"Numpad9\",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:\"Scrolllock\"},PRINTABLE_KEYS:{32:\" \",48:\"0\",49:\"1\",50:\"2\",51:\"3\",52:\"4\",53:\"5\",54:\"6\",55:\"7\",56:\"8\",57:\"9\",59:\";\",61:\"=\",65:\"a\",66:\"b\",67:\"c\",68:\"d\",69:\"e\",70:\"f\",71:\"g\",72:\"h\",73:\"i\",74:\"j\",75:\"k\",76:\"l\",77:\"m\",78:\"n\",79:\"o\",80:\"p\",81:\"q\",82:\"r\",83:\"s\",84:\"t\",85:\"u\",86:\"v\",87:\"w\",88:\"x\",89:\"y\",90:\"z\",107:\"+\",109:\"-\",110:\".\",188:\",\",190:\".\",191:\"/\",192:\"`\",219:\"[\",220:\"\\\\\",221:\"]\",222:\"'\"}};for(var i in ret.FUNCTION_KEYS){var name=ret.FUNCTION_KEYS[i].toLowerCase();ret[name]=parseInt(i,10)}return oop.mixin(ret,ret.MODIFIER_KEYS),oop.mixin(ret,ret.PRINTABLE_KEYS),oop.mixin(ret,ret.FUNCTION_KEYS),ret.enter=ret[\"return\"],ret.escape=ret.esc,ret.del=ret[\"delete\"],ret[173]=\"-\",ret}();oop.mixin(exports,Keys),exports.keyCodeToString=function(keyCode){return(Keys[keyCode]||String.fromCharCode(keyCode)).toLowerCase()}}),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){exports.inherits=function(){var tempCtor=function(){};\nreturn function(ctor,superCtor){tempCtor.prototype=superCtor.prototype,ctor.super_=superCtor.prototype,ctor.prototype=new tempCtor,ctor.prototype.constructor=ctor}}(),exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"],function(acequire,exports){if(exports.OS={LINUX:\"LINUX\",MAC:\"MAC\",WINDOWS:\"WINDOWS\"},exports.getOS=function(){return exports.isMac?exports.OS.MAC:exports.isLinux?exports.OS.LINUX:exports.OS.WINDOWS},\"object\"==typeof navigator){var os=(navigator.platform.match(/mac|win|linux/i)||[\"other\"])[0].toLowerCase(),ua=navigator.userAgent;exports.isWin=\"win\"==os,exports.isMac=\"mac\"==os,exports.isLinux=\"linux\"==os,exports.isIE=(\"Microsoft Internet Explorer\"==navigator.appName||navigator.appName.indexOf(\"MSAppHost\")>=0)&&parseFloat(navigator.userAgent.match(/MSIE ([0-9]+[\\.0-9]+)/)[1]),exports.isOldIE=exports.isIE&&9>exports.isIE,exports.isGecko=exports.isMozilla=window.controllers&&\"Gecko\"===window.navigator.product,exports.isOldGecko=exports.isGecko&&4>parseInt((navigator.userAgent.match(/rv\\:(\\d+)/)||[])[1],10),exports.isOpera=window.opera&&\"[object Opera]\"==Object.prototype.toString.call(window.opera),exports.isWebKit=parseFloat(ua.split(\"WebKit/\")[1])||void 0,exports.isChrome=parseFloat(ua.split(\" Chrome/\")[1])||void 0,exports.isAIR=ua.indexOf(\"AdobeAIR\")>=0,exports.isIPad=ua.indexOf(\"iPad\")>=0,exports.isTouchPad=ua.indexOf(\"TouchPad\")>=0}}),ace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\"],function(acequire,exports){acequire(\"./lib/fixoldbrowsers\");var oop=acequire(\"./lib/oop\"),lang=acequire(\"./lib/lang\"),useragent=acequire(\"./lib/useragent\"),TextInput=acequire(\"./keyboard/textinput\").TextInput,MouseHandler=acequire(\"./mouse/mouse_handler\").MouseHandler,FoldHandler=acequire(\"./mouse/fold_handler\").FoldHandler,KeyBinding=acequire(\"./keyboard/keybinding\").KeyBinding,EditSession=acequire(\"./edit_session\").EditSession,Search=acequire(\"./search\").Search,Range=acequire(\"./range\").Range,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,CommandManager=acequire(\"./commands/command_manager\").CommandManager,defaultCommands=acequire(\"./commands/default_commands\").commands,config=acequire(\"./config\"),Editor=function(renderer,session){var container=renderer.getContainerElement();this.container=container,this.renderer=renderer,this.commands=new CommandManager(useragent.isMac?\"mac\":\"win\",defaultCommands),this.textInput=new TextInput(renderer.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.keyBinding=new KeyBinding(this),this.$mouseHandler=new MouseHandler(this),new FoldHandler(this),this.$blockScrolling=0,this.$search=(new Search).set({wrap:!0}),this.setSession(session||new EditSession(\"\")),config.resetOptions(this),config._emit(\"editor\",this)};(function(){oop.implement(this,EventEmitter),this.setKeyboardHandler=function(keyboardHandler){if(keyboardHandler)if(\"string\"==typeof keyboardHandler){this.$keybindingId=keyboardHandler;var _self=this;config.loadModule([\"keybinding\",keyboardHandler],function(module){_self.$keybindingId==keyboardHandler&&_self.keyBinding.setKeyboardHandler(module&&module.handler)})}else delete this.$keybindingId,this.keyBinding.setKeyboardHandler(keyboardHandler);else this.keyBinding.setKeyboardHandler(null)},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(session){if(this.session!=session){if(this.session){var oldSession=this.session;this.session.removeEventListener(\"change\",this.$onDocumentChange),this.session.removeEventListener(\"changeMode\",this.$onChangeMode),this.session.removeEventListener(\"tokenizerUpdate\",this.$onTokenizerUpdate),this.session.removeEventListener(\"changeTabSize\",this.$onChangeTabSize),this.session.removeEventListener(\"changeWrapLimit\",this.$onChangeWrapLimit),this.session.removeEventListener(\"changeWrapMode\",this.$onChangeWrapMode),this.session.removeEventListener(\"onChangeFold\",this.$onChangeFold),this.session.removeEventListener(\"changeFrontMarker\",this.$onChangeFrontMarker),this.session.removeEventListener(\"changeBackMarker\",this.$onChangeBackMarker),this.session.removeEventListener(\"changeBreakpoint\",this.$onChangeBreakpoint),this.session.removeEventListener(\"changeAnnotation\",this.$onChangeAnnotation),this.session.removeEventListener(\"changeOverwrite\",this.$onCursorChange),this.session.removeEventListener(\"changeScrollTop\",this.$onScrollTopChange),this.session.removeEventListener(\"changeScrollLeft\",this.$onScrollLeftChange);var selection=this.session.getSelection();selection.removeEventListener(\"changeCursor\",this.$onCursorChange),selection.removeEventListener(\"changeSelection\",this.$onSelectionChange)}this.session=session,this.$onDocumentChange=this.onDocumentChange.bind(this),session.addEventListener(\"change\",this.$onDocumentChange),this.renderer.setSession(session),this.$onChangeMode=this.onChangeMode.bind(this),session.addEventListener(\"changeMode\",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),session.addEventListener(\"tokenizerUpdate\",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),session.addEventListener(\"changeTabSize\",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),session.addEventListener(\"changeWrapLimit\",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),session.addEventListener(\"changeWrapMode\",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),session.addEventListener(\"changeFold\",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener(\"changeFrontMarker\",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener(\"changeBackMarker\",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener(\"changeBreakpoint\",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener(\"changeAnnotation\",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener(\"changeOverwrite\",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener(\"changeScrollTop\",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener(\"changeScrollLeft\",this.$onScrollLeftChange),this.selection=session.getSelection(),this.selection.addEventListener(\"changeCursor\",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener(\"changeSelection\",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull(),this._emit(\"changeSession\",{session:session,oldSession:oldSession})}},this.getSession=function(){return this.session},this.setValue=function(val,cursorPos){return this.session.doc.setValue(val),cursorPos?1==cursorPos?this.navigateFileEnd():-1==cursorPos&&this.navigateFileStart():this.selectAll(),val},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(force){this.renderer.onResize(force)},this.setTheme=function(theme){this.renderer.setTheme(theme)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(style){this.renderer.setStyle(style)},this.unsetStyle=function(style){this.renderer.unsetStyle(style)},this.setFontSize=function(size){this.setOption(\"fontSize\",size)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var self=this;this.$highlightPending=!0,setTimeout(function(){self.$highlightPending=!1;var pos=self.session.findMatchingBracket(self.getCursorPosition());if(pos)var range=new Range(pos.row,pos.column,pos.row,pos.column+1);else if(self.session.$mode.getMatching)var range=self.session.$mode.getMatching(self.session);range&&(self.session.$bracketHighlight=self.session.addMarker(range,\"ace_bracket\",\"text\"))},50)}},this.focus=function(){var _self=this;setTimeout(function(){_self.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit(\"focus\"))},this.onBlur=function(){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit(\"blur\"))},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var lastRow,delta=e.data,range=delta.range;lastRow=range.start.row==range.end.row&&\"insertLines\"!=delta.action&&\"removeLines\"!=delta.action?range.end.row:1/0,this.renderer.updateLines(range.start.row,lastRow),this._emit(\"change\",e),this.$cursorChange()},this.onTokenizerUpdate=function(e){var rows=e.data;this.renderer.updateLines(rows.first,rows.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||this.renderer.scrollCursorIntoView(),this.$highlightBrackets(),this.$updateHighlightActiveLine(),this._emit(\"changeSelection\")},this.$updateHighlightActiveLine=function(){var highlight,session=this.getSession();if(this.$highlightActiveLine&&(\"line\"==this.$selectionStyle&&this.selection.isMultiLine()||(highlight=this.getCursorPosition())),session.$highlightLineMarker&&!highlight)session.removeMarker(session.$highlightLineMarker.id),session.$highlightLineMarker=null;else if(!session.$highlightLineMarker&&highlight){var range=new Range(highlight.row,highlight.column,highlight.row,1/0);range.id=session.addMarker(range,\"ace_active-line\",\"screenLine\"),session.$highlightLineMarker=range}else highlight&&(session.$highlightLineMarker.start.row=highlight.row,session.$highlightLineMarker.end.row=highlight.row,session.$highlightLineMarker.start.column=highlight.column,session._emit(\"changeBackMarker\"))},this.onSelectionChange=function(){var session=this.session;if(session.$selectionMarker&&session.removeMarker(session.$selectionMarker),session.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var range=this.selection.getRange(),style=this.getSelectionStyle();session.$selectionMarker=session.addMarker(range,\"ace_selection\",style)}var re=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(re),this._emit(\"changeSelection\")},this.$getSelectionHighLightRegexp=function(){var session=this.session,selection=this.getSelectionRange();if(!selection.isEmpty()&&!selection.isMultiLine()){var startOuter=selection.start.column-1,endOuter=selection.end.column+1,line=session.getLine(selection.start.row),lineCols=line.length,needle=line.substring(Math.max(startOuter,0),Math.min(endOuter,lineCols));if(!(startOuter>=0&&/^[\\w\\d]/.test(needle)||lineCols>=endOuter&&/[\\w\\d]$/.test(needle))&&(needle=line.substring(selection.start.column,selection.end.column),/^[\\w\\d]+$/.test(needle))){var re=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:needle});return re}}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit(\"changeMode\",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getCopyText=function(){var text=\"\";return this.selection.isEmpty()||(text=this.session.getTextRange(this.getSelectionRange())),this._emit(\"copy\",text),text},this.onCopy=function(){this.commands.exec(\"copy\",this)},this.onCut=function(){this.commands.exec(\"cut\",this)},this.onPaste=function(text){this.$readOnly||(this._emit(\"paste\",text),this.insert(text))},this.execCommand=function(command,args){this.commands.exec(command,this,args)},this.insert=function(text){var session=this.session,mode=session.getMode(),cursor=this.getCursorPosition();if(this.getBehavioursEnabled()){var transform=mode.transformAction(session.getState(cursor.row),\"insertion\",this,session,text);transform&&(text=transform.text)}if(text=text.replace(\"\t\",this.session.getTabString()),this.selection.isEmpty()){if(this.session.getOverwrite()){var range=new Range.fromPoints(cursor,cursor);range.end.column+=text.length,this.session.remove(range)}}else cursor=this.session.remove(this.getSelectionRange()),this.clearSelection();this.clearSelection();var start=cursor.column,lineState=session.getState(cursor.row),line=session.getLine(cursor.row),shouldOutdent=mode.checkOutdent(lineState,line,text),end=session.insert(cursor,text);if(transform&&transform.selection&&(2==transform.selection.length?this.selection.setSelectionRange(new Range(cursor.row,start+transform.selection[0],cursor.row,start+transform.selection[1])):this.selection.setSelectionRange(new Range(cursor.row+transform.selection[0],transform.selection[1],cursor.row+transform.selection[2],transform.selection[3]))),session.getDocument().isNewLine(text)){var lineIndent=mode.getNextLineIndent(lineState,line.slice(0,cursor.column),session.getTabString());this.moveCursorTo(cursor.row+1,0);for(var size=session.getTabSize(),minIndent=Number.MAX_VALUE,row=cursor.row+1;end.row>=row;++row){var indent=0;line=session.getLine(row);for(var i=0;line.length>i;++i)if(\"\t\"==line.charAt(i))indent+=size;else{if(\" \"!=line.charAt(i))break;indent+=1}/[^\\s]/.test(line)&&(minIndent=Math.min(indent,minIndent))}for(var row=cursor.row+1;end.row>=row;++row){var outdent=minIndent;line=session.getLine(row);for(var i=0;line.length>i&&outdent>0;++i)\"\t\"==line.charAt(i)?outdent-=size:\" \"==line.charAt(i)&&(outdent-=1);session.remove(new Range(row,0,row,i))}session.indentRows(cursor.row+1,end.row,lineIndent)}shouldOutdent&&mode.autoOutdent(lineState,session,cursor.row)},this.onTextInput=function(text){this.keyBinding.onTextInput(text)},this.onCommandKey=function(e,hashId,keyCode){this.keyBinding.onCommandKey(e,hashId,keyCode)},this.setOverwrite=function(overwrite){this.session.setOverwrite(overwrite)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(speed){this.setOption(\"scrollSpeed\",speed)},this.getScrollSpeed=function(){return this.getOption(\"scrollSpeed\")},this.setDragDelay=function(dragDelay){this.setOption(\"dragDelay\",dragDelay)},this.getDragDelay=function(){return this.getOption(\"dragDelay\")},this.setSelectionStyle=function(val){this.setOption(\"selectionStyle\",val)},this.getSelectionStyle=function(){return this.getOption(\"selectionStyle\")},this.setHighlightActiveLine=function(shouldHighlight){this.setOption(\"highlightActiveLine\",shouldHighlight)},this.getHighlightActiveLine=function(){return this.getOption(\"highlightActiveLine\")},this.setHighlightGutterLine=function(shouldHighlight){this.setOption(\"highlightGutterLine\",shouldHighlight)},this.getHighlightGutterLine=function(){return this.getOption(\"highlightGutterLine\")},this.setHighlightSelectedWord=function(shouldHighlight){this.setOption(\"highlightSelectedWord\",shouldHighlight)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(shouldAnimate){this.renderer.setAnimatedScroll(shouldAnimate)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(showInvisibles){this.renderer.setShowInvisibles(showInvisibles)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(display){this.renderer.setDisplayIndentGuides(display)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(showPrintMargin){this.renderer.setShowPrintMargin(showPrintMargin)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(showPrintMargin){this.renderer.setPrintMarginColumn(showPrintMargin)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(readOnly){this.setOption(\"readOnly\",readOnly)},this.getReadOnly=function(){return this.getOption(\"readOnly\")},this.setBehavioursEnabled=function(enabled){this.setOption(\"behavioursEnabled\",enabled)},this.getBehavioursEnabled=function(){return this.getOption(\"behavioursEnabled\")},this.setWrapBehavioursEnabled=function(enabled){this.setOption(\"wrapBehavioursEnabled\",enabled)},this.getWrapBehavioursEnabled=function(){return this.getOption(\"wrapBehavioursEnabled\")},this.setShowFoldWidgets=function(show){this.setOption(\"showFoldWidgets\",show)},this.getShowFoldWidgets=function(){return this.getOption(\"showFoldWidgets\")},this.setFadeFoldWidgets=function(fade){this.setOption(\"fadeFoldWidgets\",fade)},this.getFadeFoldWidgets=function(){return this.getOption(\"fadeFoldWidgets\")},this.remove=function(dir){this.selection.isEmpty()&&(\"left\"==dir?this.selection.selectLeft():this.selection.selectRight());var range=this.getSelectionRange();if(this.getBehavioursEnabled()){var session=this.session,state=session.getState(range.start.row),new_range=session.getMode().transformAction(state,\"deletion\",this,session,range);new_range&&(range=new_range)}this.session.remove(range),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var range=this.getSelectionRange();range.start.column==range.end.column&&range.start.row==range.end.row&&(range.end.column=0,range.end.row++),this.session.remove(range),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var cursor=this.getCursorPosition();this.insert(\"\\n\"),this.moveCursorToPosition(cursor)},this.transposeLetters=function(){if(this.selection.isEmpty()){var cursor=this.getCursorPosition(),column=cursor.column;if(0!==column){var swap,range,line=this.session.getLine(cursor.row);line.length>column?(swap=line.charAt(column)+line.charAt(column-1),range=new Range(cursor.row,column-1,cursor.row,column+1)):(swap=line.charAt(column-1)+line.charAt(column-2),range=new Range(cursor.row,column-2,cursor.row,column)),this.session.replace(range,swap)}}},this.toLowerCase=function(){var originalRange=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var range=this.getSelectionRange(),text=this.session.getTextRange(range);this.session.replace(range,text.toLowerCase()),this.selection.setSelectionRange(originalRange)},this.toUpperCase=function(){var originalRange=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var range=this.getSelectionRange(),text=this.session.getTextRange(range);this.session.replace(range,text.toUpperCase()),this.selection.setSelectionRange(originalRange)},this.indent=function(){var session=this.session,range=this.getSelectionRange();if(!(range.start.row\u003Crange.end.row||range.start.column\u003Crange.end.column)){var indentString;if(this.session.getUseSoftTabs()){var size=session.getTabSize(),position=this.getCursorPosition(),column=session.documentToScreenColumn(position.row,position.column),count=size-column%size;indentString=lang.stringRepeat(\" \",count)}else indentString=\"\t\";return this.insert(indentString)}var rows=this.$getSelectedRows();session.indentRows(rows.first,rows.last,\"\t\")},this.blockIndent=function(){var rows=this.$getSelectedRows();this.session.indentRows(rows.first,rows.last,\"\t\")},this.blockOutdent=function(){var selection=this.session.getSelection();this.session.outdentRows(selection.getRange())},this.sortLines=function(){var rows=this.$getSelectedRows(),session=this.session,lines=[];for(i=rows.first;rows.last>=i;i++)lines.push(session.getLine(i));lines.sort(function(a,b){return a.toLowerCase()\u003Cb.toLowerCase()?-1:a.toLowerCase()>b.toLowerCase()?1:0});for(var deleteRange=new Range(0,0,0,0),i=rows.first;rows.last>=i;i++){var line=session.getLine(i);deleteRange.start.row=i,deleteRange.end.row=i,deleteRange.end.column=line.length,session.replace(deleteRange,lines[i-rows.first])}},this.toggleCommentLines=function(){var state=this.session.getState(this.getCursorPosition().row),rows=this.$getSelectedRows();this.session.getMode().toggleCommentLines(state,this.session,rows.first,rows.last)},this.getNumberAt=function(row,column){var _numberRx=/[\\-]?[0-9]+(?:\\.[0-9]+)?/g;_numberRx.lastIndex=0;for(var s=this.session.getLine(row);column>_numberRx.lastIndex;){var m=_numberRx.exec(s);if(column>=m.index&&m.index+m[0].length>=column){var number={value:m[0],start:m.index,end:m.index+m[0].length};return number}}return null},this.modifyNumber=function(amount){var row=this.selection.getCursor().row,column=this.selection.getCursor().column,charRange=new Range(row,column-1,row,column),c=this.session.getTextRange(charRange);if(!isNaN(parseFloat(c))&&isFinite(c)){var nr=this.getNumberAt(row,column);if(nr){var fp=nr.value.indexOf(\".\")>=0?nr.start+nr.value.indexOf(\".\")+1:nr.end,decimals=nr.start+nr.value.length-fp,t=parseFloat(nr.value);t*=Math.pow(10,decimals),amount*=fp!==nr.end&&fp>column?Math.pow(10,nr.end-column-1):Math.pow(10,nr.end-column),t+=amount,t/=Math.pow(10,decimals);var nnr=t.toFixed(decimals),replaceRange=new Range(row,nr.start,row,nr.end);this.session.replace(replaceRange,nnr),this.moveCursorTo(row,Math.max(nr.start+1,column+nnr.length-nr.value.length))}}},this.removeLines=function(){var range,rows=this.$getSelectedRows();range=0===rows.first||rows.last+1\u003Cthis.session.getLength()?new Range(rows.first,0,rows.last+1,0):new Range(rows.first-1,this.session.getLine(rows.first-1).length,rows.last,this.session.getLine(rows.last).length),this.session.remove(range),this.clearSelection()},this.duplicateSelection=function(){var sel=this.selection,doc=this.session,range=sel.getRange(),reverse=sel.isBackwards();if(range.isEmpty()){var row=range.start.row;doc.duplicateLines(row,row)}else{var point=reverse?range.start:range.end,endPoint=doc.insert(point,doc.getTextRange(range),!1);range.start=point,range.end=endPoint,sel.setSelectionRange(range,reverse)}},this.moveLinesDown=function(){this.$moveLines(function(firstRow,lastRow){return this.session.moveLinesDown(firstRow,lastRow)})},this.moveLinesUp=function(){this.$moveLines(function(firstRow,lastRow){return this.session.moveLinesUp(firstRow,lastRow)})},this.moveText=function(range,toPosition){return this.session.moveText(range,toPosition)},this.copyLinesUp=function(){this.$moveLines(function(firstRow,lastRow){return this.session.duplicateLines(firstRow,lastRow),0})},this.copyLinesDown=function(){this.$moveLines(function(firstRow,lastRow){return this.session.duplicateLines(firstRow,lastRow)})},this.$moveLines=function(mover){var selection=this.selection;if(!selection.inMultiSelectMode||this.inVirtualSelectionMode){var range=selection.toOrientedRange(),rows=this.$getSelectedRows(range),linesMoved=mover.call(this,rows.first,rows.last);range.moveBy(linesMoved,0),selection.fromOrientedRange(range)}else{var ranges=selection.rangeList.ranges;selection.rangeList.detach(this.session);for(var i=ranges.length;i--;){for(var rangeIndex=i,rows=ranges[i].collapseRows(),last=rows.end.row,first=rows.start.row;i--;){var rows=ranges[i].collapseRows();if(!(1>=first-rows.end.row))break;first=rows.end.row}i++;for(var linesMoved=mover.call(this,first,last);rangeIndex>=i;)ranges[rangeIndex].moveBy(linesMoved,0),rangeIndex--}selection.fromOrientedRange(selection.ranges[0]),selection.rangeList.attach(this.session)}},this.$getSelectedRows=function(){var range=this.getSelectionRange().collapseRows();return{first:range.start.row,last:range.end.row}},this.onCompositionStart=function(){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(text){this.renderer.setCompositionText(text)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(row){return row>=this.getFirstVisibleRow()&&this.getLastVisibleRow()>=row},this.isRowFullyVisible=function(row){return row>=this.renderer.getFirstFullyVisibleRow()&&this.renderer.getLastFullyVisibleRow()>=row},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(dir,select){var renderer=this.renderer,config=this.renderer.layerConfig,rows=dir*Math.floor(config.height/config.lineHeight);this.$blockScrolling++,1==select?this.selection.$moveSelection(function(){this.moveCursorBy(rows,0)}):0==select&&(this.selection.moveCursorBy(rows,0),this.selection.clearSelection()),this.$blockScrolling--;var scrollTop=renderer.scrollTop;renderer.scrollBy(0,rows*config.lineHeight),null!=select&&renderer.scrollCursorIntoView(null,.5),renderer.animateScrolling(scrollTop)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(row){this.renderer.scrollToRow(row)},this.scrollToLine=function(line,center,animate,callback){this.renderer.scrollToLine(line,center,animate,callback)},this.centerSelection=function(){var range=this.getSelectionRange(),pos={row:Math.floor(range.start.row+(range.end.row-range.start.row)/2),column:Math.floor(range.start.column+(range.end.column-range.start.column)/2)};this.renderer.alignCursor(pos,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(row,column){this.selection.moveCursorTo(row,column)},this.moveCursorToPosition=function(pos){this.selection.moveCursorToPosition(pos)},this.jumpToMatching=function(select){var cursor=this.getCursorPosition(),range=this.session.getBracketRange(cursor);if(!range){if(range=this.find({needle:/[{}()\\[\\]]/g,preventScroll:!0,start:{row:cursor.row,column:cursor.column-1}}),!range)return;var pos=range.start;pos.row==cursor.row&&2>Math.abs(pos.column-cursor.column)&&(range=this.session.getBracketRange(pos))}pos=range&&range.cursor||pos,pos&&(select?range&&range.isEqual(this.getSelectionRange())?this.clearSelection():this.selection.selectTo(pos.row,pos.column):(this.clearSelection(),this.moveCursorTo(pos.row,pos.column)))},this.gotoLine=function(lineNumber,column,animate){this.selection.clearSelection(),this.session.unfold({row:lineNumber-1,column:column||0}),this.$blockScrolling+=1,this.moveCursorTo(lineNumber-1,column||0),this.$blockScrolling-=1,this.isRowFullyVisible(lineNumber-1)||this.scrollToLine(lineNumber-1,!0,animate)},this.navigateTo=function(row,column){this.clearSelection(),this.moveCursorTo(row,column)},this.navigateUp=function(times){if(this.selection.isMultiLine()&&!this.selection.isBackwards()){var selectionStart=this.selection.anchor.getPosition();return this.moveCursorToPosition(selectionStart)}this.selection.clearSelection(),times=times||1,this.selection.moveCursorBy(-times,0)},this.navigateDown=function(times){if(this.selection.isMultiLine()&&this.selection.isBackwards()){var selectionEnd=this.selection.anchor.getPosition();return this.moveCursorToPosition(selectionEnd)}this.selection.clearSelection(),times=times||1,this.selection.moveCursorBy(times,0)},this.navigateLeft=function(times){if(this.selection.isEmpty())for(times=times||1;times--;)this.selection.moveCursorLeft();else{var selectionStart=this.getSelectionRange().start;this.moveCursorToPosition(selectionStart)}this.clearSelection()},this.navigateRight=function(times){if(this.selection.isEmpty())for(times=times||1;times--;)this.selection.moveCursorRight();else{var selectionEnd=this.getSelectionRange().end;this.moveCursorToPosition(selectionEnd)}this.clearSelection()},this.navigateLineStart=function(){this.selection.moveCursorLineStart(),this.clearSelection()},this.navigateLineEnd=function(){this.selection.moveCursorLineEnd(),this.clearSelection()},this.navigateFileEnd=function(){var scrollTop=this.renderer.scrollTop;this.selection.moveCursorFileEnd(),this.clearSelection(),this.renderer.animateScrolling(scrollTop)},this.navigateFileStart=function(){var scrollTop=this.renderer.scrollTop;this.selection.moveCursorFileStart(),this.clearSelection(),this.renderer.animateScrolling(scrollTop)},this.navigateWordRight=function(){this.selection.moveCursorWordRight(),this.clearSelection()},this.navigateWordLeft=function(){this.selection.moveCursorWordLeft(),this.clearSelection()},this.replace=function(replacement,options){options&&this.$search.set(options);var range=this.$search.find(this.session),replaced=0;return range?(this.$tryReplace(range,replacement)&&(replaced=1),null!==range&&(this.selection.setSelectionRange(range),this.renderer.scrollSelectionIntoView(range.start,range.end)),replaced):replaced},this.replaceAll=function(replacement,options){options&&this.$search.set(options);var ranges=this.$search.findAll(this.session),replaced=0;if(!ranges.length)return replaced;this.$blockScrolling+=1;var selection=this.getSelectionRange();this.clearSelection(),this.selection.moveCursorTo(0,0);for(var i=ranges.length-1;i>=0;--i)this.$tryReplace(ranges[i],replacement)&&replaced++;return this.selection.setSelectionRange(selection),this.$blockScrolling-=1,replaced},this.$tryReplace=function(range,replacement){var input=this.session.getTextRange(range);return replacement=this.$search.replace(input,replacement),null!==replacement?(range.end=this.session.replace(range,replacement),range):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(needle,options,animate){options||(options={}),\"string\"==typeof needle||needle instanceof RegExp?options.needle=needle:\"object\"==typeof needle&&oop.mixin(options,needle);\nvar range=this.selection.getRange();null==options.needle&&(needle=this.session.getTextRange(range)||this.$search.$options.needle,needle||(range=this.session.getWordRange(range.start.row,range.start.column),needle=this.session.getTextRange(range)),this.$search.set({needle:needle})),this.$search.set(options),options.start||this.$search.set({start:range});var newRange=this.$search.find(this.session);return options.preventScroll?newRange:newRange?(this.revealRange(newRange,animate),newRange):(options.backwards?range.start=range.end:range.end=range.start,this.selection.setRange(range),void 0)},this.findNext=function(options,animate){this.find({skipCurrent:!0,backwards:!1},options,animate)},this.findPrevious=function(options,animate){this.find(options,{skipCurrent:!0,backwards:!0},animate)},this.revealRange=function(range,animate){this.$blockScrolling+=1,this.session.unfold(range),this.selection.setSelectionRange(range),this.$blockScrolling-=1;var scrollTop=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(range.start,range.end,.5),0!=animate&&this.renderer.animateScrolling(scrollTop)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._emit(\"destroy\",this)},this.setAutoScrollEditorIntoView=function(enable){if(enable!==!1){var rect,self=this,shouldScroll=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement(\"div\"));var scrollAnchor=this.$scrollAnchor;scrollAnchor.style.cssText=\"position:absolute\",this.container.insertBefore(scrollAnchor,this.container.firstChild);var onChangeSelection=this.on(\"changeSelection\",function(){shouldScroll=!0}),onBeforeRender=this.renderer.on(\"beforeRender\",function(){shouldScroll&&(rect=self.renderer.container.getBoundingClientRect())}),onAfterRender=this.renderer.on(\"afterRender\",function(){if(shouldScroll&&rect&&self.isFocused()){var renderer=self.renderer,pos=renderer.$cursorLayer.$pixelPos,config=renderer.layerConfig,top=pos.top-config.offset;shouldScroll=pos.top>=0&&0>top+rect.top?!0:pos.top\u003Cconfig.height&&pos.top+rect.top+config.lineHeight>window.innerHeight?!1:null,null!=shouldScroll&&(scrollAnchor.style.top=top+\"px\",scrollAnchor.style.left=pos.left+\"px\",scrollAnchor.style.height=config.lineHeight+\"px\",scrollAnchor.scrollIntoView(shouldScroll)),shouldScroll=rect=null}});this.setAutoScrollEditorIntoView=function(enable){enable!==!0&&(delete this.setAutoScrollEditorIntoView,this.removeEventListener(\"changeSelection\",onChangeSelection),this.renderer.removeEventListener(\"afterRender\",onAfterRender),this.renderer.removeEventListener(\"beforeRender\",onBeforeRender))}}}}).call(Editor.prototype),config.defineOptions(Editor.prototype,\"editor\",{selectionStyle:{set:function(style){this.onSelectionChange(),this._emit(\"changeSelectionStyle\",{data:style})},initialValue:\"line\"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(readOnly){this.textInput.setReadOnly(readOnly);var cursorLayer=this.renderer.$cursorLayer;cursorLayer&&cursorLayer.setBlinking(!readOnly)},initialValue:!1},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},hScrollBarAlwaysVisible:\"renderer\",highlightGutterLine:\"renderer\",animatedScroll:\"renderer\",showInvisibles:\"renderer\",showPrintMargin:\"renderer\",printMarginColumn:\"renderer\",printMargin:\"renderer\",fadeFoldWidgets:\"renderer\",showFoldWidgets:\"renderer\",showGutter:\"renderer\",displayIndentGuides:\"renderer\",fontSize:\"renderer\",fontFamily:\"renderer\",scrollSpeed:\"$mouseHandler\",dragDelay:\"$mouseHandler\",focusTimout:\"$mouseHandler\",firstLineNumber:\"session\",overwrite:\"session\",newLineMode:\"session\",useWorker:\"session\",useSoftTabs:\"session\",tabSize:\"session\",wrap:\"session\",foldStyle:\"session\"}),exports.Editor=Editor}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function(obj){if(\"object\"!=typeof obj)return obj;var copy=obj.constructor();for(var key in obj)copy[key]=\"object\"==typeof obj[key]?this.deepCopy(obj[key]):obj[key];return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/\u003C/g,\"<\")},exports.getMatchOffsets=function(string,regExp){var matches=[];return string.replace(regExp,function(str){matches.push({offset:arguments[arguments.length-2],length:str.length})}),matches},exports.deferredCall=function(fcn){var timer=null,callback=function(){timer=null,fcn()},deferred=function(timeout){return deferred.cancel(),timer=setTimeout(callback,timeout||0),deferred};return deferred.schedule=deferred,deferred.call=function(){return this.cancel(),fcn(),deferred},deferred.cancel=function(){return clearTimeout(timer),timer=null,deferred},deferred},exports.delayedCall=function(fcn,defaultTimeout){var timer=null,callback=function(){timer=null,fcn()},_self=function(timeout){timer&&clearTimeout(timer),timer=setTimeout(callback,timeout||defaultTimeout)};return _self.delay=_self,_self.schedule=function(timeout){null==timer&&(timer=setTimeout(callback,timeout||0))},_self.call=function(){this.cancel(),fcn()},_self.cancel=function(){timer&&clearTimeout(timer),timer=null},_self.isPending=function(){return timer},_self}}),ace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\"],function(acequire,exports){var event=acequire(\"../lib/event\"),useragent=acequire(\"../lib/useragent\"),dom=acequire(\"../lib/dom\"),lang=acequire(\"../lib/lang\"),BROKEN_SETDATA=18>useragent.isChrome,TextInput=function(parentNode,host){function resetSelection(isEmpty){if(!inComposition){if(inputHandler)selectionStart=0,selectionEnd=isEmpty?0:text.value.length-1;else var selectionStart=isEmpty?2:1,selectionEnd=2;try{text.setSelectionRange(selectionStart,selectionEnd)}catch(e){}}}function resetValue(){inComposition||(text.value=PLACEHOLDER,useragent.isWebKit&&syncValue.schedule())}function onContextMenuClose(){setTimeout(function(){tempStyle&&(text.style.cssText=tempStyle,tempStyle=\"\"),null==host.renderer.$keepTextAreaAtCursor&&(host.renderer.$keepTextAreaAtCursor=!0,host.renderer.$moveTextAreaToCursor())},0)}var text=dom.createElement(\"textarea\");text.className=\"ace_text-input\",useragent.isTouchPad&&text.setAttribute(\"x-palm-disable-auto-cap\",!0),text.wrap=\"off\",text.autocorrect=\"off\",text.autocapitalize=\"off\",text.spellcheck=!1,text.style.bottom=\"2000em\",parentNode.insertBefore(text,parentNode.firstChild);var PLACEHOLDER=\"\u0001\u0001\",cut=!1,copied=!1,pasted=!1,inComposition=!1,tempStyle=\"\",isSelectionEmpty=!0;try{var isFocused=document.activeElement===text}catch(e){}event.addListener(text,\"blur\",function(){host.onBlur(),isFocused=!1}),event.addListener(text,\"focus\",function(){isFocused=!0,host.onFocus(),resetSelection()}),this.focus=function(){text.focus()},this.blur=function(){text.blur()},this.isFocused=function(){return isFocused};var syncSelection=lang.delayedCall(function(){isFocused&&resetSelection(isSelectionEmpty)}),syncValue=lang.delayedCall(function(){inComposition||(text.value=PLACEHOLDER,isFocused&&resetSelection())});useragent.isWebKit||host.addEventListener(\"changeSelection\",function(){host.selection.isEmpty()!=isSelectionEmpty&&(isSelectionEmpty=!isSelectionEmpty,syncSelection.schedule())}),resetValue(),isFocused&&host.onFocus();var isAllSelected=function(text){return 0===text.selectionStart&&text.selectionEnd===text.value.length};if(!text.setSelectionRange&&text.createTextRange&&(text.setSelectionRange=function(selectionStart,selectionEnd){var range=this.createTextRange();range.collapse(!0),range.moveStart(\"character\",selectionStart),range.moveEnd(\"character\",selectionEnd),range.select()},isAllSelected=function(text){try{var range=text.ownerDocument.selection.createRange()}catch(e){}return range&&range.parentElement()==text?range.text==text.value:!1}),useragent.isOldIE){var inPropertyChange=!1,onPropertyChange=function(e){if(!inPropertyChange){var data=text.value;if(!inComposition&&data&&data!=PLACEHOLDER){if(e&&data==PLACEHOLDER[0])return syncProperty.schedule();sendText(data),inPropertyChange=!0,resetValue(),inPropertyChange=!1}}},syncProperty=lang.delayedCall(onPropertyChange);event.addListener(text,\"propertychange\",onPropertyChange);var keytable={13:1,27:1};event.addListener(text,\"keyup\",function(e){!inComposition||text.value&&!keytable[e.keyCode]||setTimeout(onCompositionEnd,0),129>(text.value.charCodeAt(0)||0)||(inComposition?onCompositionUpdate():onCompositionStart())})}var onSelect=function(){cut?cut=!1:copied?copied=!1:isAllSelected(text)?(host.selectAll(),resetSelection()):inputHandler&&resetSelection(host.selection.isEmpty())},inputHandler=null;this.setInputHandler=function(cb){inputHandler=cb},this.getInputHandler=function(){return inputHandler};var afterContextMenu=!1,sendText=function(data){inputHandler&&(data=inputHandler(data),inputHandler=null),pasted?(resetSelection(),data&&host.onPaste(data),pasted=!1):data==PLACEHOLDER[0]?afterContextMenu&&host.execCommand(\"del\",{source:\"ace\"}):(data.substring(0,2)==PLACEHOLDER?data=data.substr(2):data[0]==PLACEHOLDER[0]?data=data.substr(1):data[data.length-1]==PLACEHOLDER[0]&&(data=data.slice(0,-1)),data[data.length-1]==PLACEHOLDER[0]&&(data=data.slice(0,-1)),data&&host.onTextInput(data)),afterContextMenu&&(afterContextMenu=!1)},onInput=function(){if(!inComposition){var data=text.value;sendText(data),resetValue()}},onCut=function(e){var data=host.getCopyText();if(!data)return event.preventDefault(e),void 0;var clipboardData=e.clipboardData||window.clipboardData;if(clipboardData&&!BROKEN_SETDATA){var supported=clipboardData.setData(\"Text\",data);supported&&(host.onCut(),event.preventDefault(e))}supported||(cut=!0,text.value=data,text.select(),setTimeout(function(){cut=!1,resetValue(),resetSelection(),host.onCut()}))},onCopy=function(e){var data=host.getCopyText();if(!data)return event.preventDefault(e),void 0;var clipboardData=e.clipboardData||window.clipboardData;if(clipboardData&&!BROKEN_SETDATA){var supported=clipboardData.setData(\"Text\",data);supported&&(host.onCopy(),event.preventDefault(e))}supported||(copied=!0,text.value=data,text.select(),setTimeout(function(){copied=!1,resetValue(),resetSelection(),host.onCopy()}))},onPaste=function(e){var clipboardData=e.clipboardData||window.clipboardData;if(clipboardData){var data=clipboardData.getData(\"Text\");data&&host.onPaste(data),useragent.isIE&&setTimeout(resetSelection),event.preventDefault(e)}else text.value=\"\",pasted=!0};event.addCommandKeyListener(text,host.onCommandKey.bind(host)),event.addListener(text,\"select\",onSelect),event.addListener(text,\"input\",onInput),event.addListener(text,\"cut\",onCut),event.addListener(text,\"copy\",onCopy),event.addListener(text,\"paste\",onPaste),\"oncut\"in text&&\"oncopy\"in text&&\"onpaste\"in text||event.addListener(parentNode,\"keydown\",function(e){if((!useragent.isMac||e.metaKey)&&e.ctrlKey)switch(e.keyCode){case 67:onCopy(e);break;case 86:onPaste(e);break;case 88:onCut(e)}});var onCompositionStart=function(){inComposition={},host.onCompositionStart(),setTimeout(onCompositionUpdate,0),host.on(\"mousedown\",onCompositionEnd),host.selection.isEmpty()||(host.insert(\"\"),host.session.markUndoGroup(),host.selection.clearSelection()),host.session.markUndoGroup()},onCompositionUpdate=function(){if(inComposition&&(host.onCompositionUpdate(text.value),inComposition.lastValue&&host.undo(),inComposition.lastValue=text.value.replace(/\\x01/g,\"\"),inComposition.lastValue)){var r=host.selection.getRange();host.insert(inComposition.lastValue),host.session.markUndoGroup(),inComposition.range=host.selection.getRange(),host.selection.setRange(r),host.selection.clearSelection()}},onCompositionEnd=function(e){var c=inComposition;inComposition=!1;var timer=setTimeout(function(){var str=text.value.replace(/\\x01/g,\"\");inComposition||str!=c.lastValue||resetValue()});inputHandler=function(str){return clearTimeout(timer),str=str.replace(/\\x01/g,\"\"),str==c.lastValue?\"\":(str||c.lastValue&&host.undo(),str)},host.onCompositionEnd(),host.removeListener(\"mousedown\",onCompositionEnd),\"compositionend\"==e.type&&host.selection.setRange(c.range)},syncComposition=lang.delayedCall(onCompositionUpdate,50);event.addListener(text,\"compositionstart\",onCompositionStart),event.addListener(text,useragent.isGecko?\"text\":\"keyup\",function(){syncComposition.schedule()}),event.addListener(text,\"compositionend\",onCompositionEnd),this.getElement=function(){return text},this.setReadOnly=function(readOnly){text.readOnly=readOnly},this.onContextMenu=function(e){afterContextMenu=!0,tempStyle||(tempStyle=text.style.cssText),text.style.cssText=\"z-index:100000;\"+(useragent.isIE?\"opacity:0.1;\":\"\"),resetSelection(host.selection.isEmpty()),host._emit(\"nativecontextmenu\",{target:host});var rect=host.container.getBoundingClientRect(),style=dom.computedStyle(host.container),top=rect.top+(parseInt(style.borderTopWidth)||0),left=rect.left+(parseInt(rect.borderLeftWidth)||0),maxTop=rect.bottom-top-text.clientHeight,move=function(e){text.style.left=e.clientX-left-2+\"px\",text.style.top=Math.min(e.clientY-top-2,maxTop)+\"px\"};move(e),\"mousedown\"==e.type&&(host.renderer.$keepTextAreaAtCursor&&(host.renderer.$keepTextAreaAtCursor=null),useragent.isWin&&event.capture(host.container,move,onContextMenuClose))},this.onContextMenuClose=onContextMenuClose,useragent.isGecko||event.addListener(text,\"contextmenu\",function(e){host.textInput.onContextMenu(e),onContextMenuClose()})};exports.TextInput=TextInput}),ace.define(\"ace/mouse/mouse_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/mouse/default_handlers\",\"ace/mouse/default_gutter_handler\",\"ace/mouse/mouse_event\",\"ace/mouse/dragdrop\",\"ace/config\"],function(acequire,exports){var event=acequire(\"../lib/event\"),useragent=acequire(\"../lib/useragent\"),DefaultHandlers=acequire(\"./default_handlers\").DefaultHandlers,DefaultGutterHandler=acequire(\"./default_gutter_handler\").GutterHandler,MouseEvent=acequire(\"./mouse_event\").MouseEvent,DragdropHandler=acequire(\"./dragdrop\").DragdropHandler,config=acequire(\"../config\"),MouseHandler=function(editor){this.editor=editor,new DefaultHandlers(this),new DefaultGutterHandler(this),new DragdropHandler(this),event.addListener(editor.container,\"mousedown\",function(e){return editor.focus(),event.preventDefault(e)});var mouseTarget=editor.renderer.getMouseEventTarget();event.addListener(mouseTarget,\"click\",this.onMouseEvent.bind(this,\"click\")),event.addListener(mouseTarget,\"mousemove\",this.onMouseMove.bind(this,\"mousemove\")),event.addMultiMouseDownListener(mouseTarget,[300,300,250],this,\"onMouseEvent\"),event.addMouseWheelListener(editor.container,this.onMouseWheel.bind(this,\"mousewheel\"));var gutterEl=editor.renderer.$gutter;event.addListener(gutterEl,\"mousedown\",this.onMouseEvent.bind(this,\"guttermousedown\")),event.addListener(gutterEl,\"click\",this.onMouseEvent.bind(this,\"gutterclick\")),event.addListener(gutterEl,\"dblclick\",this.onMouseEvent.bind(this,\"gutterdblclick\")),event.addListener(gutterEl,\"mousemove\",this.onMouseEvent.bind(this,\"guttermousemove\"))};(function(){this.onMouseEvent=function(name,e){this.editor._emit(name,new MouseEvent(e,this.editor))},this.onMouseMove=function(name,e){var listeners=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;listeners&&listeners.length&&this.editor._emit(name,new MouseEvent(e,this.editor))},this.onMouseWheel=function(name,e){var mouseEvent=new MouseEvent(e,this.editor);mouseEvent.speed=2*this.$scrollSpeed,mouseEvent.wheelX=e.wheelX,mouseEvent.wheelY=e.wheelY,this.editor._emit(name,mouseEvent)},this.setState=function(state){this.state=state},this.captureMouse=function(ev,state){state&&this.setState(state),this.x=ev.x,this.y=ev.y,this.isMousePressed=!0;var renderer=this.editor.renderer;renderer.$keepTextAreaAtCursor&&(renderer.$keepTextAreaAtCursor=null);var self=this,onMouseMove=function(e){self.x=e.clientX,self.y=e.clientY},onCaptureEnd=function(e){clearInterval(timerId),onCaptureInterval(),self[self.state+\"End\"]&&self[self.state+\"End\"](e),self.$clickSelection=null,null==renderer.$keepTextAreaAtCursor&&(renderer.$keepTextAreaAtCursor=!0,renderer.$moveTextAreaToCursor()),self.isMousePressed=!1,self.onMouseEvent(\"mouseup\",e)},onCaptureInterval=function(){self[self.state]&&self[self.state]()};if(useragent.isOldIE&&\"dblclick\"==ev.domEvent.type)return setTimeout(function(){onCaptureEnd(ev.domEvent)});event.capture(this.editor.container,onMouseMove,onCaptureEnd);var timerId=setInterval(onCaptureInterval,20)}}).call(MouseHandler.prototype),config.defineOptions(MouseHandler.prototype,\"mouseHandler\",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:150},focusTimout:{initialValue:0}}),exports.MouseHandler=MouseHandler}),ace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/useragent\"],function(acequire,exports){function DefaultHandlers(mouseHandler){mouseHandler.$clickSelection=null;var editor=mouseHandler.editor;editor.setDefaultHandler(\"mousedown\",this.onMouseDown.bind(mouseHandler)),editor.setDefaultHandler(\"dblclick\",this.onDoubleClick.bind(mouseHandler)),editor.setDefaultHandler(\"tripleclick\",this.onTripleClick.bind(mouseHandler)),editor.setDefaultHandler(\"quadclick\",this.onQuadClick.bind(mouseHandler)),editor.setDefaultHandler(\"mousewheel\",this.onMouseWheel.bind(mouseHandler));var exports=[\"select\",\"startSelect\",\"drag\",\"dragEnd\",\"dragWait\",\"dragWaitEnd\",\"startDrag\",\"focusWait\"];exports.forEach(function(x){mouseHandler[x]=this[x]},this),mouseHandler.selectByLines=this.extendSelectionBy.bind(mouseHandler,\"getLineRange\"),mouseHandler.selectByWords=this.extendSelectionBy.bind(mouseHandler,\"getWordRange\")}function calcDistance(ax,ay,bx,by){return Math.sqrt(Math.pow(bx-ax,2)+Math.pow(by-ay,2))}function calcRangeOrientation(range,cursor){if(range.start.row==range.end.row)var cmp=2*cursor.column-range.start.column-range.end.column;else var cmp=2*cursor.row-range.start.row-range.end.row;return 0>cmp?{cursor:range.start,anchor:range.end}:{cursor:range.end,anchor:range.start}}var dom=acequire(\"../lib/dom\");acequire(\"../lib/useragent\");var DRAG_OFFSET=0;(function(){this.onMouseDown=function(ev){var inSelection=ev.inSelection(),pos=ev.getDocumentPosition();this.mousedownEvent=ev;var editor=this.editor,button=ev.getButton();if(0!==button){var selectionRange=editor.getSelectionRange(),selectionEmpty=selectionRange.isEmpty();return selectionEmpty&&(editor.moveCursorToPosition(pos),editor.selection.clearSelection()),editor.textInput.onContextMenu(ev.domEvent),void 0}return!inSelection||editor.isFocused()||(editor.focus(),!this.$focusTimout||this.$clickSelection||editor.inMultiSelectMode)?(!inSelection||this.$clickSelection||ev.getShiftKey()||editor.inMultiSelectMode?this.startSelect(pos):inSelection&&(this.mousedownEvent.time=(new Date).getTime(),this.setState(\"dragWait\")),this.captureMouse(ev),ev.preventDefault()):(this.setState(\"focusWait\"),this.captureMouse(ev),ev.preventDefault())},this.startSelect=function(pos){pos=pos||this.editor.renderer.screenToTextCoordinates(this.x,this.y),this.mousedownEvent.getShiftKey()?this.editor.selection.selectToPosition(pos):this.$clickSelection||(this.editor.moveCursorToPosition(pos),this.editor.selection.clearSelection()),this.setState(\"select\")},this.select=function(){var anchor,editor=this.editor,cursor=editor.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var cmp=this.$clickSelection.comparePoint(cursor);if(-1==cmp)anchor=this.$clickSelection.end;else if(1==cmp)anchor=this.$clickSelection.start;else{var orientedRange=calcRangeOrientation(this.$clickSelection,cursor);cursor=orientedRange.cursor,anchor=orientedRange.anchor}editor.selection.setSelectionAnchor(anchor.row,anchor.column)}editor.selection.selectToPosition(cursor),editor.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(unitName){var anchor,editor=this.editor,cursor=editor.renderer.screenToTextCoordinates(this.x,this.y),range=editor.selection[unitName](cursor.row,cursor.column);if(this.$clickSelection){var cmpStart=this.$clickSelection.comparePoint(range.start),cmpEnd=this.$clickSelection.comparePoint(range.end);if(-1==cmpStart&&0>=cmpEnd)anchor=this.$clickSelection.end,(range.end.row!=cursor.row||range.end.column!=cursor.column)&&(cursor=range.start);else if(1==cmpEnd&&cmpStart>=0)anchor=this.$clickSelection.start,(range.start.row!=cursor.row||range.start.column!=cursor.column)&&(cursor=range.end);else if(-1==cmpStart&&1==cmpEnd)cursor=range.end,anchor=range.start;else{var orientedRange=calcRangeOrientation(this.$clickSelection,cursor);cursor=orientedRange.cursor,anchor=orientedRange.anchor}editor.selection.setSelectionAnchor(anchor.row,anchor.column)}editor.selection.selectToPosition(cursor),editor.renderer.scrollCursorIntoView()},this.startDrag=function(){var editor=this.editor;this.setState(\"drag\"),this.dragRange=editor.getSelectionRange();var style=editor.getSelectionStyle();this.dragSelectionMarker=editor.session.addMarker(this.dragRange,\"ace_selection\",style),editor.clearSelection(),dom.addCssClass(editor.container,\"ace_dragging\"),this.$dragKeybinding||(this.$dragKeybinding={handleKeyboard:function(data,hashId,keyString){return\"esc\"==keyString?{command:this.command}:void 0},command:{exec:function(editor){var self=editor.$mouseHandler;self.dragCursor=null,self.dragEnd(),self.startSelect()}}}),editor.keyBinding.addKeyboardHandler(this.$dragKeybinding)},this.focusWait=function(){var distance=calcDistance(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),time=(new Date).getTime();(distance>DRAG_OFFSET||time-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.dragWait=function(){var distance=calcDistance(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),time=(new Date).getTime(),editor=this.editor;distance>DRAG_OFFSET?this.startSelect(this.mousedownEvent.getDocumentPosition()):time-this.mousedownEvent.time>editor.$mouseHandler.$dragDelay&&this.startDrag()},this.dragWaitEnd=function(e){this.mousedownEvent.domEvent=e,this.startSelect()},this.drag=function(){var editor=this.editor;this.dragCursor=editor.renderer.screenToTextCoordinates(this.x,this.y),editor.moveCursorToPosition(this.dragCursor),editor.renderer.scrollCursorIntoView()},this.dragEnd=function(e){var editor=this.editor,dragCursor=this.dragCursor,dragRange=this.dragRange;if(dom.removeCssClass(editor.container,\"ace_dragging\"),editor.session.removeMarker(this.dragSelectionMarker),editor.keyBinding.removeKeyboardHandler(this.$dragKeybinding),dragCursor){if(editor.clearSelection(),e&&(e.ctrlKey||e.altKey)){var session=editor.session,newRange=dragRange;newRange.end=session.insert(dragCursor,session.getTextRange(dragRange)),newRange.start=dragCursor}else{if(dragRange.contains(dragCursor.row,dragCursor.column))return;var newRange=editor.moveText(dragRange,dragCursor)}newRange&&editor.selection.setSelectionRange(newRange)}},this.onDoubleClick=function(ev){var pos=ev.getDocumentPosition(),editor=this.editor,session=editor.session,range=session.getBracketRange(pos);return range?(range.isEmpty()&&(range.start.column--,range.end.column++),this.$clickSelection=range,this.setState(\"select\"),void 0):(this.$clickSelection=editor.selection.getWordRange(pos.row,pos.column),this.setState(\"selectByWords\"),void 0)},this.onTripleClick=function(ev){var pos=ev.getDocumentPosition(),editor=this.editor;this.setState(\"selectByLines\"),this.$clickSelection=editor.selection.getLineRange(pos.row)},this.onQuadClick=function(){var editor=this.editor;editor.selectAll(),this.$clickSelection=editor.getSelectionRange(),this.setState(\"null\")},this.onMouseWheel=function(ev){if(!ev.getShiftKey()&&!ev.getAccelKey()){var t=ev.domEvent.timeStamp,dt=t-(this.$lastScrollTime||0),editor=this.editor,isScrolable=editor.renderer.isScrollableBy(ev.wheelX*ev.speed,ev.wheelY*ev.speed);return isScrolable||200>dt?(this.$lastScrollTime=t,editor.renderer.scrollBy(ev.wheelX*ev.speed,ev.wheelY*ev.speed),ev.stop()):void 0}}}).call(DefaultHandlers.prototype),exports.DefaultHandlers=DefaultHandlers}),ace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\"],function(acequire,exports){function GutterHandler(mouseHandler){function createTooltip(){tooltip=dom.createElement(\"div\"),tooltip.className=\"ace_gutter-tooltip\",tooltip.style.display=\"none\",editor.container.appendChild(tooltip)}function showTooltip(){tooltip||createTooltip();var row=mouseEvent.getDocumentPosition().row,annotation=gutter.$annotations[row];if(!annotation)return hideTooltip();var maxRow=editor.session.getLength();if(row==maxRow){var screenRow=editor.renderer.pixelToScreenCoordinates(0,mouseEvent.y).row,pos=mouseEvent.$pos;if(screenRow>editor.session.documentToScreenRow(pos.row,pos.column))return hideTooltip()}tooltipAnnotation!=annotation&&(tooltipAnnotation=annotation.text.join(\"\u003Cbr/>\"),tooltip.style.display=\"block\",tooltip.innerHTML=tooltipAnnotation,editor.on(\"mousewheel\",hideTooltip),moveTooltip(mouseEvent))}function hideTooltip(){tooltipTimeout&&(tooltipTimeout=clearTimeout(tooltipTimeout)),tooltipAnnotation&&(tooltip.style.display=\"none\",tooltipAnnotation=null,editor.removeEventListener(\"mousewheel\",hideTooltip))}function moveTooltip(e){var rect=editor.renderer.$gutter.getBoundingClientRect();tooltip.style.left=e.x+15+\"px\",e.y+3*editor.renderer.lineHeight+15\u003Crect.bottom?(tooltip.style.bottom=\"\",tooltip.style.top=e.y+15+\"px\"):(tooltip.style.top=\"\",tooltip.style.bottom=rect.bottom-e.y+5+\"px\")}var editor=mouseHandler.editor,gutter=editor.renderer.$gutterLayer;mouseHandler.editor.setDefaultHandler(\"guttermousedown\",function(e){if(editor.isFocused()){var gutterRegion=gutter.getRegion(e);if(\"foldWidgets\"!=gutterRegion){var row=e.getDocumentPosition().row,selection=editor.session.selection;if(e.getShiftKey())selection.selectTo(row,0);else{if(2==e.domEvent.detail)return editor.selectAll(),e.preventDefault();mouseHandler.$clickSelection=editor.selection.getLineRange(row)}return mouseHandler.captureMouse(e,\"selectByLines\"),e.preventDefault()}}});var tooltipTimeout,mouseEvent,tooltip,tooltipAnnotation;mouseHandler.editor.setDefaultHandler(\"guttermousemove\",function(e){var target=e.domEvent.target||e.domEvent.srcElement;return dom.hasCssClass(target,\"ace_fold-widget\")?hideTooltip():(tooltipAnnotation&&moveTooltip(e),mouseEvent=e,tooltipTimeout||(tooltipTimeout=setTimeout(function(){tooltipTimeout=null,mouseEvent&&!mouseHandler.isMousePressed?showTooltip():hideTooltip()},50)),void 0)}),event.addListener(editor.renderer.$gutter,\"mouseout\",function(){mouseEvent=null,tooltipAnnotation&&!tooltipTimeout&&(tooltipTimeout=setTimeout(function(){tooltipTimeout=null,hideTooltip()},50))})}var dom=acequire(\"../lib/dom\"),event=acequire(\"../lib/event\");exports.GutterHandler=GutterHandler}),ace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"],function(acequire,exports){var event=acequire(\"../lib/event\"),useragent=acequire(\"../lib/useragent\"),MouseEvent=exports.MouseEvent=function(domEvent,editor){this.domEvent=domEvent,this.editor=editor,this.x=this.clientX=domEvent.clientX,this.y=this.clientY=domEvent.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){event.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){event.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var editor=this.editor;if(editor.getReadOnly())this.$inSelection=!1;else{var selectionRange=editor.getSelectionRange();if(selectionRange.isEmpty())this.$inSelection=!1;else{var pos=this.getDocumentPosition();this.$inSelection=selectionRange.contains(pos.row,pos.column)}}return this.$inSelection},this.getButton=function(){return event.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=useragent.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(MouseEvent.prototype)}),ace.define(\"ace/mouse/dragdrop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"],function(acequire,exports){var event=acequire(\"../lib/event\"),DragdropHandler=function(mouseHandler){function addDragMarker(){range=editor.selection.toOrientedRange(),dragSelectionMarker=editor.session.addMarker(range,\"ace_selection\",editor.getSelectionStyle()),editor.clearSelection(),clearInterval(timerId),timerId=setInterval(onDragInterval,20),counter=0,event.addListener(document,\"mousemove\",onMouseMove)}function clearDragMarker(){clearInterval(timerId),editor.session.removeMarker(dragSelectionMarker),dragSelectionMarker=null,editor.selection.fromOrientedRange(range),counter=0,event.removeListener(document,\"mousemove\",onMouseMove)}function onMouseMove(){null==onMouseMoveTimer&&(onMouseMoveTimer=setTimeout(function(){null!=onMouseMoveTimer&&dragSelectionMarker&&clearDragMarker()},20))}var dragSelectionMarker,x,y,timerId,range,dragCursor,editor=mouseHandler.editor,counter=0,mouseTarget=editor.container;event.addListener(mouseTarget,\"dragenter\",function(e){if(!editor.getReadOnly()){var types=e.dataTransfer.types;if(!types||-1!==Array.prototype.indexOf.call(types,\"text/plain\"))return dragSelectionMarker||addDragMarker(),counter++,event.preventDefault(e)}}),event.addListener(mouseTarget,\"dragover\",function(e){if(!editor.getReadOnly()){var types=e.dataTransfer.types;if(!types||-1!==Array.prototype.indexOf.call(types,\"text/plain\"))return null!==onMouseMoveTimer&&(onMouseMoveTimer=null),x=e.clientX,y=e.clientY,event.preventDefault(e)}});var onDragInterval=function(){dragCursor=editor.renderer.screenToTextCoordinates(x,y),editor.moveCursorToPosition(dragCursor),editor.renderer.scrollCursorIntoView()};event.addListener(mouseTarget,\"dragleave\",function(e){return counter--,0>=counter&&dragSelectionMarker?(clearDragMarker(),event.preventDefault(e)):void 0}),event.addListener(mouseTarget,\"drop\",function(e){return dragSelectionMarker?(range.end=editor.session.insert(dragCursor,e.dataTransfer.getData(\"Text\")),range.start=dragCursor,clearDragMarker(),editor.focus(),event.preventDefault(e)):void 0});var onMouseMoveTimer=null};exports.DragdropHandler=DragdropHandler}),ace.define(\"ace/config\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\"],function(acequire,exports,module){\"no use strict\";\nfunction deHyphenate(str){return str.replace(/-(.)/g,function(m,m1){return m1.toUpperCase()})}var lang=acequire(\"./lib/lang\"),oop=acequire(\"./lib/oop\"),net=acequire(\"./lib/net\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,global=function(){return this}(),options={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:\"\",suffix:\".js\",$moduleUrls:{}};exports.get=function(key){if(!options.hasOwnProperty(key))throw Error(\"Unknown config key: \"+key);return options[key]},exports.set=function(key,value){if(!options.hasOwnProperty(key))throw Error(\"Unknown config key: \"+key);options[key]=value},exports.all=function(){return lang.copyObject(options)},oop.implement(exports,EventEmitter),exports.moduleUrl=function(name,component){if(options.$moduleUrls[name])return options.$moduleUrls[name];var parts=name.split(\"/\");component=component||parts[parts.length-2]||\"\";var base=parts[parts.length-1].replace(component,\"\").replace(/(^[\\-_])|([\\-_]$)/,\"\");!base&&parts.length>1&&(base=parts[parts.length-2]);var path=options[component+\"Path\"];return null==path&&(path=options.basePath),path&&\"/\"!=path.slice(-1)&&(path+=\"/\"),path+component+\"-\"+base+this.get(\"suffix\")},exports.setModuleUrl=function(name,subst){return options.$moduleUrls[name]=subst},exports.$loading={},exports.loadModule=function(moduleName,onLoad){var module,moduleType;Array.isArray(moduleName)&&(moduleType=moduleName[0],moduleName=moduleName[1]);try{module=acequire(moduleName)}catch(e){}if(module&&!exports.$loading[moduleName])return onLoad&&onLoad(module);if(exports.$loading[moduleName]||(exports.$loading[moduleName]=[]),exports.$loading[moduleName].push(onLoad),!(exports.$loading[moduleName].length>1)){var afterLoad=function(){acequire([moduleName],function(module){exports._emit(\"load.module\",{name:moduleName,module:module});var listeners=exports.$loading[moduleName];exports.$loading[moduleName]=null,listeners.forEach(function(onLoad){onLoad&&onLoad(module)})})};return exports.get(\"packaged\")?(net.loadScript(exports.moduleUrl(moduleName,moduleType),afterLoad),void 0):afterLoad()}},exports.init=function(){if(options.packaged=acequire.packaged||module.packaged||global.define&&define.packaged,!global.document)return\"\";for(var scriptOptions={},scriptUrl=\"\",scripts=document.getElementsByTagName(\"script\"),i=0;scripts.length>i;i++){var script=scripts[i],src=script.src||script.getAttribute(\"src\");if(src){for(var attributes=script.attributes,j=0,l=attributes.length;l>j;j++){var attr=attributes[j];0===attr.name.indexOf(\"data-ace-\")&&(scriptOptions[deHyphenate(attr.name.replace(/^data-ace-/,\"\"))]=attr.value)}var m=src.match(/^(.*)\\/ace(\\-\\w+)?\\.js(\\?|$)/);m&&(scriptUrl=m[1])}}scriptUrl&&(scriptOptions.base=scriptOptions.base||scriptUrl,scriptOptions.packaged=!0),scriptOptions.basePath=scriptOptions.base,scriptOptions.workerPath=scriptOptions.workerPath||scriptOptions.base,scriptOptions.modePath=scriptOptions.modePath||scriptOptions.base,scriptOptions.themePath=scriptOptions.themePath||scriptOptions.base,delete scriptOptions.base;for(var key in scriptOptions)scriptOptions[key]!==void 0&&exports.set(key,scriptOptions[key])};var optionsProvider={setOptions:function(optList){Object.keys(optList).forEach(function(key){this.setOption(key,optList[key])},this)},getOptions:function(a){var b={};return Object.keys(a).forEach(function(key){b[key]=this.getOption(key)},this),b},setOption:function(name,value){if(this[\"$\"+name]!==value){var opt=this.$options[name];if(!opt)return void 0;if(opt.forwardTo)return this[opt.forwardTo]&&this[opt.forwardTo].setOption(name,value);opt.handlesSet||(this[\"$\"+name]=value),opt&&opt.set&&opt.set.call(this,value)}},getOption:function(name){var opt=this.$options[name];return opt?opt.forwardTo?this[opt.forwardTo]&&this[opt.forwardTo].getOption(name):opt&&opt.get?opt.get.call(this):this[\"$\"+name]:void 0}},defaultOptions={};exports.defineOptions=function(obj,path,options){return obj.$options||(defaultOptions[path]=obj.$options={}),Object.keys(options).forEach(function(key){var opt=options[key];\"string\"==typeof opt&&(opt={forwardTo:opt}),opt.name||(opt.name=key),obj.$options[opt.name]=opt,\"initialValue\"in opt&&(obj[\"$\"+opt.name]=opt.initialValue)}),oop.implement(obj,optionsProvider),this},exports.resetOptions=function(obj){Object.keys(obj.$options).forEach(function(key){var opt=obj.$options[key];\"value\"in opt&&obj.setOption(key,opt.value)})},exports.setDefaultValue=function(path,name,value){var opts=defaultOptions[path]||(defaultOptions[path]={});opts[name]&&(opts.forwardTo?exports.setDefaultValue(opts.forwardTo,name,value):opts[name].value=value)},exports.setDefaultValues=function(path,optionHash){Object.keys(optionHash).forEach(function(key){exports.setDefaultValue(path,key,optionHash[key])})}}),ace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(acequire,exports){var dom=acequire(\"./dom\");exports.get=function(url,callback){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,!0),xhr.onreadystatechange=function(){4===xhr.readyState&&callback(xhr.responseText)},xhr.send(null)},exports.loadScript=function(path,callback){var head=dom.getDocumentHead(),s=document.createElement(\"script\");s.src=path,head.appendChild(s),s.onload=s.onreadystatechange=function(_,isAbort){(isAbort||!s.readyState||\"loaded\"==s.readyState||\"complete\"==s.readyState)&&(s=s.onload=s.onreadystatechange=null,isAbort||callback())}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault);for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners)for(var i=0;listeners.length>i;i++)listeners[i](e,this)},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){if(this._defaultHandlers=this._defaultHandlers||{},this._defaultHandlers[eventName])throw Error(\"The default handler for '\"+eventName+\"' is already set\");this._defaultHandlers[eventName]=callback},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/mouse/fold_handler\",[\"require\",\"exports\",\"module\"],function(acequire,exports){function FoldHandler(editor){editor.on(\"click\",function(e){var position=e.getDocumentPosition(),session=editor.session,fold=session.getFoldAt(position.row,position.column,1);fold&&(e.getAccelKey()?session.removeFold(fold):session.expandFold(fold),e.stop())}),editor.on(\"gutterclick\",function(e){var gutterRegion=editor.renderer.$gutterLayer.getRegion(e);if(\"foldWidgets\"==gutterRegion){var row=e.getDocumentPosition().row,session=editor.session;session.foldWidgets&&session.foldWidgets[row]&&editor.session.onFoldWidgetClick(row,e),editor.isFocused()||editor.focus(),e.stop()}}),editor.on(\"gutterdblclick\",function(e){var gutterRegion=editor.renderer.$gutterLayer.getRegion(e);if(\"foldWidgets\"==gutterRegion){var row=e.getDocumentPosition().row,session=editor.session,data=session.getParentFoldRangeData(row,!0),range=data.range||data.firstRange;if(range){var row=range.start.row,fold=session.getFoldAt(row,session.getLine(row).length,1);fold?session.removeFold(fold):(session.addFold(\"...\",range),editor.renderer.scrollCursorIntoView({row:range.start.row,column:0}))}e.stop()}})}exports.FoldHandler=FoldHandler}),ace.define(\"ace/keyboard/keybinding\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/event\"],function(acequire,exports){var keyUtil=acequire(\"../lib/keys\"),event=acequire(\"../lib/event\"),KeyBinding=function(editor){this.$editor=editor,this.$data={},this.$handlers=[],this.setDefaultHandler(editor.commands)};(function(){this.setDefaultHandler=function(kb){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=kb,this.addKeyboardHandler(kb,0),this.$data={editor:this.$editor}},this.setKeyboardHandler=function(kb){var h=this.$handlers;if(h[h.length-1]!=kb){for(;h[h.length-1]&&h[h.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(h[h.length-1]);this.addKeyboardHandler(kb,1)}},this.addKeyboardHandler=function(kb,pos){if(kb){var i=this.$handlers.indexOf(kb);-1!=i&&this.$handlers.splice(i,1),void 0==pos?this.$handlers.push(kb):this.$handlers.splice(pos,0,kb),-1==i&&kb.attach&&kb.attach(this.$editor)}},this.removeKeyboardHandler=function(kb){var i=this.$handlers.indexOf(kb);return-1==i?!1:(this.$handlers.splice(i,1),kb.detach&&kb.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.$callKeyboardHandlers=function(hashId,keyString,keyCode,e){for(var toExecute,success=!1,commands=this.$editor.commands,i=this.$handlers.length;i--&&(toExecute=this.$handlers[i].handleKeyboard(this.$data,hashId,keyString,keyCode,e),!(toExecute&&toExecute.command&&(success=\"null\"==toExecute.command?1!=toExecute.passEvent:commands.exec(toExecute.command,this.$editor,toExecute.args,e),success&&e&&-1!=hashId&&event.stopEvent(e),success))););return success},this.onCommandKey=function(e,hashId,keyCode){var keyString=keyUtil.keyCodeToString(keyCode);this.$callKeyboardHandlers(hashId,keyString,keyCode,e)},this.onTextInput=function(text){var success=this.$callKeyboardHandlers(-1,text);success||this.$editor.commands.exec(\"insertstring\",this.$editor,text)}}).call(KeyBinding.prototype),exports.KeyBinding=KeyBinding}),ace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),lang=acequire(\"./lib/lang\"),config=acequire(\"./config\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Selection=acequire(\"./selection\").Selection,TextMode=acequire(\"./mode/text\").Mode,Range=acequire(\"./range\").Range,Document=acequire(\"./document\").Document,BackgroundTokenizer=acequire(\"./background_tokenizer\").BackgroundTokenizer,SearchHighlight=acequire(\"./search_highlight\").SearchHighlight,EditSession=function(text,mode){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){return this.join(\"\\n\")},this.on(\"changeFold\",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this),\"object\"==typeof text&&text.getLine||(text=new Document(text)),this.setDocument(text),this.selection=new Selection(this),this.setMode(mode),config.resetOptions(this),config._emit(\"session\",this)};(function(){function isFullWidth(c){return 4352>c?!1:c>=4352&&4447>=c||c>=4515&&4519>=c||c>=4602&&4607>=c||c>=9001&&9002>=c||c>=11904&&11929>=c||c>=11931&&12019>=c||c>=12032&&12245>=c||c>=12272&&12283>=c||c>=12288&&12350>=c||c>=12353&&12438>=c||c>=12441&&12543>=c||c>=12549&&12589>=c||c>=12593&&12686>=c||c>=12688&&12730>=c||c>=12736&&12771>=c||c>=12784&&12830>=c||c>=12832&&12871>=c||c>=12880&&13054>=c||c>=13056&&19903>=c||c>=19968&&42124>=c||c>=42128&&42182>=c||c>=43360&&43388>=c||c>=44032&&55203>=c||c>=55216&&55238>=c||c>=55243&&55291>=c||c>=63744&&64255>=c||c>=65040&&65049>=c||c>=65072&&65106>=c||c>=65108&&65126>=c||c>=65128&&65131>=c||c>=65281&&65376>=c||c>=65504&&65510>=c}oop.implement(this,EventEmitter),this.setDocument=function(doc){this.doc&&this.doc.removeListener(\"change\",this.$onChange),this.doc=doc,doc.on(\"change\",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(docRow){if(!docRow)return this.$docRowCache=[],this.$screenRowCache=[],void 0;var l=this.$docRowCache.length,i=this.$getRowCacheIndex(this.$docRowCache,docRow)+1;l>i&&(this.$docRowCache.splice(i,l),this.$screenRowCache.splice(i,l))},this.$getRowCacheIndex=function(cacheArray,val){for(var low=0,hi=cacheArray.length-1;hi>=low;){var mid=low+hi>>1,c=cacheArray[mid];if(val>c)low=mid+1;else{if(!(c>val))return mid;hi=mid-1}}return low-1},this.resetCaches=function(){this.$modified=!0,this.$wrapData=[],this.$rowLengthCache=[],this.$resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(e){var fold=e.data;this.$resetRowCache(fold.start.row)},this.onChange=function(e){var delta=e.data;this.$modified=!0,this.$resetRowCache(delta.range.start.row);var removedFolds=this.$updateInternalDataOnChange(e);this.$fromUndo||!this.$undoManager||delta.ignore||(this.$deltasDoc.push(delta),removedFolds&&0!=removedFolds.length&&this.$deltasFold.push({action:\"removeFolds\",folds:removedFolds}),this.$informUndoManager.schedule()),this.bgTokenizer.$updateOnChange(delta),this._emit(\"change\",e)},this.setValue=function(text){this.doc.setValue(text),this.selection.moveCursorTo(0,0),this.selection.clearSelection(),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.getUndoManager().reset()},this.getValue=this.toString=function(){return this.doc.getValue()},this.getSelection=function(){return this.selection},this.getState=function(row){return this.bgTokenizer.getState(row)},this.getTokens=function(row){return this.bgTokenizer.getTokens(row)},this.getTokenAt=function(row,column){var token,tokens=this.bgTokenizer.getTokens(row),c=0;if(null==column)i=tokens.length-1,c=this.getLine(row).length;else for(var i=0;tokens.length>i&&(c+=tokens[i].value.length,!(c>=column));i++);return(token=tokens[i])?(token.index=i,token.start=c-token.value.length,token):null},this.setUndoManager=function(undoManager){if(this.$undoManager=undoManager,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),undoManager){var self=this;this.$syncInformUndoManager=function(){self.$informUndoManager.cancel(),self.$deltasFold.length&&(self.$deltas.push({group:\"fold\",deltas:self.$deltasFold}),self.$deltasFold=[]),self.$deltasDoc.length&&(self.$deltas.push({group:\"doc\",deltas:self.$deltasDoc}),self.$deltasDoc=[]),self.$deltas.length>0&&undoManager.execute({action:\"aceupdate\",args:[self.$deltas,self]}),self.$deltas=[]},this.$informUndoManager=lang.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?lang.stringRepeat(\" \",this.getTabSize()):\"\t\"},this.setUseSoftTabs=function(val){this.setOption(\"useSoftTabs\",val)},this.getUseSoftTabs=function(){return this.$useSoftTabs},this.setTabSize=function(tabSize){this.setOption(\"tabSize\",tabSize)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(position){return this.$useSoftTabs&&0==position.column%this.$tabSize},this.$overwrite=!1,this.setOverwrite=function(overwrite){this.setOption(\"overwrite\",overwrite)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(row,className){this.$decorations[row]||(this.$decorations[row]=\"\"),this.$decorations[row]+=\" \"+className,this._emit(\"changeBreakpoint\",{})},this.removeGutterDecoration=function(row,className){this.$decorations[row]=(this.$decorations[row]||\"\").replace(\" \"+className,\"\"),this._emit(\"changeBreakpoint\",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(rows){this.$breakpoints=[];for(var i=0;rows.length>i;i++)this.$breakpoints[rows[i]]=\"ace_breakpoint\";this._emit(\"changeBreakpoint\",{})},this.clearBreakpoints=function(){this.$breakpoints=[],this._emit(\"changeBreakpoint\",{})},this.setBreakpoint=function(row,className){void 0===className&&(className=\"ace_breakpoint\"),className?this.$breakpoints[row]=className:delete this.$breakpoints[row],this._emit(\"changeBreakpoint\",{})},this.clearBreakpoint=function(row){delete this.$breakpoints[row],this._emit(\"changeBreakpoint\",{})},this.addMarker=function(range,clazz,type,inFront){var id=this.$markerId++,marker={range:range,type:type||\"line\",renderer:\"function\"==typeof type?type:null,clazz:clazz,inFront:!!inFront,id:id};return inFront?(this.$frontMarkers[id]=marker,this._emit(\"changeFrontMarker\")):(this.$backMarkers[id]=marker,this._emit(\"changeBackMarker\")),id},this.addDynamicMarker=function(marker,inFront){if(marker.update){var id=this.$markerId++;return marker.id=id,marker.inFront=!!inFront,inFront?(this.$frontMarkers[id]=marker,this._emit(\"changeFrontMarker\")):(this.$backMarkers[id]=marker,this._emit(\"changeBackMarker\")),marker}},this.removeMarker=function(markerId){var marker=this.$frontMarkers[markerId]||this.$backMarkers[markerId];if(marker){var markers=marker.inFront?this.$frontMarkers:this.$backMarkers;marker&&(delete markers[markerId],this._emit(marker.inFront?\"changeFrontMarker\":\"changeBackMarker\"))}},this.getMarkers=function(inFront){return inFront?this.$frontMarkers:this.$backMarkers},this.highlight=function(re){if(!this.$searchHighlight){var highlight=new SearchHighlight(null,\"ace_selected-word\",\"text\");this.$searchHighlight=this.addDynamicMarker(highlight)}this.$searchHighlight.setRegexp(re)},this.highlightLines=function(startRow,endRow,clazz,inFront){\"number\"!=typeof endRow&&(clazz=endRow,endRow=startRow),clazz||(clazz=\"ace_step\");var range=new Range(startRow,0,endRow,1/0);return range.id=this.addMarker(range,clazz,\"fullLine\",inFront),range},this.setAnnotations=function(annotations){this.$annotations=annotations,this._emit(\"changeAnnotation\",{})},this.getAnnotations=function(){return this.$annotations||[]},this.clearAnnotations=function(){this.setAnnotations([])},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r?\\n)/m);this.$autoNewLine=match?match[1]:\"\\n\"},this.getWordRange=function(row,column){var line=this.getLine(row),inToken=!1;if(column>0&&(inToken=!!line.charAt(column-1).match(this.tokenRe)),inToken||(inToken=!!line.charAt(column).match(this.tokenRe)),inToken)var re=this.tokenRe;else if(/^\\s+$/.test(line.slice(column-1,column+1)))var re=/\\s/;else var re=this.nonTokenRe;var start=column;if(start>0){do start--;while(start>=0&&line.charAt(start).match(re));start++}for(var end=column;line.length>end&&line.charAt(end).match(re);)end++;return new Range(row,start,row,end)},this.getAWordRange=function(row,column){for(var wordRange=this.getWordRange(row,column),line=this.getLine(wordRange.end.row);line.charAt(wordRange.end.column).match(/[ \\t]/);)wordRange.end.column+=1;return wordRange},this.setNewLineMode=function(newLineMode){this.doc.setNewLineMode(newLineMode)},this.getNewLineMode=function(){return this.doc.getNewLineMode()},this.setUseWorker=function(useWorker){this.setOption(\"useWorker\",useWorker)},this.getUseWorker=function(){return this.$useWorker},this.onReloadTokenizer=function(e){var rows=e.data;this.bgTokenizer.start(rows.first),this._emit(\"tokenizerUpdate\",e)},this.$modes={},this.$mode=null,this.$modeId=null,this.setMode=function(mode){if(mode&&\"object\"==typeof mode){if(mode.getTokenizer)return this.$onChangeMode(mode);var options=mode,path=options.path}else path=mode||\"ace/mode/text\";return this.$modes[\"ace/mode/text\"]||(this.$modes[\"ace/mode/text\"]=new TextMode),this.$modes[path]&&!options?this.$onChangeMode(this.$modes[path]):(this.$modeId=path,config.loadModule([\"mode\",path],function(m){return this.$modeId===path?this.$modes[path]&&!options?this.$onChangeMode(this.$modes[path]):(m&&m.Mode&&(m=new m.Mode(options),options||(this.$modes[path]=m,m.$id=path),this.$onChangeMode(m)),void 0):void 0}.bind(this)),this.$mode||this.$onChangeMode(this.$modes[\"ace/mode/text\"],!0),void 0)},this.$onChangeMode=function(mode,$isPlaceholder){if(this.$mode!==mode){this.$mode=mode,this.$stopWorker(),this.$useWorker&&this.$startWorker();var tokenizer=mode.getTokenizer();if(void 0!==tokenizer.addEventListener){var onReloadTokenizer=this.onReloadTokenizer.bind(this);tokenizer.addEventListener(\"update\",onReloadTokenizer)}if(this.bgTokenizer)this.bgTokenizer.setTokenizer(tokenizer);else{this.bgTokenizer=new BackgroundTokenizer(tokenizer);var _self=this;this.bgTokenizer.addEventListener(\"update\",function(e){_self._emit(\"tokenizerUpdate\",e)})}this.bgTokenizer.setDocument(this.getDocument()),this.tokenRe=mode.tokenRe,this.nonTokenRe=mode.nonTokenRe,$isPlaceholder||(this.$modeId=mode.$id,this.$setFolding(mode.foldingRules),this._emit(\"changeMode\"),this.bgTokenizer.start(0))}},this.$stopWorker=function(){this.$worker&&this.$worker.terminate(),this.$worker=null},this.$startWorker=function(){if(\"undefined\"==typeof Worker||acequire.noWorker)this.$worker=null;else try{this.$worker=this.$mode.createWorker(this)}catch(e){console.log(\"Could not load worker\"),console.log(e),this.$worker=null}},this.getMode=function(){return this.$mode},this.$scrollTop=0,this.setScrollTop=function(scrollTop){scrollTop=Math.round(Math.max(0,scrollTop)),this.$scrollTop===scrollTop||isNaN(scrollTop)||(this.$scrollTop=scrollTop,this._signal(\"changeScrollTop\",scrollTop))},this.getScrollTop=function(){return this.$scrollTop},this.$scrollLeft=0,this.setScrollLeft=function(scrollLeft){scrollLeft=Math.round(Math.max(0,scrollLeft)),this.$scrollLeft===scrollLeft||isNaN(scrollLeft)||(this.$scrollLeft=scrollLeft,this._signal(\"changeScrollLeft\",scrollLeft))},this.getScrollLeft=function(){return this.$scrollLeft},this.getScreenWidth=function(){return this.$computeWidth(),this.screenWidth},this.$computeWidth=function(force){if(this.$modified||force){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var lines=this.doc.getAllLines(),cache=this.$rowLengthCache,longestScreenLine=0,foldIndex=0,foldLine=this.$foldData[foldIndex],foldStart=foldLine?foldLine.start.row:1/0,len=lines.length,i=0;len>i;i++){if(i>foldStart){if(i=foldLine.end.row+1,i>=len)break;foldLine=this.$foldData[foldIndex++],foldStart=foldLine?foldLine.start.row:1/0}null==cache[i]&&(cache[i]=this.$getStringScreenWidth(lines[i])[0]),cache[i]>longestScreenLine&&(longestScreenLine=cache[i])}this.screenWidth=longestScreenLine}},this.getLine=function(row){return this.doc.getLine(row)},this.getLines=function(firstRow,lastRow){return this.doc.getLines(firstRow,lastRow)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(range){return this.doc.getTextRange(range||this.selection.getRange())},this.insert=function(position,text){return this.doc.insert(position,text)},this.remove=function(range){return this.doc.remove(range)},this.undoChanges=function(deltas,dontSelect){if(deltas.length){this.$fromUndo=!0;for(var lastUndoRange=null,i=deltas.length-1;-1!=i;i--){var delta=deltas[i];\"doc\"==delta.group?(this.doc.revertDeltas(delta.deltas),lastUndoRange=this.$getUndoSelection(delta.deltas,!0,lastUndoRange)):delta.deltas.forEach(function(foldDelta){this.addFolds(foldDelta.folds)},this)}return this.$fromUndo=!1,lastUndoRange&&this.$undoSelect&&!dontSelect&&this.selection.setSelectionRange(lastUndoRange),lastUndoRange}},this.redoChanges=function(deltas,dontSelect){if(deltas.length){this.$fromUndo=!0;for(var lastUndoRange=null,i=0;deltas.length>i;i++){var delta=deltas[i];\"doc\"==delta.group&&(this.doc.applyDeltas(delta.deltas),lastUndoRange=this.$getUndoSelection(delta.deltas,!1,lastUndoRange))}return this.$fromUndo=!1,lastUndoRange&&this.$undoSelect&&!dontSelect&&this.selection.setSelectionRange(lastUndoRange),lastUndoRange}},this.setUndoSelect=function(enable){this.$undoSelect=enable},this.$getUndoSelection=function(deltas,isUndo,lastUndoRange){function isInsert(delta){var insert=\"insertText\"===delta.action||\"insertLines\"===delta.action;return isUndo?!insert:insert}var range,point,delta=deltas[0],lastDeltaIsInsert=!1;isInsert(delta)?(range=delta.range.clone(),lastDeltaIsInsert=!0):(range=Range.fromPoints(delta.range.start,delta.range.start),lastDeltaIsInsert=!1);for(var i=1;deltas.length>i;i++)delta=deltas[i],isInsert(delta)?(point=delta.range.start,-1==range.compare(point.row,point.column)&&range.setStart(delta.range.start),point=delta.range.end,1==range.compare(point.row,point.column)&&range.setEnd(delta.range.end),lastDeltaIsInsert=!0):(point=delta.range.start,-1==range.compare(point.row,point.column)&&(range=Range.fromPoints(delta.range.start,delta.range.start)),lastDeltaIsInsert=!1);if(null!=lastUndoRange){var cmp=lastUndoRange.compareRange(range);1==cmp?range.setStart(lastUndoRange.start):-1==cmp&&range.setEnd(lastUndoRange.end)}return range},this.replace=function(range,text){return this.doc.replace(range,text)},this.moveText=function(fromRange,toPosition,copy){var text=this.getTextRange(fromRange),folds=this.getFoldsInRange(fromRange),toRange=Range.fromPoints(toPosition,toPosition);if(!copy){this.remove(fromRange);var rowDiff=fromRange.start.row-fromRange.end.row,collDiff=rowDiff?-fromRange.end.column:fromRange.start.column-fromRange.end.column;collDiff&&(toRange.start.row==fromRange.end.row&&toRange.start.column>fromRange.end.column&&(toRange.start.column+=collDiff),toRange.end.row==fromRange.end.row&&toRange.end.column>fromRange.end.column&&(toRange.end.column+=collDiff)),rowDiff&&toRange.start.row>=fromRange.end.row&&(toRange.start.row+=rowDiff,toRange.end.row+=rowDiff)}if(this.insert(toRange.start,text),folds.length){var oldStart=fromRange.start,newStart=toRange.start,rowDiff=newStart.row-oldStart.row,collDiff=newStart.column-oldStart.column;this.addFolds(folds.map(function(x){return x=x.clone(),x.start.row==oldStart.row&&(x.start.column+=collDiff),x.end.row==oldStart.row&&(x.end.column+=collDiff),x.start.row+=rowDiff,x.end.row+=rowDiff,x}))}return toRange},this.indentRows=function(startRow,endRow,indentString){indentString=indentString.replace(/\\t/g,this.getTabString());for(var row=startRow;endRow>=row;row++)this.insert({row:row,column:0},indentString)},this.outdentRows=function(range){for(var rowRange=range.collapseRows(),deleteRange=new Range(0,0,0,0),size=this.getTabSize(),i=rowRange.start.row;rowRange.end.row>=i;++i){var line=this.getLine(i);deleteRange.start.row=i,deleteRange.end.row=i;for(var j=0;size>j&&\" \"==line.charAt(j);++j);size>j&&\"\t\"==line.charAt(j)?(deleteRange.start.column=j,deleteRange.end.column=j+1):(deleteRange.start.column=0,deleteRange.end.column=j),this.remove(deleteRange)}},this.$moveLines=function(firstRow,lastRow,dir){if(firstRow=this.getRowFoldStart(firstRow),lastRow=this.getRowFoldEnd(lastRow),0>dir){var row=this.getRowFoldStart(firstRow+dir);if(0>row)return 0;var diff=row-firstRow}else if(dir>0){var row=this.getRowFoldEnd(lastRow+dir);if(row>this.doc.getLength()-1)return 0;var diff=row-lastRow}else{firstRow=this.$clipRowToDocument(firstRow),lastRow=this.$clipRowToDocument(lastRow);var diff=lastRow-firstRow+1}var range=new Range(firstRow,0,lastRow,Number.MAX_VALUE),folds=this.getFoldsInRange(range).map(function(x){return x=x.clone(),x.start.row+=diff,x.end.row+=diff,x}),lines=0==dir?this.doc.getLines(firstRow,lastRow):this.doc.removeLines(firstRow,lastRow);return this.doc.insertLines(firstRow+diff,lines),folds.length&&this.addFolds(folds),diff},this.moveLinesUp=function(firstRow,lastRow){return this.$moveLines(firstRow,lastRow,-1)},this.moveLinesDown=function(firstRow,lastRow){return this.$moveLines(firstRow,lastRow,1)},this.duplicateLines=function(firstRow,lastRow){return this.$moveLines(firstRow,lastRow,0)},this.$clipRowToDocument=function(row){return Math.max(0,Math.min(row,this.doc.getLength()-1))},this.$clipColumnToRow=function(row,column){return 0>column?0:Math.min(this.doc.getLine(row).length,column)},this.$clipPositionToDocument=function(row,column){if(column=Math.max(0,column),0>row)row=0,column=0;else{var len=this.doc.getLength();row>=len?(row=len-1,column=this.doc.getLine(len-1).length):column=Math.min(this.doc.getLine(row).length,column)}return{row:row,column:column}},this.$clipRangeToDocument=function(range){0>range.start.row?(range.start.row=0,range.start.column=0):range.start.column=this.$clipColumnToRow(range.start.row,range.start.column);var len=this.doc.getLength()-1;return range.end.row>len?(range.end.row=len,range.end.column=this.doc.getLine(len).length):range.end.column=this.$clipColumnToRow(range.end.row,range.end.column),range},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(useWrapMode){if(useWrapMode!=this.$useWrapMode){if(this.$useWrapMode=useWrapMode,this.$modified=!0,this.$resetRowCache(0),useWrapMode){var len=this.getLength();this.$wrapData=[];for(var i=0;len>i;i++)this.$wrapData.push([]);this.$updateWrapData(0,len-1)}this._emit(\"changeWrapMode\")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(min,max){(this.$wrapLimitRange.min!==min||this.$wrapLimitRange.max!==max)&&(this.$wrapLimitRange.min=min,this.$wrapLimitRange.max=max,this.$modified=!0,this._emit(\"changeWrapMode\"))},this.adjustWrapLimit=function(desiredLimit,$printMargin){var limits=this.$wrapLimitRange;0>limits.max&&(limits={min:$printMargin,max:$printMargin});var wrapLimit=this.$constrainWrapLimit(desiredLimit,limits.min,limits.max);return wrapLimit!=this.$wrapLimit&&wrapLimit>1?(this.$wrapLimit=wrapLimit,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._emit(\"changeWrapLimit\")),!0):!1},this.$constrainWrapLimit=function(wrapLimit,min,max){return min&&(wrapLimit=Math.max(min,wrapLimit)),max&&(wrapLimit=Math.min(max,wrapLimit)),wrapLimit},this.getWrapLimit=function(){return this.$wrapLimit},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var len,useWrapMode=this.$useWrapMode,action=e.data.action,firstRow=e.data.range.start.row,lastRow=e.data.range.end.row,start=e.data.range.start,end=e.data.range.end,removedFolds=null;if(-1!=action.indexOf(\"Lines\")?(lastRow=\"insertLines\"==action?firstRow+e.data.lines.length:firstRow,len=e.data.lines?e.data.lines.length:lastRow-firstRow):len=lastRow-firstRow,this.$updating=!0,0!=len)if(-1!=action.indexOf(\"remove\")){this[useWrapMode?\"$wrapData\":\"$rowLengthCache\"].splice(firstRow,len);var foldLines=this.$foldData;removedFolds=this.getFoldsInRange(e.data.range),this.removeFolds(removedFolds);var foldLine=this.getFoldLine(end.row),idx=0;if(foldLine){foldLine.addRemoveChars(end.row,end.column,start.column-end.column),foldLine.shiftRow(-len);var foldLineBefore=this.getFoldLine(firstRow);foldLineBefore&&foldLineBefore!==foldLine&&(foldLineBefore.merge(foldLine),foldLine=foldLineBefore),idx=foldLines.indexOf(foldLine)+1\n}for(idx;foldLines.length>idx;idx++){var foldLine=foldLines[idx];foldLine.start.row>=end.row&&foldLine.shiftRow(-len)}lastRow=firstRow}else{var args;if(useWrapMode){args=[firstRow,0];for(var i=0;len>i;i++)args.push([]);this.$wrapData.splice.apply(this.$wrapData,args)}else args=Array(len),args.unshift(firstRow,0),this.$rowLengthCache.splice.apply(this.$rowLengthCache,args);var foldLines=this.$foldData,foldLine=this.getFoldLine(firstRow),idx=0;if(foldLine){var cmp=foldLine.range.compareInside(start.row,start.column);0==cmp?(foldLine=foldLine.split(start.row,start.column),foldLine.shiftRow(len),foldLine.addRemoveChars(lastRow,0,end.column-start.column)):-1==cmp&&(foldLine.addRemoveChars(firstRow,0,end.column-start.column),foldLine.shiftRow(len)),idx=foldLines.indexOf(foldLine)+1}for(idx;foldLines.length>idx;idx++){var foldLine=foldLines[idx];foldLine.start.row>=firstRow&&foldLine.shiftRow(len)}}else{len=Math.abs(e.data.range.start.column-e.data.range.end.column),-1!=action.indexOf(\"remove\")&&(removedFolds=this.getFoldsInRange(e.data.range),this.removeFolds(removedFolds),len=-len);var foldLine=this.getFoldLine(firstRow);foldLine&&foldLine.addRemoveChars(firstRow,start.column,len)}return useWrapMode&&this.$wrapData.length!=this.doc.getLength()&&console.error(\"doc.getLength() and $wrapData.length have to be the same!\"),this.$updating=!1,useWrapMode?this.$updateWrapData(firstRow,lastRow):this.$updateRowLengthCache(firstRow,lastRow),removedFolds},this.$updateRowLengthCache=function(firstRow,lastRow){this.$rowLengthCache[firstRow]=null,this.$rowLengthCache[lastRow]=null},this.$updateWrapData=function(firstRow,lastRow){var tokens,foldLine,lines=this.doc.getAllLines(),tabSize=this.getTabSize(),wrapData=this.$wrapData,wrapLimit=this.$wrapLimit,row=firstRow;for(lastRow=Math.min(lastRow,lines.length-1);lastRow>=row;)if(foldLine=this.getFoldLine(row,foldLine)){for(tokens=[],foldLine.walk(function(placeholder,row,column,lastColumn){var walkTokens;if(null!=placeholder){walkTokens=this.$getDisplayTokens(placeholder,tokens.length),walkTokens[0]=PLACEHOLDER_START;for(var i=1;walkTokens.length>i;i++)walkTokens[i]=PLACEHOLDER_BODY}else walkTokens=this.$getDisplayTokens(lines[row].substring(lastColumn,column),tokens.length);tokens=tokens.concat(walkTokens)}.bind(this),foldLine.end.row,lines[foldLine.end.row].length+1);0!=tokens.length&&tokens[tokens.length-1]>=SPACE;)tokens.pop();wrapData[foldLine.start.row]=this.$computeWrapSplits(tokens,wrapLimit,tabSize),row=foldLine.end.row+1}else tokens=this.$getDisplayTokens(lang.stringTrimRight(lines[row])),wrapData[row]=this.$computeWrapSplits(tokens,wrapLimit,tabSize),row++};var CHAR=1,CHAR_EXT=2,PLACEHOLDER_START=3,PLACEHOLDER_BODY=4,PUNCTUATION=9,SPACE=10,TAB=11,TAB_SPACE=12;this.$computeWrapSplits=function(tokens,wrapLimit){function addSplit(screenPos){var displayed=tokens.slice(lastSplit,screenPos),len=displayed.length;displayed.join(\"\").replace(/12/g,function(){len-=1}).replace(/2/g,function(){len-=1}),lastDocSplit+=len,splits.push(lastDocSplit),lastSplit=screenPos}if(0==tokens.length)return[];for(var splits=[],displayLength=tokens.length,lastSplit=0,lastDocSplit=0;displayLength-lastSplit>wrapLimit;){var split=lastSplit+wrapLimit;if(tokens[split]>=SPACE){for(;tokens[split]>=SPACE;)split++;addSplit(split)}else if(tokens[split]!=PLACEHOLDER_START&&tokens[split]!=PLACEHOLDER_BODY){for(var minSplit=Math.max(split-10,lastSplit-1);split>minSplit&&PLACEHOLDER_START>tokens[split];)split--;for(;split>minSplit&&tokens[split]==PUNCTUATION;)split--;split>minSplit?addSplit(++split):(split=lastSplit+wrapLimit,addSplit(split))}else{for(split;split!=lastSplit-1&&tokens[split]!=PLACEHOLDER_START;split--);if(split>lastSplit){addSplit(split);continue}for(split=lastSplit+wrapLimit;tokens.length>split&&tokens[split]==PLACEHOLDER_BODY;split++);if(split==tokens.length)break;addSplit(split)}}return splits},this.$getDisplayTokens=function(str,offset){var tabSize,arr=[];offset=offset||0;for(var i=0;str.length>i;i++){var c=str.charCodeAt(i);if(9==c){tabSize=this.getScreenTabSize(arr.length+offset),arr.push(TAB);for(var n=1;tabSize>n;n++)arr.push(TAB_SPACE)}else 32==c?arr.push(SPACE):c>39&&48>c||c>57&&64>c?arr.push(PUNCTUATION):c>=4352&&isFullWidth(c)?arr.push(CHAR,CHAR_EXT):arr.push(CHAR)}return arr},this.$getStringScreenWidth=function(str,maxScreenColumn,screenColumn){if(0==maxScreenColumn)return[0,0];null==maxScreenColumn&&(maxScreenColumn=1/0),screenColumn=screenColumn||0;var c,column;for(column=0;str.length>column&&(c=str.charCodeAt(column),screenColumn+=9==c?this.getScreenTabSize(screenColumn):c>=4352&&isFullWidth(c)?2:1,!(screenColumn>maxScreenColumn));column++);return[screenColumn,column]},this.getRowLength=function(row){return this.$useWrapMode&&this.$wrapData[row]?this.$wrapData[row].length+1:1},this.getScreenLastRowColumn=function(screenRow){var pos=this.screenToDocumentPosition(screenRow,Number.MAX_VALUE);return this.documentToScreenColumn(pos.row,pos.column)},this.getDocumentLastRowColumn=function(docRow,docColumn){var screenRow=this.documentToScreenRow(docRow,docColumn);return this.getScreenLastRowColumn(screenRow)},this.getDocumentLastRowColumnPosition=function(docRow,docColumn){var screenRow=this.documentToScreenRow(docRow,docColumn);return this.screenToDocumentPosition(screenRow,Number.MAX_VALUE/10)},this.getRowSplitData=function(row){return this.$useWrapMode?this.$wrapData[row]:void 0},this.getScreenTabSize=function(screenColumn){return this.$tabSize-screenColumn%this.$tabSize},this.screenToDocumentRow=function(screenRow,screenColumn){return this.screenToDocumentPosition(screenRow,screenColumn).row},this.screenToDocumentColumn=function(screenRow,screenColumn){return this.screenToDocumentPosition(screenRow,screenColumn).column},this.screenToDocumentPosition=function(screenRow,screenColumn){if(0>screenRow)return{row:0,column:0};var line,column,docRow=0,docColumn=0,row=0,rowLength=0,rowCache=this.$screenRowCache,i=this.$getRowCacheIndex(rowCache,screenRow),l=rowCache.length;if(l&&i>=0)var row=rowCache[i],docRow=this.$docRowCache[i],doCache=screenRow>rowCache[l-1];else var doCache=!l;for(var maxRow=this.getLength()-1,foldLine=this.getNextFoldLine(docRow),foldStart=foldLine?foldLine.start.row:1/0;screenRow>=row&&(rowLength=this.getRowLength(docRow),!(row+rowLength-1>=screenRow||docRow>=maxRow));)row+=rowLength,docRow++,docRow>foldStart&&(docRow=foldLine.end.row+1,foldLine=this.getNextFoldLine(docRow,foldLine),foldStart=foldLine?foldLine.start.row:1/0),doCache&&(this.$docRowCache.push(docRow),this.$screenRowCache.push(row));if(foldLine&&docRow>=foldLine.start.row)line=this.getFoldDisplayLine(foldLine),docRow=foldLine.start.row;else{if(screenRow>=row+rowLength||docRow>maxRow)return{row:maxRow,column:this.getLine(maxRow).length};line=this.getLine(docRow),foldLine=null}if(this.$useWrapMode){var splits=this.$wrapData[docRow];splits&&(column=splits[screenRow-row],screenRow>row&&splits.length&&(docColumn=splits[screenRow-row-1]||splits[splits.length-1],line=line.substring(docColumn)))}return docColumn+=this.$getStringScreenWidth(line,screenColumn)[1],this.$useWrapMode&&docColumn>=column&&(docColumn=column-1),foldLine?foldLine.idxToPosition(docColumn):{row:docRow,column:docColumn}},this.documentToScreenPosition=function(docRow,docColumn){if(docColumn===void 0)var pos=this.$clipPositionToDocument(docRow.row,docRow.column);else pos=this.$clipPositionToDocument(docRow,docColumn);docRow=pos.row,docColumn=pos.column;var screenRow=0,foldStartRow=null,fold=null;fold=this.getFoldAt(docRow,docColumn,1),fold&&(docRow=fold.start.row,docColumn=fold.start.column);var rowEnd,row=0,rowCache=this.$docRowCache,i=this.$getRowCacheIndex(rowCache,docRow),l=rowCache.length;if(l&&i>=0)var row=rowCache[i],screenRow=this.$screenRowCache[i],doCache=docRow>rowCache[l-1];else var doCache=!l;for(var foldLine=this.getNextFoldLine(row),foldStart=foldLine?foldLine.start.row:1/0;docRow>row;){if(row>=foldStart){if(rowEnd=foldLine.end.row+1,rowEnd>docRow)break;foldLine=this.getNextFoldLine(rowEnd,foldLine),foldStart=foldLine?foldLine.start.row:1/0}else rowEnd=row+1;screenRow+=this.getRowLength(row),row=rowEnd,doCache&&(this.$docRowCache.push(row),this.$screenRowCache.push(screenRow))}var textLine=\"\";if(foldLine&&row>=foldStart?(textLine=this.getFoldDisplayLine(foldLine,docRow,docColumn),foldStartRow=foldLine.start.row):(textLine=this.getLine(docRow).substring(0,docColumn),foldStartRow=docRow),this.$useWrapMode){for(var wrapRow=this.$wrapData[foldStartRow],screenRowOffset=0;textLine.length>=wrapRow[screenRowOffset];)screenRow++,screenRowOffset++;textLine=textLine.substring(wrapRow[screenRowOffset-1]||0,textLine.length)}return{row:screenRow,column:this.$getStringScreenWidth(textLine)[0]}},this.documentToScreenColumn=function(row,docColumn){return this.documentToScreenPosition(row,docColumn).column},this.documentToScreenRow=function(docRow,docColumn){return this.documentToScreenPosition(docRow,docColumn).row},this.getScreenLength=function(){var screenRows=0,fold=null;if(this.$useWrapMode)for(var lastRow=this.$wrapData.length,row=0,i=0,fold=this.$foldData[i++],foldStart=fold?fold.start.row:1/0;lastRow>row;)screenRows+=this.$wrapData[row].length+1,row++,row>foldStart&&(row=fold.end.row+1,fold=this.$foldData[i++],foldStart=fold?fold.start.row:1/0);else{screenRows=this.getLength();for(var foldData=this.$foldData,i=0;foldData.length>i;i++)fold=foldData[i],screenRows-=fold.end.row-fold.start.row}return screenRows}}).call(EditSession.prototype),acequire(\"./edit_session/folding\").Folding.call(EditSession.prototype),acequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype),config.defineOptions(EditSession.prototype,\"session\",{wrap:{set:function(value){if(value&&\"off\"!=value?\"free\"==value?value=!0:\"printMargin\"==value?value=-1:\"string\"==typeof value&&(value=parseInt(value,10)||!1):value=!1,this.$wrap!=value){if(value){var col=\"number\"==typeof value?value:null;this.setWrapLimitRange(col,col),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1);this.$wrap=value}},get:function(){return this.getUseWrapMode()?this.getWrapLimitRange().min||\"free\":\"off\"},handlesSet:!0},firstLineNumber:{set:function(){this._emit(\"changeBreakpoint\")},initialValue:1},useWorker:{set:function(useWorker){this.$useWorker=useWorker,this.$stopWorker(),useWorker&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(tabSize){isNaN(tabSize)||this.$tabSize===tabSize||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=tabSize,this._emit(\"changeTabSize\"))},initialValue:4,handlesSet:!0},overwrite:{set:function(){this._emit(\"changeOverwrite\")},initialValue:!1},newLineMode:{set:function(val){this.doc.setNewLineMode(val)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0}}),exports.EditSession=EditSession}),ace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),lang=acequire(\"./lib/lang\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Selection=function(session){this.session=session,this.doc=session.getDocument(),this.clearSelection(),this.lead=this.selectionLead=this.doc.createAnchor(0,0),this.anchor=this.selectionAnchor=this.doc.createAnchor(0,0);var self=this;this.lead.on(\"change\",function(e){self._emit(\"changeCursor\"),self.$isEmpty||self._emit(\"changeSelection\"),self.$keepDesiredColumnOnChange||e.old.column==e.value.column||(self.$desiredColumn=null)}),this.selectionAnchor.on(\"change\",function(){self.$isEmpty||self._emit(\"changeSelection\")})};(function(){oop.implement(this,EventEmitter),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return this.isEmpty()?!1:this.getRange().isMultiLine()},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(row,column){this.anchor.setPosition(row,column),this.$isEmpty&&(this.$isEmpty=!1,this._emit(\"changeSelection\"))},this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.shiftSelection=function(columns){if(this.$isEmpty)return this.moveCursorTo(this.lead.row,this.lead.column+columns),void 0;var anchor=this.getSelectionAnchor(),lead=this.getSelectionLead(),isBackwards=this.isBackwards();isBackwards&&0===anchor.column||this.setSelectionAnchor(anchor.row,anchor.column+columns),(isBackwards||0!==lead.column)&&this.$moveSelection(function(){this.moveCursorTo(lead.row,lead.column+columns)})},this.isBackwards=function(){var anchor=this.anchor,lead=this.lead;return anchor.row>lead.row||anchor.row==lead.row&&anchor.column>lead.column},this.getRange=function(){var anchor=this.anchor,lead=this.lead;return this.isEmpty()?Range.fromPoints(lead,lead):this.isBackwards()?Range.fromPoints(lead,anchor):Range.fromPoints(anchor,lead)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit(\"changeSelection\"))},this.selectAll=function(){var lastRow=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(lastRow,this.doc.getLine(lastRow).length)},this.setRange=this.setSelectionRange=function(range,reverse){reverse?(this.setSelectionAnchor(range.end.row,range.end.column),this.selectTo(range.start.row,range.start.column)):(this.setSelectionAnchor(range.start.row,range.start.column),this.selectTo(range.end.row,range.end.column)),this.$desiredColumn=null},this.$moveSelection=function(mover){var lead=this.lead;this.$isEmpty&&this.setSelectionAnchor(lead.row,lead.column),mover.call(this)},this.selectTo=function(row,column){this.$moveSelection(function(){this.moveCursorTo(row,column)})},this.selectToPosition=function(pos){this.$moveSelection(function(){this.moveCursorToPosition(pos)})},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(row,column){if(column===void 0){var cursor=row||this.lead;row=cursor.row,column=cursor.column}return this.session.getWordRange(row,column)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var cursor=this.getCursor(),range=this.session.getAWordRange(cursor.row,cursor.column);this.setSelectionRange(range)},this.getLineRange=function(row,excludeLastChar){var rowEnd,rowStart=\"number\"==typeof row?row:this.lead.row,foldLine=this.session.getFoldLine(rowStart);return foldLine?(rowStart=foldLine.start.row,rowEnd=foldLine.end.row):rowEnd=rowStart,excludeLastChar?new Range(rowStart,0,rowEnd,this.session.getLine(rowEnd).length):new Range(rowStart,0,rowEnd+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var fold,cursor=this.lead.getPosition();if(fold=this.session.getFoldAt(cursor.row,cursor.column,-1))this.moveCursorTo(fold.start.row,fold.start.column);else if(0==cursor.column)cursor.row>0&&this.moveCursorTo(cursor.row-1,this.doc.getLine(cursor.row-1).length);else{var tabSize=this.session.getTabSize();this.session.isTabStop(cursor)&&this.doc.getLine(cursor.row).slice(cursor.column-tabSize,cursor.column).split(\" \").length-1==tabSize?this.moveCursorBy(0,-tabSize):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var fold,cursor=this.lead.getPosition();if(fold=this.session.getFoldAt(cursor.row,cursor.column,1))this.moveCursorTo(fold.end.row,fold.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row\u003Cthis.doc.getLength()-1&&this.moveCursorTo(this.lead.row+1,0);else{var tabSize=this.session.getTabSize(),cursor=this.lead;this.session.isTabStop(cursor)&&this.doc.getLine(cursor.row).slice(cursor.column,cursor.column+tabSize).split(\" \").length-1==tabSize?this.moveCursorBy(0,tabSize):this.moveCursorBy(0,1)}},this.moveCursorLineStart=function(){var row=this.lead.row,column=this.lead.column,screenRow=this.session.documentToScreenRow(row,column),firstColumnPosition=this.session.screenToDocumentPosition(screenRow,0),beforeCursor=this.session.getDisplayLine(row,null,firstColumnPosition.row,firstColumnPosition.column),leadingSpace=beforeCursor.match(/^\\s*/);leadingSpace[0].length==column||this.session.$useEmacsStyleLineStart||(firstColumnPosition.column+=leadingSpace[0].length),this.moveCursorToPosition(firstColumnPosition)},this.moveCursorLineEnd=function(){var lead=this.lead,lineEnd=this.session.getDocumentLastRowColumnPosition(lead.row,lead.column);if(this.lead.column==lineEnd.column){var line=this.session.getLine(lineEnd.row);if(lineEnd.column==line.length){var textEnd=line.search(/\\s+$/);textEnd>0&&(lineEnd.column=textEnd)}}this.moveCursorTo(lineEnd.row,lineEnd.column)},this.moveCursorFileEnd=function(){var row=this.doc.getLength()-1,column=this.doc.getLine(row).length;this.moveCursorTo(row,column)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var match,row=this.lead.row,column=this.lead.column,line=this.doc.getLine(row),rightOfCursor=line.substring(column);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var fold=this.session.getFoldAt(row,column,1);return fold?(this.moveCursorTo(fold.end.row,fold.end.column),void 0):((match=this.session.nonTokenRe.exec(rightOfCursor))&&(column+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,rightOfCursor=line.substring(column)),column>=line.length?(this.moveCursorTo(row,line.length),this.moveCursorRight(),this.doc.getLength()-1>row&&this.moveCursorWordRight(),void 0):((match=this.session.tokenRe.exec(rightOfCursor))&&(column+=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(row,column),void 0))},this.moveCursorLongWordLeft=function(){var fold,row=this.lead.row,column=this.lead.column;if(fold=this.session.getFoldAt(row,column,-1))return this.moveCursorTo(fold.start.row,fold.start.column),void 0;var str=this.session.getFoldStringAt(row,column,-1);null==str&&(str=this.doc.getLine(row).substring(0,column));var match,leftOfCursor=lang.stringReverse(str);return this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0,(match=this.session.nonTokenRe.exec(leftOfCursor))&&(column-=this.session.nonTokenRe.lastIndex,leftOfCursor=leftOfCursor.slice(this.session.nonTokenRe.lastIndex),this.session.nonTokenRe.lastIndex=0),0>=column?(this.moveCursorTo(row,0),this.moveCursorLeft(),row>0&&this.moveCursorWordLeft(),void 0):((match=this.session.tokenRe.exec(leftOfCursor))&&(column-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(row,column),void 0)},this.$shortWordEndIndex=function(rightOfCursor){var match,ch,index=0,whitespaceRe=/\\s/,tokenRe=this.session.tokenRe;if(tokenRe.lastIndex=0,match=this.session.tokenRe.exec(rightOfCursor))index=this.session.tokenRe.lastIndex;else{for(;(ch=rightOfCursor[index])&&whitespaceRe.test(ch);)index++;if(1>=index)for(tokenRe.lastIndex=0;(ch=rightOfCursor[index])&&!tokenRe.test(ch);)if(tokenRe.lastIndex=0,index++,whitespaceRe.test(ch)){if(index>2){index--;break}for(;(ch=rightOfCursor[index])&&whitespaceRe.test(ch);)index++;if(index>2)break}}return tokenRe.lastIndex=0,index},this.moveCursorShortWordRight=function(){var row=this.lead.row,column=this.lead.column,line=this.doc.getLine(row),rightOfCursor=line.substring(column),fold=this.session.getFoldAt(row,column,1);if(fold)return this.moveCursorTo(fold.end.row,fold.end.column);if(column==line.length){var l=this.doc.getLength();do row++,rightOfCursor=this.doc.getLine(row);while(l>row&&/^\\s*$/.test(rightOfCursor));/^\\s+/.test(rightOfCursor)||(rightOfCursor=\"\"),column=0}var index=this.$shortWordEndIndex(rightOfCursor);this.moveCursorTo(row,column+index)},this.moveCursorShortWordLeft=function(){var fold,row=this.lead.row,column=this.lead.column;if(fold=this.session.getFoldAt(row,column,-1))return this.moveCursorTo(fold.start.row,fold.start.column);var line=this.session.getLine(row).substring(0,column);if(0==column){do row--,line=this.doc.getLine(row);while(row>0&&/^\\s*$/.test(line));column=line.length,/\\s+$/.test(line)||(line=\"\")}var leftOfCursor=lang.stringReverse(line),index=this.$shortWordEndIndex(leftOfCursor);return this.moveCursorTo(row,column-index)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(rows,chars){var screenPos=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===chars&&(this.$desiredColumn?screenPos.column=this.$desiredColumn:this.$desiredColumn=screenPos.column);var docPos=this.session.screenToDocumentPosition(screenPos.row+rows,screenPos.column);this.moveCursorTo(docPos.row,docPos.column+chars,0===chars)},this.moveCursorToPosition=function(position){this.moveCursorTo(position.row,position.column)},this.moveCursorTo=function(row,column,keepDesiredColumn){var fold=this.session.getFoldAt(row,column,1);fold&&(row=fold.start.row,column=fold.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(row,column),this.$keepDesiredColumnOnChange=!1,keepDesiredColumn||(this.$desiredColumn=null)},this.moveCursorToScreen=function(row,column,keepDesiredColumn){var pos=this.session.screenToDocumentPosition(row,column);this.moveCursorTo(pos.row,pos.column,keepDesiredColumn)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(range){this.setSelectionRange(range,range.cursor==range.start),this.$desiredColumn=range.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(range){var r=this.getRange();return range?(range.start.column=r.start.column,range.start.row=r.start.row,range.end.column=r.end.column,range.end.row=r.end.row):range=r,range.cursor=this.isBackwards()?range.start:range.end,range.desiredColumn=this.$desiredColumn,range}}).call(Selection.prototype),exports.Selection=Selection}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour\",\"ace/unicode\",\"ace/lib/lang\"],function(acequire,exports){var Tokenizer=acequire(\"../tokenizer\").Tokenizer,TextHighlightRules=acequire(\"./text_highlight_rules\").TextHighlightRules,Behaviour=acequire(\"./behaviour\").Behaviour,unicode=acequire(\"../unicode\"),lang=acequire(\"../lib/lang\"),Mode=function(){this.$tokenizer=new Tokenizer((new TextHighlightRules).getRules()),this.$behaviour=new Behaviour};(function(){this.tokenRe=RegExp(\"^[\"+unicode.packages.L+unicode.packages.Mn+unicode.packages.Mc+unicode.packages.Nd+unicode.packages.Pc+\"\\\\$_]+\",\"g\"),this.nonTokenRe=RegExp(\"^(?:[^\"+unicode.packages.L+unicode.packages.Mn+unicode.packages.Mc+unicode.packages.Nd+unicode.packages.Pc+\"\\\\$_]|s])+\",\"g\"),this.getTokenizer=function(){return this.$tokenizer},this.toggleCommentLines=function(state,session,startRow,endRow){var regexpStart,lineCommentStart,doc=session.doc;if(!this.lineCommentStart)return!1;Array.isArray(this.lineCommentStart)?(regexpStart=this.lineCommentStart.map(lang.escapeRegExp).join(\"|\"),lineCommentStart=this.lineCommentStart[0]):(regexpStart=lang.escapeRegExp(this.lineCommentStart),lineCommentStart=this.lineCommentStart),regexpStart=RegExp(\"^\\\\s*(?:\"+regexpStart+\") ?\");for(var removeComment=!0,minSpace=1/0,indentations=[],i=startRow;endRow>=i;i++){var line=doc.getLine(i),indent=line.search(/\\S|$/);indentations[i]=indent,minSpace>indent&&(minSpace=indent),removeComment&&!regexpStart.test(line)&&(removeComment=!1)}if(removeComment)for(var i=startRow;endRow>=i;i++){var line=doc.getLine(i),m=line.match(regexpStart);doc.removeInLine(i,indentations[i],m[0].length)}else{lineCommentStart+=\" \";for(var i=startRow;endRow>=i;i++)doc.insertInLine({row:i,column:minSpace},lineCommentStart)}},this.getNextLineIndent=function(state,line){return this.$getIndent(line)},this.checkOutdent=function(){return!1},this.autoOutdent=function(){},this.$getIndent=function(line){return line.match(/^\\s*/)[0]},this.createWorker=function(){return null},this.createModeDelegates=function(mapping){if(this.$embeds){this.$modes={};for(var i=0;this.$embeds.length>i;i++)mapping[this.$embeds[i]]&&(this.$modes[this.$embeds[i]]=new mapping[this.$embeds[i]]);for(var delegations=[\"toggleCommentLines\",\"getNextLineIndent\",\"checkOutdent\",\"autoOutdent\",\"transformAction\"],i=0;delegations.length>i;i++)(function(scope){var functionName=delegations[i],defaultHandler=scope[functionName];scope[delegations[i]]=function(){return this.$delegator(functionName,arguments,defaultHandler)}})(this)}},this.$delegator=function(method,args,defaultHandler){for(var state=args[0],i=0;this.$embeds.length>i;i++)if(this.$modes[this.$embeds[i]]){var split=state.split(this.$embeds[i]);if(!split[0]&&split[1]){args[0]=split[1];var mode=this.$modes[this.$embeds[i]];return mode[method].apply(mode,args)}}var ret=defaultHandler.apply(this,args);return defaultHandler?ret:void 0},this.transformAction=function(state,action){if(this.$behaviour){var behaviours=this.$behaviour.getBehaviours();for(var key in behaviours)if(behaviours[key][action]){var ret=behaviours[key][action].apply(this,arguments);if(ret)return ret}}}}).call(Mode.prototype),exports.Mode=Mode}),ace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var MAX_TOKEN_COUNT=1e3,Tokenizer=function(rules){this.states=rules,this.regExps={},this.matchMappings={};for(var key in this.states){for(var state=this.states[key],ruleRegExps=[],matchTotal=0,mapping=this.matchMappings[key]={defaultToken:\"text\"},flag=\"g\",i=0;state.length>i;i++){var rule=state[i];if(rule.defaultToken&&(mapping.defaultToken=rule.defaultToken),rule.caseInsensitive&&(flag=\"gi\"),null!=rule.regex){rule.regex instanceof RegExp&&(rule.regex=(\"\"+rule.regex).slice(1,-1));var adjustedregex=rule.regex,matchcount=RegExp(\"(?:(\"+adjustedregex+\")|(.))\").exec(\"a\").length-2;if(Array.isArray(rule.token))if(1==rule.token.length||1==matchcount)rule.token=rule.token[0];else{if(matchcount-1!=rule.token.length)throw Error(\"number of classes and regexp groups in '\"+rule.token+\"'\\n'\"+rule.regex+\"' doesn't match\\n\"+(matchcount-1)+\"!=\"+rule.token.length);rule.tokenArray=rule.token,rule.onMatch=this.$arrayTokens}else\"function\"!=typeof rule.token||rule.onMatch||(rule.onMatch=matchcount>1?this.$applyToken:rule.token);matchcount>1&&(/\\\\\\d/.test(rule.regex)?adjustedregex=rule.regex.replace(/\\\\([0-9]+)/g,function(match,digit){return\"\\\\\"+(parseInt(digit,10)+matchTotal+1)}):(matchcount=1,adjustedregex=this.removeCapturingGroups(rule.regex)),rule.splitRegex||\"string\"==typeof rule.token||(rule.splitRegex=this.createSplitterRegexp(rule.regex,flag))),mapping[matchTotal]=i,matchTotal+=matchcount,ruleRegExps.push(adjustedregex),rule.onMatch||(rule.onMatch=null),rule.__proto__=null\n}}this.regExps[key]=RegExp(\"(\"+ruleRegExps.join(\")|(\")+\")|($)\",flag)}};(function(){this.$applyToken=function(str){var values=this.splitRegex.exec(str).slice(1),types=this.token.apply(this,values);if(\"string\"==typeof types)return[{type:types,value:str}];for(var tokens=[],i=0,l=types.length;l>i;i++)values[i]&&(tokens[tokens.length]={type:types[i],value:values[i]});return tokens},this.$arrayTokens=function(str){if(!str)return[];for(var values=this.splitRegex.exec(str),tokens=[],types=this.tokenArray,i=0,l=types.length;l>i;i++)values[i+1]&&(tokens[tokens.length]={type:types[i],value:values[i+1]});return tokens},this.removeCapturingGroups=function(src){var r=src.replace(/\\[(?:\\\\.|[^\\]])*?\\]|\\\\.|\\(\\?[:=!]|(\\()/g,function(x,y){return y?\"(?:\":x});return r},this.createSplitterRegexp=function(src,flag){if(-1!=src.indexOf(\"(?=\")){var stack=0,inChClass=!1,lastCapture={};src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g,function(m,esc,parenOpen,parenClose,square,index){return inChClass?inChClass=\"]\"!=square:square?inChClass=!0:parenClose?(stack==lastCapture.stack&&(lastCapture.end=index+1,lastCapture.stack=-1),stack--):parenOpen&&(stack++,1!=parenOpen.length&&(lastCapture.stack=stack,lastCapture.start=index)),m}),null!=lastCapture.end&&/^\\)*$/.test(src.substr(lastCapture.end))&&(src=src.substring(0,lastCapture.start)+src.substr(lastCapture.end))}return RegExp(src,(flag||\"\").replace(\"g\",\"\"))},this.getLineTokens=function(line,startState){if(startState&&\"string\"!=typeof startState){var stack=startState.slice(0);startState=stack[0]}else var stack=[];var currentState=startState||\"start\",state=this.states[currentState],mapping=this.matchMappings[currentState],re=this.regExps[currentState];re.lastIndex=0;for(var match,tokens=[],lastIndex=0,token={type:null,value:\"\"};match=re.exec(line);){var type=mapping.defaultToken,rule=null,value=match[0],index=re.lastIndex;if(index-value.length>lastIndex){var skipped=line.substring(lastIndex,index-value.length);token.type==type?token.value+=skipped:(token.type&&tokens.push(token),token={type:type,value:skipped})}for(var i=0;match.length-2>i;i++)if(void 0!==match[i+1]){rule=state[mapping[i]],type=rule.onMatch?rule.onMatch(value,currentState,stack):rule.token,rule.next&&(currentState=\"string\"==typeof rule.next?rule.next:rule.next(currentState,stack),state=this.states[currentState],state||(window.console&&console.error&&console.error(currentState,\"doesn't exist\"),currentState=\"start\",state=this.states[currentState]),mapping=this.matchMappings[currentState],lastIndex=index,re=this.regExps[currentState],re.lastIndex=index);break}if(value)if(\"string\"==typeof type)rule&&rule.merge===!1||token.type!==type?(token.type&&tokens.push(token),token={type:type,value:value}):token.value+=value;else if(type){token.type&&tokens.push(token),token={type:null,value:\"\"};for(var i=0;type.length>i;i++)tokens.push(type[i])}if(lastIndex==line.length)break;if(lastIndex=index,tokens.length>MAX_TOKEN_COUNT){token.value+=line.substr(lastIndex),currentState=\"start\";break}}return token.type&&tokens.push(token),{tokens:tokens,state:stack.length?stack:currentState}}}).call(Tokenizer.prototype),exports.Tokenizer=Tokenizer}),ace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\"],function(acequire,exports){var lang=acequire(\"../lib/lang\"),TextHighlightRules=function(){this.$rules={start:[{token:\"empty_line\",regex:\"^$\"},{defaultToken:\"text\"}]}};(function(){this.addRules=function(rules,prefix){for(var key in rules){for(var state=rules[key],i=0;state.length>i;i++){var rule=state[i];rule.next&&(rule.next=prefix+rule.next)}this.$rules[prefix+key]=state}},this.getRules=function(){return this.$rules},this.embedRules=function(HighlightRules,prefix,escapeRules,states,append){var embedRules=(new HighlightRules).getRules();if(states)for(var i=0;states.length>i;i++)states[i]=prefix+states[i];else{states=[];for(var key in embedRules)states.push(prefix+key)}if(this.addRules(embedRules,prefix),escapeRules)for(var addRules=Array.prototype[append?\"push\":\"unshift\"],i=0;states.length>i;i++)addRules.apply(this.$rules[states[i]],lang.deepCopy(escapeRules));this.$embeds||(this.$embeds=[]),this.$embeds.push(prefix)},this.getEmbeds=function(){return this.$embeds};var pushState=function(currentState,stack){return\"start\"!=currentState&&stack.unshift(this.nextState,currentState),this.nextState},popState=function(currentState,stack){return stack[0]!==currentState?\"start\":(stack.shift(),stack.shift())};this.normalizeRules=function(){function processState(key){var state=rules[key];state.processed=!0;for(var i=0;state.length>i;i++){var rule=state[i];!rule.regex&&rule.start&&(rule.regex=rule.start,rule.next||(rule.next=[]),rule.next.push({defaultToken:rule.token},{token:rule.token+\".end\",regex:rule.end||rule.start,next:\"pop\"}),rule.token=rule.token+\".start\",rule.push=!0);var next=rule.next||rule.push;if(next&&Array.isArray(next)){var stateName=rule.stateName||rule.token+id++;rules[stateName]=next,rule.next=stateName,processState(stateName)}else\"pop\"==next&&(rule.next=popState);if(rule.push&&(rule.nextState=rule.next||rule.push,rule.next=pushState,delete rule.push),rule.rules)for(var r in rule.rules)rules[r]?rules[r].push&&rules[r].push.apply(rules[r],rule.rules[r]):rules[r]=rule.rules[r];if(rule.include||\"string\"==typeof rule)var includeName=rule.include||rule,toInsert=rules[includeName];else Array.isArray(rule)&&(toInsert=rule);if(toInsert){var args=[i,1].concat(toInsert);rule.noEscape&&(args=args.filter(function(x){return!x.next})),state.splice.apply(state,args),i--,toInsert=null}}}var id=0,rules=this.$rules;Object.keys(rules).forEach(processState)},this.createKeywordMapper=function(map,defaultToken,ignoreCase,splitChar){var keywords=Object.create(null);return Object.keys(map).forEach(function(className){var a=map[className];ignoreCase&&(a=a.toLowerCase());for(var list=a.split(splitChar||\"|\"),i=list.length;i--;)keywords[list[i]]=className}),map=null,ignoreCase?function(value){return keywords[value.toLowerCase()]||defaultToken}:function(value){return keywords[value]||defaultToken}},this.getKeywords=function(){return this.$keywords}}).call(TextHighlightRules.prototype),exports.TextHighlightRules=TextHighlightRules}),ace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var Behaviour=function(){this.$behaviours={}};(function(){this.add=function(name,action,callback){switch(void 0){case this.$behaviours:this.$behaviours={};case this.$behaviours[name]:this.$behaviours[name]={}}this.$behaviours[name][action]=callback},this.addBehaviours=function(behaviours){for(var key in behaviours)for(var action in behaviours[key])this.add(key,action,behaviours[key][action])},this.remove=function(name){this.$behaviours&&this.$behaviours[name]&&delete this.$behaviours[name]},this.inherit=function(mode,filter){if(\"function\"==typeof mode)var behaviours=(new mode).getBehaviours(filter);else var behaviours=mode.getBehaviours(filter);this.addBehaviours(behaviours)},this.getBehaviours=function(filter){if(filter){for(var ret={},i=0;filter.length>i;i++)this.$behaviours[filter[i]]&&(ret[filter[i]]=this.$behaviours[filter[i]]);return ret}return this.$behaviours}}).call(Behaviour.prototype),exports.Behaviour=Behaviour}),ace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"],function(acequire,exports){function addUnicodePackage(pack){var codePoint=/\\w{4}/g;for(var name in pack)exports.packages[name]=pack[name].replace(codePoint,\"\\\\u$&\")}exports.packages={},addUnicodePackage({L:\"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC\",Ll:\"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A\",Lu:\"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A\",Lt:\"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC\",Lm:\"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F\",Lo:\"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC\",M:\"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26\",Mn:\"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26\",Mc:\"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC\",Me:\"0488048906DE20DD-20E020E2-20E4A670-A672\",N:\"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19\",Nd:\"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19\",Nl:\"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF\",No:\"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835\",P:\"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65\",Pd:\"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D\",Ps:\"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62\",Pe:\"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63\",Pi:\"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20\",Pf:\"00BB2019201D203A2E032E052E0A2E0D2E1D2E21\",Pc:\"005F203F20402054FE33FE34FE4D-FE4FFF3F\",Po:\"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65\",S:\"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD\",Sm:\"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC\",Sc:\"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6\",Sk:\"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3\",So:\"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD\",Z:\"002000A01680180E2000-200A20282029202F205F3000\",Zs:\"002000A01680180E2000-200A202F205F3000\",Zl:\"2028\",Zp:\"2029\",C:\"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF\",Cc:\"0000-001F007F-009F\",Cf:\"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB\",Co:\"E000-F8FF\",Cs:\"D800-DFFF\",Cn:\"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF\"})\n}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(text){this.$lines=[],0==text.length?this.$lines=[\"\"]:Array.isArray(text)?this.insertLines(0,text):this.insert({row:0,column:0},text)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength();this.remove(new Range(0,0,len,this.getLine(len-1).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:\"\\n\"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine}},this.$autoNewLine=\"\\n\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode)},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){if(range.start.row==range.end.row)return this.$lines[range.start.row].substring(range.start.column,range.end.column);var lines=this.getLines(range.start.row+1,range.end.row-1);return lines.unshift((this.$lines[range.start.row]||\"\").substring(range.start.column)),lines.push((this.$lines[range.end.row]||\"\").substring(0,range.end.column)),lines.join(this.getNewLineCharacter())},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):0>position.row&&(position.row=0),position},this.insert=function(position,text){if(!text||0===text.length)return position;position=this.$clipPosition(position),1>=this.getLength()&&this.$detectNewLine(text);var lines=this.$split(text),firstLine=lines.splice(0,1)[0],lastLine=0==lines.length?null:lines.splice(lines.length-1,1)[0];return position=this.insertInLine(position,firstLine),null!==lastLine&&(position=this.insertNewLine(position),position=this.insertLines(position.row,lines),position=this.insertInLine(position,lastLine||\"\")),position},this.insertLines=function(row,lines){if(0==lines.length)return{row:row,column:0};if(lines.length>65535){var end=this.insertLines(row,lines.slice(65535));lines=lines.slice(0,65535)}var args=[row,0];args.push.apply(args,lines),this.$lines.splice.apply(this.$lines,args);var range=new Range(row,0,row+lines.length,0),delta={action:\"insertLines\",range:range,lines:lines};return this._emit(\"change\",{data:delta}),end||range.end},this.insertNewLine=function(position){position=this.$clipPosition(position);var line=this.$lines[position.row]||\"\";this.$lines[position.row]=line.substring(0,position.column),this.$lines.splice(position.row+1,0,line.substring(position.column,line.length));var end={row:position.row+1,column:0},delta={action:\"insertText\",range:Range.fromPoints(position,end),text:this.getNewLineCharacter()};return this._emit(\"change\",{data:delta}),end},this.insertInLine=function(position,text){if(0==text.length)return position;var line=this.$lines[position.row]||\"\";this.$lines[position.row]=line.substring(0,position.column)+text+line.substring(position.column);var end={row:position.row,column:position.column+text.length},delta={action:\"insertText\",range:Range.fromPoints(position,end),text:text};return this._emit(\"change\",{data:delta}),end},this.remove=function(range){if(range.start=this.$clipPosition(range.start),range.end=this.$clipPosition(range.end),range.isEmpty())return range.start;var firstRow=range.start.row,lastRow=range.end.row;if(range.isMultiLine()){var firstFullRow=0==range.start.column?firstRow:firstRow+1,lastFullRow=lastRow-1;range.end.column>0&&this.removeInLine(lastRow,0,range.end.column),lastFullRow>=firstFullRow&&this.removeLines(firstFullRow,lastFullRow),firstFullRow!=firstRow&&(this.removeInLine(firstRow,range.start.column,this.getLine(firstRow).length),this.removeNewLine(range.start.row))}else this.removeInLine(firstRow,range.start.column,range.end.column);return range.start},this.removeInLine=function(row,startColumn,endColumn){if(startColumn!=endColumn){var range=new Range(row,startColumn,row,endColumn),line=this.getLine(row),removed=line.substring(startColumn,endColumn),newLine=line.substring(0,startColumn)+line.substring(endColumn,line.length);this.$lines.splice(row,1,newLine);var delta={action:\"removeText\",range:range,text:removed};return this._emit(\"change\",{data:delta}),range.start}},this.removeLines=function(firstRow,lastRow){var range=new Range(firstRow,0,lastRow+1,0),removed=this.$lines.splice(firstRow,lastRow-firstRow+1),delta={action:\"removeLines\",range:range,nl:this.getNewLineCharacter(),lines:removed};return this._emit(\"change\",{data:delta}),removed},this.removeNewLine=function(row){var firstLine=this.getLine(row),secondLine=this.getLine(row+1),range=new Range(row,firstLine.length,row+1,0),line=firstLine+secondLine;this.$lines.splice(row,2,line);var delta={action:\"removeText\",range:range,text:this.getNewLineCharacter()};this._emit(\"change\",{data:delta})},this.replace=function(range,text){if(0==text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;if(this.remove(range),text)var end=this.insert(range.start,text);else end=range.start;return end},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);\"insertLines\"==delta.action?this.insertLines(range.start.row,delta.lines):\"insertText\"==delta.action?this.insert(range.start,delta.text):\"removeLines\"==delta.action?this.removeLines(range.start.row,range.end.row-1):\"removeText\"==delta.action&&this.remove(range)}},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);\"insertLines\"==delta.action?this.removeLines(range.start.row,range.end.row-1):\"insertText\"==delta.action?this.remove(range):\"removeLines\"==delta.action?this.insertLines(range.start.row,delta.lines):\"removeText\"==delta.action&&this.insert(range.start,delta.text)}},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length;return index+newlineLength*i+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.document=doc,column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column),this.$onChange=this.onChange.bind(this),doc.on(\"change\",this.$onChange)};(function(){oop.implement(this,EventEmitter),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.onChange=function(e){var delta=e.data,range=delta.range;if(!(range.start.row==range.end.row&&range.start.row!=this.row||range.start.row>this.row||range.start.row==this.row&&range.start.column>this.column)){var row=this.row,column=this.column,start=range.start,end=range.end;\"insertText\"===delta.action?start.row===row&&column>=start.column?start.row===end.row?column+=end.column-start.column:(column-=start.column,row+=end.row-start.row):start.row!==end.row&&row>start.row&&(row+=end.row-start.row):\"insertLines\"===delta.action?row>=start.row&&(row+=end.row-start.row):\"removeText\"===delta.action?start.row===row&&column>start.column?column=end.column>=column?start.column:Math.max(0,column-(end.column-start.column)):start.row!==end.row&&row>start.row?(end.row===row&&(column=Math.max(0,column-end.column)+start.column),row-=end.row-start.row):end.row===row&&(row-=end.row-start.row,column=Math.max(0,column-end.column)+start.column):\"removeLines\"==delta.action&&row>=start.row&&(row>=end.row?row-=end.row-start.row:(row=start.row,column=0)),this.setPosition(row,column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._emit(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,BackgroundTokenizer=function(tokenizer){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=tokenizer;var self=this;this.$worker=function(){if(self.running){for(var workerStart=new Date,startLine=self.currentLine,doc=self.doc,processedLines=0,len=doc.getLength();len>self.currentLine;){for(self.$tokenizeRow(self.currentLine);self.lines[self.currentLine];)self.currentLine++;if(processedLines++,0==processedLines%5&&new Date-workerStart>20)return self.fireUpdateEvent(startLine,self.currentLine-1),self.running=setTimeout(self.$worker,20),void 0}self.running=!1,self.fireUpdateEvent(startLine,len-1)}}};(function(){oop.implement(this,EventEmitter),this.setTokenizer=function(tokenizer){this.tokenizer=tokenizer,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(doc){this.doc=doc,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(firstRow,lastRow){var data={first:firstRow,last:lastRow};this._emit(\"update\",{data:data})},this.start=function(startRow){this.currentLine=Math.min(startRow||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.$updateOnChange=function(delta){var range=delta.range,startRow=range.start.row,len=range.end.row-startRow;if(0===len)this.lines[startRow]=null;else if(\"removeText\"==delta.action||\"removeLines\"==delta.action)this.lines.splice(startRow,len+1,null),this.states.splice(startRow,len+1,null);else{var args=Array(len+1);args.unshift(startRow,1),this.lines.splice.apply(this.lines,args),this.states.splice.apply(this.states,args)}this.currentLine=Math.min(startRow,this.currentLine,this.doc.getLength()),this.stop(),this.running=setTimeout(this.$worker,700)},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(row){return this.lines[row]||this.$tokenizeRow(row)},this.getState=function(row){return this.currentLine==row&&this.$tokenizeRow(row),this.states[row]||\"start\"},this.$tokenizeRow=function(row){var line=this.doc.getLine(row),state=this.states[row-1],data=this.tokenizer.getLineTokens(line,state,row);return this.states[row]+\"\"!=data.state+\"\"?(this.states[row]=data.state,this.lines[row+1]=null,this.currentLine>row+1&&(this.currentLine=row+1)):this.currentLine==row&&(this.currentLine=row+1),this.lines[row]=data.tokens}}).call(BackgroundTokenizer.prototype),exports.BackgroundTokenizer=BackgroundTokenizer}),ace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"],function(acequire,exports){var lang=acequire(\"./lib/lang\");acequire(\"./lib/oop\");var Range=acequire(\"./range\").Range,SearchHighlight=function(regExp,clazz,type){this.setRegexp(regExp),this.clazz=clazz,this.type=type||\"text\"};(function(){this.MAX_RANGES=500,this.setRegexp=function(regExp){this.regExp+\"\"!=regExp+\"\"&&(this.regExp=regExp,this.cache=[])},this.update=function(html,markerLayer,session,config){if(this.regExp)for(var start=config.firstRow,end=config.lastRow,i=start;end>=i;i++){var ranges=this.cache[i];null==ranges&&(ranges=lang.getMatchOffsets(session.getLine(i),this.regExp),ranges.length>this.MAX_RANGES&&(ranges=ranges.slice(0,this.MAX_RANGES)),ranges=ranges.map(function(match){return new Range(i,match.offset,i,match.offset+match.length)}),this.cache[i]=ranges.length?ranges:\"\");for(var j=ranges.length;j--;)markerLayer.drawSingleLineMarker(html,ranges[j].toScreenRange(session),this.clazz,config,null,this.type)}}}).call(SearchHighlight.prototype),exports.SearchHighlight=SearchHighlight}),ace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\"],function(acequire,exports){function Folding(){this.getFoldAt=function(row,column,side){var foldLine=this.getFoldLine(row);if(!foldLine)return null;for(var folds=foldLine.folds,i=0;folds.length>i;i++){var fold=folds[i];if(fold.range.contains(row,column)){if(1==side&&fold.range.isEnd(row,column))continue;if(-1==side&&fold.range.isStart(row,column))continue;return fold}}},this.getFoldsInRange=function(range){var start=range.start,end=range.end,foldLines=this.$foldData,foundFolds=[];start.column+=1,end.column-=1;for(var i=0;foldLines.length>i;i++){var cmp=foldLines[i].range.compareRange(range);if(2!=cmp){if(-2==cmp)break;for(var folds=foldLines[i].folds,j=0;folds.length>j;j++){var fold=folds[j];if(cmp=fold.range.compareRange(range),-2==cmp)break;if(2!=cmp){if(42==cmp)break;foundFolds.push(fold)}}}}return start.column-=1,end.column+=1,foundFolds},this.getAllFolds=function(){function addFold(fold){folds.push(fold)}for(var folds=[],foldLines=this.$foldData,i=0;foldLines.length>i;i++)for(var j=0;foldLines[i].folds.length>j;j++)addFold(foldLines[i].folds[j]);return folds},this.getFoldStringAt=function(row,column,trim,foldLine){if(foldLine=foldLine||this.getFoldLine(row),!foldLine)return null;for(var str,fold,lastFold={end:{column:0}},i=0;foldLine.folds.length>i;i++){fold=foldLine.folds[i];var cmp=fold.range.compareEnd(row,column);if(-1==cmp){str=this.getLine(fold.start.row).substring(lastFold.end.column,fold.start.column);break}if(0===cmp)return null;lastFold=fold}return str||(str=this.getLine(fold.start.row).substring(lastFold.end.column)),-1==trim?str.substring(0,column-lastFold.end.column):1==trim?str.substring(column-lastFold.end.column):str},this.getFoldLine=function(docRow,startFoldLine){var foldData=this.$foldData,i=0;for(startFoldLine&&(i=foldData.indexOf(startFoldLine)),-1==i&&(i=0),i;foldData.length>i;i++){var foldLine=foldData[i];if(docRow>=foldLine.start.row&&foldLine.end.row>=docRow)return foldLine;if(foldLine.end.row>docRow)return null}return null},this.getNextFoldLine=function(docRow,startFoldLine){var foldData=this.$foldData,i=0;for(startFoldLine&&(i=foldData.indexOf(startFoldLine)),-1==i&&(i=0),i;foldData.length>i;i++){var foldLine=foldData[i];if(foldLine.end.row>=docRow)return foldLine}return null},this.getFoldedRowCount=function(first,last){for(var foldData=this.$foldData,rowCount=last-first+1,i=0;foldData.length>i;i++){var foldLine=foldData[i],end=foldLine.end.row,start=foldLine.start.row;if(end>=last){last>start&&(start>=first?rowCount-=last-start:rowCount=0);break}end>=first&&(rowCount-=start>=first?end-start:end-first+1)}return rowCount},this.$addFoldLine=function(foldLine){return this.$foldData.push(foldLine),this.$foldData.sort(function(a,b){return a.start.row-b.start.row}),foldLine},this.addFold=function(placeholder,range){var fold,foldData=this.$foldData,added=!1;placeholder instanceof Fold?fold=placeholder:(fold=new Fold(range,placeholder),fold.collapseChildren=range.collapseChildren),this.$clipRangeToDocument(fold.range);var startRow=fold.start.row,startColumn=fold.start.column,endRow=fold.end.row,endColumn=fold.end.column;if(startRow==endRow&&2>endColumn-startColumn)throw\"The range has to be at least 2 characters width\";var startFold=this.getFoldAt(startRow,startColumn,1),endFold=this.getFoldAt(endRow,endColumn,-1);if(startFold&&endFold==startFold)return startFold.addSubFold(fold);if(startFold&&!startFold.range.isStart(startRow,startColumn)||endFold&&!endFold.range.isEnd(endRow,endColumn))throw\"A fold can't intersect already existing fold\"+fold.range+startFold.range;var folds=this.getFoldsInRange(fold.range);folds.length>0&&(this.removeFolds(folds),folds.forEach(function(subFold){fold.addSubFold(subFold)}));for(var i=0;foldData.length>i;i++){var foldLine=foldData[i];if(endRow==foldLine.start.row){foldLine.addFold(fold),added=!0;break}if(startRow==foldLine.end.row){if(foldLine.addFold(fold),added=!0,!fold.sameRow){var foldLineNext=foldData[i+1];if(foldLineNext&&foldLineNext.start.row==endRow){foldLine.merge(foldLineNext);break}}break}if(foldLine.start.row>=endRow)break}return added||(foldLine=this.$addFoldLine(new FoldLine(this.$foldData,fold))),this.$useWrapMode?this.$updateWrapData(foldLine.start.row,foldLine.start.row):this.$updateRowLengthCache(foldLine.start.row,foldLine.start.row),this.$modified=!0,this._emit(\"changeFold\",{data:fold}),fold},this.addFolds=function(folds){folds.forEach(function(fold){this.addFold(fold)},this)},this.removeFold=function(fold){var foldLine=fold.foldLine,startRow=foldLine.start.row,endRow=foldLine.end.row,foldLines=this.$foldData,folds=foldLine.folds;if(1==folds.length)foldLines.splice(foldLines.indexOf(foldLine),1);else if(foldLine.range.isEnd(fold.end.row,fold.end.column))folds.pop(),foldLine.end.row=folds[folds.length-1].end.row,foldLine.end.column=folds[folds.length-1].end.column;else if(foldLine.range.isStart(fold.start.row,fold.start.column))folds.shift(),foldLine.start.row=folds[0].start.row,foldLine.start.column=folds[0].start.column;else if(fold.sameRow)folds.splice(folds.indexOf(fold),1);else{var newFoldLine=foldLine.split(fold.start.row,fold.start.column);folds=newFoldLine.folds,folds.shift(),newFoldLine.start.row=folds[0].start.row,newFoldLine.start.column=folds[0].start.column}this.$updating||(this.$useWrapMode?this.$updateWrapData(startRow,endRow):this.$updateRowLengthCache(startRow,endRow)),this.$modified=!0,this._emit(\"changeFold\",{data:fold})},this.removeFolds=function(folds){for(var cloneFolds=[],i=0;folds.length>i;i++)cloneFolds.push(folds[i]);cloneFolds.forEach(function(fold){this.removeFold(fold)},this),this.$modified=!0},this.expandFold=function(fold){this.removeFold(fold),fold.subFolds.forEach(function(subFold){fold.restoreRange(subFold),this.addFold(subFold)},this),fold.collapseChildren>0&&this.foldAll(fold.start.row+1,fold.end.row,fold.collapseChildren-1),fold.subFolds=[]},this.expandFolds=function(folds){folds.forEach(function(fold){this.expandFold(fold)},this)},this.unfold=function(location,expandInner){var range,folds;if(null==location?(range=new Range(0,0,this.getLength(),0),expandInner=!0):range=\"number\"==typeof location?new Range(location,0,location,this.getLine(location).length):\"row\"in location?Range.fromPoints(location,location):location,folds=this.getFoldsInRange(range),expandInner)this.removeFolds(folds);else for(;folds.length;)this.expandFolds(folds),folds=this.getFoldsInRange(range)},this.isRowFolded=function(docRow,startFoldRow){return!!this.getFoldLine(docRow,startFoldRow)},this.getRowFoldEnd=function(docRow,startFoldRow){var foldLine=this.getFoldLine(docRow,startFoldRow);return foldLine?foldLine.end.row:docRow},this.getRowFoldStart=function(docRow,startFoldRow){var foldLine=this.getFoldLine(docRow,startFoldRow);return foldLine?foldLine.start.row:docRow},this.getFoldDisplayLine=function(foldLine,endRow,endColumn,startRow,startColumn){null==startRow&&(startRow=foldLine.start.row,startColumn=0),null==endRow&&(endRow=foldLine.end.row,endColumn=this.getLine(endRow).length);var doc=this.doc,textLine=\"\";return foldLine.walk(function(placeholder,row,column,lastColumn){if(!(startRow>row)){if(row==startRow){if(startColumn>column)return;lastColumn=Math.max(startColumn,lastColumn)}textLine+=null!=placeholder?placeholder:doc.getLine(row).substring(lastColumn,column)}},endRow,endColumn),textLine},this.getDisplayLine=function(row,endColumn,startRow,startColumn){var foldLine=this.getFoldLine(row);if(foldLine)return this.getFoldDisplayLine(foldLine,row,endColumn,startRow,startColumn);var line;return line=this.doc.getLine(row),line.substring(startColumn||0,endColumn||line.length)},this.$cloneFoldData=function(){var fd=[];return fd=this.$foldData.map(function(foldLine){var folds=foldLine.folds.map(function(fold){return fold.clone()});return new FoldLine(fd,folds)})},this.toggleFold=function(tryToUnfold){var fold,bracketPos,selection=this.selection,range=selection.getRange();if(range.isEmpty()){var cursor=range.start;if(fold=this.getFoldAt(cursor.row,cursor.column))return this.expandFold(fold),void 0;(bracketPos=this.findMatchingBracket(cursor))?1==range.comparePoint(bracketPos)?range.end=bracketPos:(range.start=bracketPos,range.start.column++,range.end.column--):(bracketPos=this.findMatchingBracket({row:cursor.row,column:cursor.column+1}))?(1==range.comparePoint(bracketPos)?range.end=bracketPos:range.start=bracketPos,range.start.column++):range=this.getCommentFoldRange(cursor.row,cursor.column)||range}else{var folds=this.getFoldsInRange(range);if(tryToUnfold&&folds.length)return this.expandFolds(folds),void 0;1==folds.length&&(fold=folds[0])}if(fold||(fold=this.getFoldAt(range.start.row,range.start.column)),fold&&\"\"+fold.range==\"\"+range)return this.expandFold(fold),void 0;var placeholder=\"...\";if(!range.isMultiLine()){if(placeholder=this.getTextRange(range),4>placeholder.length)return;placeholder=placeholder.trim().substring(0,2)+\"..\"}this.addFold(placeholder,range)},this.getCommentFoldRange=function(row,column,dir){var iterator=new TokenIterator(this,row,column),token=iterator.getCurrentToken();if(token&&/^comment|string/.test(token.type)){var range=new Range,re=RegExp(token.type.replace(/\\..*/,\"\\\\.\"));if(1!=dir){do token=iterator.stepBackward();while(token&&re.test(token.type));iterator.stepForward()}if(range.start.row=iterator.getCurrentTokenRow(),range.start.column=iterator.getCurrentTokenColumn()+2,iterator=new TokenIterator(this,row,column),-1!=dir){do token=iterator.stepForward();while(token&&re.test(token.type));token=iterator.stepBackward()}else token=iterator.getCurrentToken();return range.end.row=iterator.getCurrentTokenRow(),range.end.column=iterator.getCurrentTokenColumn()+token.value.length-2,range}},this.foldAll=function(startRow,endRow,depth){void 0==depth&&(depth=1e5);var foldWidgets=this.foldWidgets;endRow=endRow||this.getLength();for(var row=startRow||0;endRow>row;row++)if(null==foldWidgets[row]&&(foldWidgets[row]=this.getFoldWidget(row)),\"start\"==foldWidgets[row]){var range=this.getFoldWidgetRange(row);if(range&&endRow>=range.end.row)try{var fold=this.addFold(\"...\",range);fold.collapseChildren=depth}catch(e){}row=range.end.row}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle=\"markbegin\",this.setFoldStyle=function(style){if(!this.$foldStyles[style])throw Error(\"invalid fold style: \"+style+\"[\"+Object.keys(this.$foldStyles).join(\", \")+\"]\");if(this.$foldStyle!=style){this.$foldStyle=style,\"manual\"==style&&this.unfold();var mode=this.$foldMode;this.$setFolding(null),this.$setFolding(mode)}},this.$setFolding=function(foldMode){if(this.$foldMode!=foldMode){if(this.$foldMode=foldMode,this.removeListener(\"change\",this.$updateFoldWidgets),this._emit(\"changeAnnotation\"),!foldMode||\"manual\"==this.$foldStyle)return this.foldWidgets=null,void 0;this.foldWidgets=[],this.getFoldWidget=foldMode.getFoldWidget.bind(foldMode,this,this.$foldStyle),this.getFoldWidgetRange=foldMode.getFoldWidgetRange.bind(foldMode,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.on(\"change\",this.$updateFoldWidgets)}},this.getParentFoldRangeData=function(row,ignoreCurrent){var fw=this.foldWidgets;if(!fw||ignoreCurrent&&fw[row])return{};for(var firstRange,i=row-1;i>=0;){var c=fw[i];if(null==c&&(c=fw[i]=this.getFoldWidget(i)),\"start\"==c){var range=this.getFoldWidgetRange(i);if(firstRange||(firstRange=range),range&&range.end.row>=row)break}i--}return{range:-1!==i&&range,firstRange:firstRange}},this.onFoldWidgetClick=function(row,e){var type=this.getFoldWidget(row),line=this.getLine(row);e=e.domEvent;var children=e.shiftKey,all=e.ctrlKey||e.metaKey,siblings=e.altKey,dir=\"end\"===type?-1:1,fold=this.getFoldAt(row,-1===dir?0:line.length,dir);if(fold)return children||all?this.removeFold(fold):this.expandFold(fold),void 0;var range=this.getFoldWidgetRange(row);if(range&&!range.isMultiLine()&&(fold=this.getFoldAt(range.start.row,range.start.column,1),fold&&range.isEqual(fold.range)))return this.removeFold(fold),void 0;if(siblings){var data=this.getParentFoldRangeData(row);if(data.range)var startRow=data.range.start.row+1,endRow=data.range.end.row;this.foldAll(startRow,endRow,all?1e4:0)}else if(children){var endRow=range?range.end.row:this.getLength();this.foldAll(row+1,range.end.row,all?1e4:0)}else range&&(all&&(range.collapseChildren=1e4),this.addFold(\"...\",range));range||((e.target||e.srcElement).className+=\" ace_invalid\")},this.updateFoldWidgets=function(e){var delta=e.data,range=delta.range,firstRow=range.start.row,len=range.end.row-firstRow;if(0===len)this.foldWidgets[firstRow]=null;else if(\"removeText\"==delta.action||\"removeLines\"==delta.action)this.foldWidgets.splice(firstRow,len+1,null);else{var args=Array(len+1);args.unshift(firstRow,1),this.foldWidgets.splice.apply(this.foldWidgets,args)}}}var Range=acequire(\"../range\").Range,FoldLine=acequire(\"./fold_line\").FoldLine,Fold=acequire(\"./fold\").Fold,TokenIterator=acequire(\"../token_iterator\").TokenIterator;exports.Folding=Folding}),ace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(acequire,exports){function FoldLine(foldData,folds){this.foldData=foldData,Array.isArray(folds)?this.folds=folds:folds=this.folds=[folds];var last=folds[folds.length-1];this.range=new Range(folds[0].start.row,folds[0].start.column,last.end.row,last.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(fold){fold.setFoldLine(this)},this)}var Range=acequire(\"../range\").Range;(function(){this.shiftRow=function(shift){this.start.row+=shift,this.end.row+=shift,this.folds.forEach(function(fold){fold.start.row+=shift,fold.end.row+=shift})},this.addFold=function(fold){if(fold.sameRow){if(fold.start.row\u003Cthis.startRow||fold.endRow>this.endRow)throw\"Can't add a fold to this FoldLine as it has no connection\";this.folds.push(fold),this.folds.sort(function(a,b){return-a.range.compareEnd(b.start.row,b.start.column)}),this.range.compareEnd(fold.start.row,fold.start.column)>0?(this.end.row=fold.end.row,this.end.column=fold.end.column):0>this.range.compareStart(fold.end.row,fold.end.column)&&(this.start.row=fold.start.row,this.start.column=fold.start.column)}else if(fold.start.row==this.end.row)this.folds.push(fold),this.end.row=fold.end.row,this.end.column=fold.end.column;else{if(fold.end.row!=this.start.row)throw\"Trying to add fold to FoldRow that doesn't have a matching row\";this.folds.unshift(fold),this.start.row=fold.start.row,this.start.column=fold.start.column}fold.foldLine=this},this.containsRow=function(row){return row>=this.start.row&&this.end.row>=row},this.walk=function(callback,endRow,endColumn){var fold,comp,stop,lastEnd=0,folds=this.folds,isNewRow=!0;null==endRow&&(endRow=this.end.row,endColumn=this.end.column);for(var i=0;folds.length>i;i++){if(fold=folds[i],comp=fold.range.compareStart(endRow,endColumn),-1==comp)return callback(null,endRow,endColumn,lastEnd,isNewRow),void 0;if(stop=callback(null,fold.start.row,fold.start.column,lastEnd,isNewRow),stop=!stop&&callback(fold.placeholder,fold.start.row,fold.start.column,lastEnd),stop||0==comp)return;isNewRow=!fold.sameRow,lastEnd=fold.end.column}callback(null,endRow,endColumn,lastEnd,isNewRow)},this.getNextFoldTo=function(row,column){for(var fold,cmp,i=0;this.folds.length>i;i++){if(fold=this.folds[i],cmp=fold.range.compareEnd(row,column),-1==cmp)return{fold:fold,kind:\"after\"};if(0==cmp)return{fold:fold,kind:\"inside\"}}return null},this.addRemoveChars=function(row,column,len){var fold,folds,ret=this.getNextFoldTo(row,column);if(ret)if(fold=ret.fold,\"inside\"==ret.kind&&fold.start.column!=column&&fold.start.row!=row)window.console&&window.console.log(row,column,fold);else if(fold.start.row==row){folds=this.folds;var i=folds.indexOf(fold);for(0==i&&(this.start.column+=len),i;folds.length>i;i++){if(fold=folds[i],fold.start.column+=len,!fold.sameRow)return;fold.end.column+=len}this.end.column+=len}},this.split=function(row,column){var fold=this.getNextFoldTo(row,column).fold,folds=this.folds,foldData=this.foldData;if(!fold)return null;var i=folds.indexOf(fold),foldBefore=folds[i-1];this.end.row=foldBefore.end.row,this.end.column=foldBefore.end.column,folds=folds.splice(i,folds.length-i);var newFoldLine=new FoldLine(foldData,folds);return foldData.splice(foldData.indexOf(this)+1,0,newFoldLine),newFoldLine},this.merge=function(foldLineNext){for(var folds=foldLineNext.folds,i=0;folds.length>i;i++)this.addFold(folds[i]);var foldData=this.foldData;foldData.splice(foldData.indexOf(foldLineNext),1)},this.toString=function(){var ret=[\"\"+this.range+\": [\"];return this.folds.forEach(function(fold){ret.push(\" \"+(\"\"+fold))}),ret.push(\"]\"),ret.join(\"\\n\")},this.idxToPosition=function(idx){for(var fold,lastFoldEndColumn=0,i=0;this.folds.length>i;i++){var fold=this.folds[i];if(idx-=fold.start.column-lastFoldEndColumn,0>idx)return{row:fold.start.row,column:fold.start.column+idx};if(idx-=fold.placeholder.length,0>idx)return fold.start;lastFoldEndColumn=fold.end.column}return{row:this.end.row,column:this.end.column+idx}}}).call(FoldLine.prototype),exports.FoldLine=FoldLine}),ace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/range_list\",\"ace/lib/oop\"],function(acequire,exports){function consumePoint(point,anchor){point.row-=anchor.row,0==point.row&&(point.column-=anchor.column)}function consumeRange(range,anchor){consumePoint(range.start,anchor),consumePoint(range.end,anchor)}function restorePoint(point,anchor){0==point.row&&(point.column+=anchor.column),point.row+=anchor.row}function restoreRange(range,anchor){restorePoint(range.start,anchor),restorePoint(range.end,anchor)}acequire(\"../range\").Range;var RangeList=acequire(\"../range_list\").RangeList,oop=acequire(\"../lib/oop\"),Fold=exports.Fold=function(range,placeholder){this.foldLine=null,this.placeholder=placeholder,this.range=range,this.start=range.start,this.end=range.end,this.sameRow=range.start.row==range.end.row,this.subFolds=this.ranges=[]};oop.inherits(Fold,RangeList),function(){this.toString=function(){return'\"'+this.placeholder+'\" '+(\"\"+this.range)\n},this.setFoldLine=function(foldLine){this.foldLine=foldLine,this.subFolds.forEach(function(fold){fold.setFoldLine(foldLine)})},this.clone=function(){var range=this.range.clone(),fold=new Fold(range,this.placeholder);return this.subFolds.forEach(function(subFold){fold.subFolds.push(subFold.clone())}),fold.collapseChildren=this.collapseChildren,fold},this.addSubFold=function(fold){if(!this.range.isEqual(fold)){if(!this.range.containsRange(fold))throw\"A fold can't intersect already existing fold\"+fold.range+this.range;consumeRange(fold,this.start);for(var row=fold.start.row,column=fold.start.column,i=0,cmp=-1;this.subFolds.length>i&&(cmp=this.subFolds[i].range.compare(row,column),1==cmp);i++);var afterStart=this.subFolds[i];if(0==cmp)return afterStart.addSubFold(fold);for(var row=fold.range.end.row,column=fold.range.end.column,j=i,cmp=-1;this.subFolds.length>j&&(cmp=this.subFolds[j].range.compare(row,column),1==cmp);j++);if(this.subFolds[j],0==cmp)throw\"A fold can't intersect already existing fold\"+fold.range+this.range;return this.subFolds.splice(i,j-i,fold),fold.setFoldLine(this.foldLine),fold}},this.restoreRange=function(range){return restoreRange(range,this.start)}}.call(Fold.prototype)}),ace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(acequire,exports){var Range=acequire(\"./range\").Range,comparePoints=Range.comparePoints,RangeList=function(){this.ranges=[]};(function(){this.comparePoints=comparePoints,this.pointIndex=function(pos,excludeEdges,startIndex){for(var list=this.ranges,i=startIndex||0;list.length>i;i++){var range=list[i],cmpEnd=comparePoints(pos,range.end);if(!(cmpEnd>0)){var cmpStart=comparePoints(pos,range.start);return 0===cmpEnd?excludeEdges&&0!==cmpStart?-i-2:i:cmpStart>0||0===cmpStart&&!excludeEdges?i:-i-1}}return-i-1},this.add=function(range){var excludeEdges=!range.isEmpty(),startIndex=this.pointIndex(range.start,excludeEdges);0>startIndex&&(startIndex=-startIndex-1);var endIndex=this.pointIndex(range.end,excludeEdges,startIndex);return 0>endIndex?endIndex=-endIndex-1:endIndex++,this.ranges.splice(startIndex,endIndex-startIndex,range)},this.addList=function(list){for(var removed=[],i=list.length;i--;)removed.push.call(removed,this.add(list[i]));return removed},this.substractPoint=function(pos){var i=this.pointIndex(pos);return i>=0?this.ranges.splice(i,1):void 0},this.merge=function(){var removed=[],list=this.ranges;list=list.sort(function(a,b){return comparePoints(a.start,b.start)});for(var range,next=list[0],i=1;list.length>i;i++){range=next,next=list[i];var cmp=comparePoints(range.end,next.start);0>cmp||(0!=cmp||range.isEmpty()||next.isEmpty())&&(0>comparePoints(range.end,next.end)&&(range.end.row=next.end.row,range.end.column=next.end.column),list.splice(i,1),removed.push(next),next=range,i--)}return this.ranges=list,removed},this.contains=function(row,column){return this.pointIndex({row:row,column:column})>=0},this.containsPoint=function(pos){return this.pointIndex(pos)>=0},this.rangeAtPoint=function(pos){var i=this.pointIndex(pos);return i>=0?this.ranges[i]:void 0},this.clipRows=function(startRow,endRow){var list=this.ranges;if(list[0].start.row>endRow||startRow>list[list.length-1].start.row)return[];var startIndex=this.pointIndex({row:startRow,column:0});0>startIndex&&(startIndex=-startIndex-1);var endIndex=this.pointIndex({row:endRow,column:0},startIndex);0>endIndex&&(endIndex=-endIndex-1);for(var clipped=[],i=startIndex;endIndex>i;i++)clipped.push(list[i]);return clipped},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(session){this.session&&this.detach(),this.session=session,this.onChange=this.$onChange.bind(this),this.session.on(\"change\",this.onChange)},this.detach=function(){this.session&&(this.session.removeListener(\"change\",this.onChange),this.session=null)},this.$onChange=function(e){var changeRange=e.data.range;if(\"i\"==e.data.action[0])var start=changeRange.start,end=changeRange.end;else var end=changeRange.start,start=changeRange.end;for(var startRow=start.row,endRow=end.row,lineDif=endRow-startRow,colDiff=-start.column+end.column,ranges=this.ranges,i=0,n=ranges.length;n>i;i++){var r=ranges[i];if(!(startRow>r.end.row)){if(r.start.row>startRow)break;r.start.row==startRow&&r.start.column>=start.column&&(r.start.column+=colDiff,r.start.row+=lineDif),r.end.row==startRow&&r.end.column>=start.column&&(r.end.column==start.column&&colDiff>0&&n-1>i&&r.end.column>r.start.column&&r.end.column==ranges[i+1].start.column&&(r.end.column-=colDiff),r.end.column+=colDiff,r.end.row+=lineDif)}}if(0!=lineDif&&n>i)for(;n>i;i++){var r=ranges[i];r.start.row+=lineDif,r.end.row+=lineDif}}}).call(RangeList.prototype),exports.RangeList=RangeList}),ace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var TokenIterator=function(session,initialRow,initialColumn){this.$session=session,this.$row=initialRow,this.$rowTokens=session.getTokens(initialRow);var token=session.getTokenAt(initialRow,initialColumn);this.$tokenIndex=token?token.index:-1};(function(){this.stepBackward=function(){for(this.$tokenIndex-=1;0>this.$tokenIndex;){if(this.$row-=1,0>this.$row)return this.$row=0,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=this.$rowTokens.length-1}return this.$rowTokens[this.$tokenIndex]},this.stepForward=function(){this.$tokenIndex+=1;for(var rowCount;this.$tokenIndex>=this.$rowTokens.length;){if(this.$row+=1,rowCount||(rowCount=this.$session.getLength()),this.$row>=rowCount)return this.$row=rowCount-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var rowTokens=this.$rowTokens,tokenIndex=this.$tokenIndex,column=rowTokens[tokenIndex].start;if(void 0!==column)return column;for(column=0;tokenIndex>0;)tokenIndex-=1,column+=rowTokens[tokenIndex].value.length;return column}}).call(TokenIterator.prototype),exports.TokenIterator=TokenIterator}),ace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"],function(acequire,exports){function BracketMatch(){this.findMatchingBracket=function(position,chr){if(0==position.column)return null;var charBeforeCursor=chr||this.getLine(position.row).charAt(position.column-1);if(\"\"==charBeforeCursor)return null;var match=charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);return match?match[1]?this.$findClosingBracket(match[1],position):this.$findOpeningBracket(match[2],position):null},this.getBracketRange=function(pos){var range,line=this.getLine(pos.row),before=!0,chr=line.charAt(pos.column-1),match=chr&&chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);if(match||(chr=line.charAt(pos.column),pos={row:pos.row,column:pos.column+1},match=chr&&chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/),before=!1),!match)return null;if(match[1]){var bracketPos=this.$findClosingBracket(match[1],pos);if(!bracketPos)return null;range=Range.fromPoints(pos,bracketPos),before||(range.end.column++,range.start.column--),range.cursor=range.end}else{var bracketPos=this.$findOpeningBracket(match[2],pos);if(!bracketPos)return null;range=Range.fromPoints(bracketPos,pos),before||(range.start.column++,range.end.column--),range.cursor=range.start}return range},this.$brackets={\")\":\"(\",\"(\":\")\",\"]\":\"[\",\"[\":\"]\",\"{\":\"}\",\"}\":\"{\"},this.$findOpeningBracket=function(bracket,position,typeRe){var openBracket=this.$brackets[bracket],depth=1,iterator=new TokenIterator(this,position.row,position.column),token=iterator.getCurrentToken();if(token||(token=iterator.stepForward()),token){typeRe||(typeRe=RegExp(\"(\\\\.?\"+token.type.replace(\".\",\"\\\\.\").replace(\"rparen\",\".paren\")+\")+\"));for(var valueIndex=position.column-iterator.getCurrentTokenColumn()-2,value=token.value;;){for(;valueIndex>=0;){var chr=value.charAt(valueIndex);if(chr==openBracket){if(depth-=1,0==depth)return{row:iterator.getCurrentTokenRow(),column:valueIndex+iterator.getCurrentTokenColumn()}}else chr==bracket&&(depth+=1);valueIndex-=1}do token=iterator.stepBackward();while(token&&!typeRe.test(token.type));if(null==token)break;value=token.value,valueIndex=value.length-1}return null}},this.$findClosingBracket=function(bracket,position,typeRe){var closingBracket=this.$brackets[bracket],depth=1,iterator=new TokenIterator(this,position.row,position.column),token=iterator.getCurrentToken();if(token||(token=iterator.stepForward()),token){typeRe||(typeRe=RegExp(\"(\\\\.?\"+token.type.replace(\".\",\"\\\\.\").replace(\"lparen\",\".paren\")+\")+\"));for(var valueIndex=position.column-iterator.getCurrentTokenColumn();;){for(var value=token.value,valueLength=value.length;valueLength>valueIndex;){var chr=value.charAt(valueIndex);if(chr==closingBracket){if(depth-=1,0==depth)return{row:iterator.getCurrentTokenRow(),column:valueIndex+iterator.getCurrentTokenColumn()}}else chr==bracket&&(depth+=1);valueIndex+=1}do token=iterator.stepForward();while(token&&!typeRe.test(token.type));if(null==token)break;valueIndex=0}return null}}}var TokenIterator=acequire(\"../token_iterator\").TokenIterator,Range=acequire(\"../range\").Range;exports.BracketMatch=BracketMatch}),ace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"],function(acequire,exports){var lang=acequire(\"./lib/lang\"),oop=acequire(\"./lib/oop\"),Range=acequire(\"./range\").Range,Search=function(){this.$options={}};(function(){this.set=function(options){return oop.mixin(this.$options,options),this},this.getOptions=function(){return lang.copyObject(this.$options)},this.setOptions=function(options){this.$options=options},this.find=function(session){var iterator=this.$matchIterator(session,this.$options);if(!iterator)return!1;var firstRange=null;return iterator.forEach(function(range,row,offset){if(range.start)firstRange=range;else{var column=range.offset+(offset||0);firstRange=new Range(row,column,row,column+range.length)}return!0}),firstRange},this.findAll=function(session){var options=this.$options;if(!options.needle)return[];this.$assembleRegExp(options);var range=options.range,lines=range?session.getLines(range.start.row,range.end.row):session.doc.getAllLines(),ranges=[],re=options.re;if(options.$isMultiLine)for(var len=re.length,maxRow=lines.length-len,row=re.offset||0;maxRow>=row;row++){for(var j=0;len>j&&-1!=lines[row+j].search(re[j]);j++);var startLine=lines[row],line=lines[row+len-1],startIndex=startLine.match(re[0])[0].length,endIndex=line.match(re[len-1])[0].length;ranges.push(new Range(row,startLine.length-startIndex,row+len-1,endIndex))}else for(var i=0;lines.length>i;i++)for(var matches=lang.getMatchOffsets(lines[i],re),j=0;matches.length>j;j++){var match=matches[j];ranges.push(new Range(i,match.offset,i,match.offset+match.length))}if(range){for(var startColumn=range.start.column,endColumn=range.start.column,i=0,j=ranges.length-1;j>i&&startColumn>ranges[i].start.column&&ranges[i].start.row==range.start.row;)i++;for(;j>i&&ranges[j].end.column>endColumn&&ranges[j].end.row==range.end.row;)j--;return ranges.slice(i,j+1)}return ranges},this.replace=function(input,replacement){var options=this.$options,re=this.$assembleRegExp(options);if(options.$isMultiLine)return replacement;if(re){var match=re.exec(input);if(!match||match[0].length!=input.length)return null;if(replacement=input.replace(re,replacement),options.preserveCase){replacement=replacement.split(\"\");for(var i=Math.min(input.length,input.length);i--;){var ch=input[i];replacement[i]=ch&&ch.toLowerCase()!=ch?replacement[i].toUpperCase():replacement[i].toLowerCase()}replacement=replacement.join(\"\")}return replacement}},this.$matchIterator=function(session,options){var re=this.$assembleRegExp(options);if(!re)return!1;var callback,self=this,backwards=options.backwards;if(options.$isMultiLine)var len=re.length,matchIterator=function(line,row,offset){var startIndex=line.search(re[0]);if(-1!=startIndex){for(var i=1;len>i;i++)if(line=session.getLine(row+i),-1==line.search(re[i]))return;var endIndex=line.match(re[len-1])[0].length,range=new Range(row,startIndex,row+len-1,endIndex);return 1==re.offset?(range.start.row--,range.start.column=Number.MAX_VALUE):offset&&(range.start.column+=offset),callback(range)?!0:void 0}};else if(backwards)var matchIterator=function(line,row,startIndex){for(var matches=lang.getMatchOffsets(line,re),i=matches.length-1;i>=0;i--)if(callback(matches[i],row,startIndex))return!0};else var matchIterator=function(line,row,startIndex){for(var matches=lang.getMatchOffsets(line,re),i=0;matches.length>i;i++)if(callback(matches[i],row,startIndex))return!0};return{forEach:function(_callback){callback=_callback,self.$lineIterator(session,options).forEach(matchIterator)}}},this.$assembleRegExp=function(options){if(options.needle instanceof RegExp)return options.re=options.needle;var needle=options.needle;if(!options.needle)return options.re=!1;options.regExp||(needle=lang.escapeRegExp(needle)),options.wholeWord&&(needle=\"\\\\b\"+needle+\"\\\\b\");var modifier=options.caseSensitive?\"g\":\"gi\";if(options.$isMultiLine=/[\\n\\r]/.test(needle),options.$isMultiLine)return options.re=this.$assembleMultilineRegExp(needle,modifier);try{var re=RegExp(needle,modifier)}catch(e){re=!1}return options.re=re},this.$assembleMultilineRegExp=function(needle,modifier){for(var parts=needle.replace(/\\r\\n|\\r|\\n/g,\"$\\n^\").split(\"\\n\"),re=[],i=0;parts.length>i;i++)try{re.push(RegExp(parts[i],modifier))}catch(e){return!1}return\"\"==parts[0]?(re.shift(),re.offset=1):re.offset=0,re},this.$lineIterator=function(session,options){var backwards=1==options.backwards,skipCurrent=0!=options.skipCurrent,range=options.range,start=options.start;start||(start=range?range[backwards?\"end\":\"start\"]:session.selection.getRange()),start.start&&(start=start[skipCurrent!=backwards?\"end\":\"start\"]);var firstRow=range?range.start.row:0,lastRow=range?range.end.row:session.getLength()-1,forEach=backwards?function(callback){var row=start.row,line=session.getLine(row).substring(0,start.column);if(!callback(line,row)){for(row--;row>=firstRow;row--)if(callback(session.getLine(row),row))return;if(0!=options.wrap)for(row=lastRow,firstRow=start.row;row>=firstRow;row--)if(callback(session.getLine(row),row))return}}:function(callback){var row=start.row,line=session.getLine(row).substr(start.column);if(!callback(line,row,start.column)){for(row+=1;lastRow>=row;row++)if(callback(session.getLine(row),row))return;if(0!=options.wrap)for(row=firstRow,lastRow=start.row;lastRow>=row;row++)if(callback(session.getLine(row),row))return}};return{forEach:forEach}}}).call(Search.prototype),exports.Search=Search}),ace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"../lib/oop\"),HashHandler=acequire(\"../keyboard/hash_handler\").HashHandler,EventEmitter=acequire(\"../lib/event_emitter\").EventEmitter,CommandManager=function(platform,commands){this.platform=platform,this.commands=this.byName={},this.commmandKeyBinding={},this.addCommands(commands),this.setDefaultHandler(\"exec\",function(e){return e.command.exec(e.editor,e.args||{})})};oop.inherits(CommandManager,HashHandler),function(){oop.implement(this,EventEmitter),this.exec=function(command,editor,args){if(\"string\"==typeof command&&(command=this.commands[command]),!command)return!1;if(editor&&editor.$readOnly&&!command.readOnly)return!1;var e={editor:editor,command:command,args:args},retvalue=this._emit(\"exec\",e);return this._signal(\"afterExec\",e),retvalue===!1?!1:!0},this.toggleRecording=function(editor){return this.$inReplay?void 0:(editor&&editor._emit(\"changeStatus\"),this.recording?(this.macro.pop(),this.removeEventListener(\"exec\",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on(\"exec\",this.$addCommandToMacro),this.recording=!0))},this.replay=function(editor){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(editor);try{this.$inReplay=!0,this.macro.forEach(function(x){\"string\"==typeof x?this.exec(x,editor):this.exec(x[0],editor,x[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(m){return m.map(function(x){return\"string\"!=typeof x[0]&&(x[0]=x[0].name),x[1]||(x=x[0]),x})}}.call(CommandManager.prototype),exports.CommandManager=CommandManager}),ace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"],function(acequire,exports){function HashHandler(config,platform){this.platform=platform||(useragent.isMac?\"mac\":\"win\"),this.commands={},this.commmandKeyBinding={},this.addCommands(config)}var keyUtil=acequire(\"../lib/keys\"),useragent=acequire(\"../lib/useragent\");(function(){this.addCommand=function(command){this.commands[command.name]&&this.removeCommand(command),this.commands[command.name]=command,command.bindKey&&this._buildKeyHash(command)},this.removeCommand=function(command){var name=\"string\"==typeof command?command:command.name;command=this.commands[name],delete this.commands[name];var ckb=this.commmandKeyBinding;for(var hashId in ckb)for(var key in ckb[hashId])ckb[hashId][key]==command&&delete ckb[hashId][key]},this.bindKey=function(key,command){if(key){if(\"function\"==typeof command)return this.addCommand({exec:command,bindKey:key,name:command.name||key}),void 0;var ckb=this.commmandKeyBinding;key.split(\"|\").forEach(function(keyPart){var binding=this.parseKeys(keyPart,command),hashId=binding.hashId;(ckb[hashId]||(ckb[hashId]={}))[binding.key]=command},this)}},this.addCommands=function(commands){commands&&Object.keys(commands).forEach(function(name){var command=commands[name];return\"string\"==typeof command?this.bindKey(command,name):(\"function\"==typeof command&&(command={exec:command}),command.name||(command.name=name),this.addCommand(command),void 0)},this)},this.removeCommands=function(commands){Object.keys(commands).forEach(function(name){this.removeCommand(commands[name])},this)},this.bindKeys=function(keyList){Object.keys(keyList).forEach(function(key){this.bindKey(key,keyList[key])},this)},this._buildKeyHash=function(command){var binding=command.bindKey;if(binding){var key=\"string\"==typeof binding?binding:binding[this.platform];this.bindKey(key,command)}},this.parseKeys=function(keys){-1!=keys.indexOf(\" \")&&(keys=keys.split(/\\s+/).pop());var parts=keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(x){return x}),key=parts.pop(),keyCode=keyUtil[key];if(keyUtil.FUNCTION_KEYS[keyCode])key=keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();else{if(!parts.length)return{key:key,hashId:-1};if(1==parts.length&&\"shift\"==parts[0])return{key:key.toUpperCase(),hashId:-1}}for(var hashId=0,i=parts.length;i--;){var modifier=keyUtil.KEY_MODS[parts[i]];if(null==modifier)return\"undefined\"!=typeof console&&console.error(\"invalid modifier \"+parts[i]+\" in \"+keys),!1;hashId|=modifier}return{key:key,hashId:hashId}},this.findKeyCommand=function(hashId,keyString){var ckbr=this.commmandKeyBinding;return ckbr[hashId]&&ckbr[hashId][keyString]},this.handleKeyboard=function(data,hashId,keyString){return{command:this.findKeyCommand(hashId,keyString)}}}).call(HashHandler.prototype),exports.HashHandler=HashHandler}),ace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\"],function(acequire,exports){function bindKey(win,mac){return{win:win,mac:mac}}var lang=acequire(\"../lib/lang\"),config=acequire(\"../config\");exports.commands=[{name:\"selectall\",bindKey:bindKey(\"Ctrl-A\",\"Command-A\"),exec:function(editor){editor.selectAll()},readOnly:!0},{name:\"centerselection\",bindKey:bindKey(null,\"Ctrl-L\"),exec:function(editor){editor.centerSelection()},readOnly:!0},{name:\"gotoline\",bindKey:bindKey(\"Ctrl-L\",\"Command-L\"),exec:function(editor){var line=parseInt(prompt(\"Enter line number:\"),10);isNaN(line)||editor.gotoLine(line)},readOnly:!0},{name:\"fold\",bindKey:bindKey(\"Alt-L|Ctrl-F1\",\"Command-Alt-L|Command-F1\"),exec:function(editor){editor.session.toggleFold(!1)},readOnly:!0},{name:\"unfold\",bindKey:bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\",\"Command-Alt-Shift-L|Command-Shift-F1\"),exec:function(editor){editor.session.toggleFold(!0)},readOnly:!0},{name:\"foldall\",bindKey:bindKey(\"Alt-0\",\"Command-Option-0\"),exec:function(editor){editor.session.foldAll()},readOnly:!0},{name:\"unfoldall\",bindKey:bindKey(\"Alt-Shift-0\",\"Command-Option-Shift-0\"),exec:function(editor){editor.session.unfold()},readOnly:!0},{name:\"findnext\",bindKey:bindKey(\"Ctrl-K\",\"Command-G\"),exec:function(editor){editor.findNext()},readOnly:!0},{name:\"findprevious\",bindKey:bindKey(\"Ctrl-Shift-K\",\"Command-Shift-G\"),exec:function(editor){editor.findPrevious()},readOnly:!0},{name:\"find\",bindKey:bindKey(\"Ctrl-F\",\"Command-F\"),exec:function(editor){config.loadModule(\"ace/ext/searchbox\",function(e){e.Search(editor)})},readOnly:!0},{name:\"overwrite\",bindKey:\"Insert\",exec:function(editor){editor.toggleOverwrite()},readOnly:!0},{name:\"selecttostart\",bindKey:bindKey(\"Ctrl-Shift-Home\",\"Command-Shift-Up\"),exec:function(editor){editor.getSelection().selectFileStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotostart\",bindKey:bindKey(\"Ctrl-Home\",\"Command-Home|Command-Up\"),exec:function(editor){editor.navigateFileStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectup\",bindKey:bindKey(\"Shift-Up\",\"Shift-Up\"),exec:function(editor){editor.getSelection().selectUp()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"golineup\",bindKey:bindKey(\"Up\",\"Up|Ctrl-P\"),exec:function(editor,args){editor.navigateUp(args.times)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selecttoend\",bindKey:bindKey(\"Ctrl-Shift-End\",\"Command-Shift-Down\"),exec:function(editor){editor.getSelection().selectFileEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotoend\",bindKey:bindKey(\"Ctrl-End\",\"Command-End|Command-Down\"),exec:function(editor){editor.navigateFileEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectdown\",bindKey:bindKey(\"Shift-Down\",\"Shift-Down\"),exec:function(editor){editor.getSelection().selectDown()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"golinedown\",bindKey:bindKey(\"Down\",\"Down|Ctrl-N\"),exec:function(editor,args){editor.navigateDown(args.times)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectwordleft\",bindKey:bindKey(\"Ctrl-Shift-Left\",\"Option-Shift-Left\"),exec:function(editor){editor.getSelection().selectWordLeft()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotowordleft\",bindKey:bindKey(\"Ctrl-Left\",\"Option-Left\"),exec:function(editor){editor.navigateWordLeft()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selecttolinestart\",bindKey:bindKey(\"Alt-Shift-Left\",\"Command-Shift-Left\"),exec:function(editor){editor.getSelection().selectLineStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotolinestart\",bindKey:bindKey(\"Alt-Left|Home\",\"Command-Left|Home|Ctrl-A\"),exec:function(editor){editor.navigateLineStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectleft\",bindKey:bindKey(\"Shift-Left\",\"Shift-Left\"),exec:function(editor){editor.getSelection().selectLeft()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotoleft\",bindKey:bindKey(\"Left\",\"Left|Ctrl-B\"),exec:function(editor,args){editor.navigateLeft(args.times)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectwordright\",bindKey:bindKey(\"Ctrl-Shift-Right\",\"Option-Shift-Right\"),exec:function(editor){editor.getSelection().selectWordRight()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotowordright\",bindKey:bindKey(\"Ctrl-Right\",\"Option-Right\"),exec:function(editor){editor.navigateWordRight()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selecttolineend\",bindKey:bindKey(\"Alt-Shift-Right\",\"Command-Shift-Right\"),exec:function(editor){editor.getSelection().selectLineEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotolineend\",bindKey:bindKey(\"Alt-Right|End\",\"Command-Right|End|Ctrl-E\"),exec:function(editor){editor.navigateLineEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectright\",bindKey:bindKey(\"Shift-Right\",\"Shift-Right\"),exec:function(editor){editor.getSelection().selectRight()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotoright\",bindKey:bindKey(\"Right\",\"Right|Ctrl-F\"),exec:function(editor,args){editor.navigateRight(args.times)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectpagedown\",bindKey:\"Shift-PageDown\",exec:function(editor){editor.selectPageDown()},readOnly:!0},{name:\"pagedown\",bindKey:bindKey(null,\"Option-PageDown\"),exec:function(editor){editor.scrollPageDown()},readOnly:!0},{name:\"gotopagedown\",bindKey:bindKey(\"PageDown\",\"PageDown|Ctrl-V\"),exec:function(editor){editor.gotoPageDown()},readOnly:!0},{name:\"selectpageup\",bindKey:\"Shift-PageUp\",exec:function(editor){editor.selectPageUp()},readOnly:!0},{name:\"pageup\",bindKey:bindKey(null,\"Option-PageUp\"),exec:function(editor){editor.scrollPageUp()},readOnly:!0},{name:\"gotopageup\",bindKey:\"PageUp\",exec:function(editor){editor.gotoPageUp()},readOnly:!0},{name:\"scrollup\",bindKey:bindKey(\"Ctrl-Up\",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:\"scrolldown\",bindKey:bindKey(\"Ctrl-Down\",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:\"selectlinestart\",bindKey:\"Shift-Home\",exec:function(editor){editor.getSelection().selectLineStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectlineend\",bindKey:\"Shift-End\",exec:function(editor){editor.getSelection().selectLineEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"togglerecording\",bindKey:bindKey(\"Ctrl-Alt-E\",\"Command-Option-E\"),exec:function(editor){editor.commands.toggleRecording(editor)},readOnly:!0},{name:\"replaymacro\",bindKey:bindKey(\"Ctrl-Shift-E\",\"Command-Shift-E\"),exec:function(editor){editor.commands.replay(editor)},readOnly:!0},{name:\"jumptomatching\",bindKey:bindKey(\"Ctrl-P\",\"Ctrl-Shift-P\"),exec:function(editor){editor.jumpToMatching()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selecttomatching\",bindKey:bindKey(\"Ctrl-Shift-P\",null),exec:function(editor){editor.jumpToMatching(!0)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"cut\",exec:function(editor){var range=editor.getSelectionRange();editor._emit(\"cut\",range),editor.selection.isEmpty()||(editor.session.remove(range),editor.clearSelection())},multiSelectAction:\"forEach\"},{name:\"removeline\",bindKey:bindKey(\"Ctrl-D\",\"Command-D\"),exec:function(editor){editor.removeLines()},multiSelectAction:\"forEachLine\"},{name:\"duplicateSelection\",bindKey:bindKey(\"Ctrl-Shift-D\",\"Command-Shift-D\"),exec:function(editor){editor.duplicateSelection()},multiSelectAction:\"forEach\"},{name:\"sortlines\",bindKey:bindKey(\"Ctrl-Alt-S\",\"Command-Alt-S\"),exec:function(editor){editor.sortLines()},multiSelectAction:\"forEachLine\"},{name:\"togglecomment\",bindKey:bindKey(\"Ctrl-/\",\"Command-/\"),exec:function(editor){editor.toggleCommentLines()},multiSelectAction:\"forEachLine\"},{name:\"modifyNumberUp\",bindKey:bindKey(\"Ctrl-Shift-Up\",\"Alt-Shift-Up\"),exec:function(editor){editor.modifyNumber(1)},multiSelectAction:\"forEach\"},{name:\"modifyNumberDown\",bindKey:bindKey(\"Ctrl-Shift-Down\",\"Alt-Shift-Down\"),exec:function(editor){editor.modifyNumber(-1)},multiSelectAction:\"forEach\"},{name:\"replace\",bindKey:bindKey(\"Ctrl-H\",\"Command-Option-F\"),exec:function(editor){config.loadModule(\"ace/ext/searchbox\",function(e){e.Search(editor,!0)})}},{name:\"undo\",bindKey:bindKey(\"Ctrl-Z\",\"Command-Z\"),exec:function(editor){editor.undo()}},{name:\"redo\",bindKey:bindKey(\"Ctrl-Shift-Z|Ctrl-Y\",\"Command-Shift-Z|Command-Y\"),exec:function(editor){editor.redo()}},{name:\"copylinesup\",bindKey:bindKey(\"Alt-Shift-Up\",\"Command-Option-Up\"),exec:function(editor){editor.copyLinesUp()}},{name:\"movelinesup\",bindKey:bindKey(\"Alt-Up\",\"Option-Up\"),exec:function(editor){editor.moveLinesUp()}},{name:\"copylinesdown\",bindKey:bindKey(\"Alt-Shift-Down\",\"Command-Option-Down\"),exec:function(editor){editor.copyLinesDown()}},{name:\"movelinesdown\",bindKey:bindKey(\"Alt-Down\",\"Option-Down\"),exec:function(editor){editor.moveLinesDown()}},{name:\"del\",bindKey:bindKey(\"Delete\",\"Delete|Ctrl-D\"),exec:function(editor){editor.remove(\"right\")},multiSelectAction:\"forEach\"},{name:\"backspace\",bindKey:bindKey(\"Command-Backspace|Option-Backspace|Shift-Backspace|Backspace\",\"Ctrl-Backspace|Command-Backspace|Shift-Backspace|Backspace|Ctrl-H\"),exec:function(editor){editor.remove(\"left\")},multiSelectAction:\"forEach\"},{name:\"removetolinestart\",bindKey:bindKey(\"Alt-Backspace\",\"Command-Backspace\"),exec:function(editor){editor.removeToLineStart()},multiSelectAction:\"forEach\"},{name:\"removetolineend\",bindKey:bindKey(\"Alt-Delete\",\"Ctrl-K\"),exec:function(editor){editor.removeToLineEnd()},multiSelectAction:\"forEach\"},{name:\"removewordleft\",bindKey:bindKey(\"Ctrl-Backspace\",\"Alt-Backspace|Ctrl-Alt-Backspace\"),exec:function(editor){editor.removeWordLeft()},multiSelectAction:\"forEach\"},{name:\"removewordright\",bindKey:bindKey(\"Ctrl-Delete\",\"Alt-Delete\"),exec:function(editor){editor.removeWordRight()},multiSelectAction:\"forEach\"},{name:\"outdent\",bindKey:bindKey(\"Shift-Tab\",\"Shift-Tab\"),exec:function(editor){editor.blockOutdent()},multiSelectAction:\"forEach\"},{name:\"indent\",bindKey:bindKey(\"Tab\",\"Tab\"),exec:function(editor){editor.indent()},multiSelectAction:\"forEach\"},{name:\"blockoutdent\",bindKey:bindKey(\"Ctrl-[\",\"Ctrl-[\"),exec:function(editor){editor.blockOutdent()},multiSelectAction:\"forEachLine\"},{name:\"blockindent\",bindKey:bindKey(\"Ctrl-]\",\"Ctrl-]\"),exec:function(editor){editor.blockIndent()},multiSelectAction:\"forEachLine\"},{name:\"insertstring\",exec:function(editor,str){editor.insert(str)},multiSelectAction:\"forEach\"},{name:\"inserttext\",exec:function(editor,args){editor.insert(lang.stringRepeat(args.text||\"\",args.times||1))},multiSelectAction:\"forEach\"},{name:\"splitline\",bindKey:bindKey(null,\"Ctrl-O\"),exec:function(editor){editor.splitLine()},multiSelectAction:\"forEach\"},{name:\"transposeletters\",bindKey:bindKey(\"Ctrl-T\",\"Ctrl-T\"),exec:function(editor){editor.transposeLetters()},multiSelectAction:function(editor){editor.transposeSelections(1)}},{name:\"touppercase\",bindKey:bindKey(\"Ctrl-U\",\"Ctrl-U\"),exec:function(editor){editor.toUpperCase()},multiSelectAction:\"forEach\"},{name:\"tolowercase\",bindKey:bindKey(\"Ctrl-Shift-U\",\"Ctrl-Shift-U\"),exec:function(editor){editor.toLowerCase()},multiSelectAction:\"forEach\"}]}),ace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var UndoManager=function(){this.reset()};(function(){this.execute=function(options){var deltas=options.args[0];this.$doc=options.args[1],this.$undoStack.push(deltas),this.$redoStack=[]},this.undo=function(dontSelect){var deltas=this.$undoStack.pop(),undoSelectionRange=null;return deltas&&(undoSelectionRange=this.$doc.undoChanges(deltas,dontSelect),this.$redoStack.push(deltas)),undoSelectionRange},this.redo=function(dontSelect){var deltas=this.$redoStack.pop(),redoSelectionRange=null;return deltas&&(redoSelectionRange=this.$doc.redoChanges(deltas,dontSelect),this.$undoStack.push(deltas)),redoSelectionRange},this.reset=function(){this.$undoStack=[],this.$redoStack=[]},this.hasUndo=function(){return this.$undoStack.length>0},this.hasRedo=function(){return this.$redoStack.length>0}}).call(UndoManager.prototype),exports.UndoManager=UndoManager}),ace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/config\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/renderloop\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),dom=acequire(\"./lib/dom\"),event=acequire(\"./lib/event\"),useragent=acequire(\"./lib/useragent\"),config=acequire(\"./config\"),GutterLayer=acequire(\"./layer/gutter\").Gutter,MarkerLayer=acequire(\"./layer/marker\").Marker,TextLayer=acequire(\"./layer/text\").Text,CursorLayer=acequire(\"./layer/cursor\").Cursor,ScrollBar=acequire(\"./scrollbar\").ScrollBar,RenderLoop=acequire(\"./renderloop\").RenderLoop,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,editorCss=\".ace_editor {position: relative;overflow: hidden;font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;font-size: 12px;line-height: normal;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: text;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTQ4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTU4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBMjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBMzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkgXxbAAAAJbSURBVHjapFNNaBNBFH4zs5vdZLP5sQmNpT82QY209heh1ioWisaDRcSKF0WKJ0GQnrzrxasHsR6EnlrwD0TagxJabaVEpFYxLWlLSS822tr87m66ccfd2GKyVhA6MMybgfe97/vmPUQphd0sZjto9XIn9OOsvlu2nkqRzVU+6vvlzPf8W6bk8dxQ0NPbxAALgCgg2JkaQuhzQau/El0zbmUA7U0Es8v2CiYmKQJHGO1QICCLoqilMhkmurDAyapKgqItezi/USRdJqEYY4D5jCy03ht2yMkkvL91jTTX10qzyyu2hruPRN7jgbH+EOsXcMLgYiThEgAMhABW85oqy1DXdRIdvP1AHJ2acQXvDIrVHcdQNrEKNYSVMSZGMjEzIIAwDXIo+6G/FxcGnzkC3T2oMhLjre49sBB+RRcHLqdafK6sYdE/GGBwU1VpFNj0aN8pJbe+BkZyevUrvLl6Xmm0W9IuTc0DxrDNAJd5oEvI/KRsNC3bQyNjPO9yQ1YHcfj2QvfQc/5TUhJTBc2iM0U7AWDQtc1nJHvD/cfO2s7jaGkiTEfa/Ep8coLu7zmNmh8+dc5lZDuUeFAGUNA/OY6JVaypQ0vjr7XYjUvJM37vt+j1vuTK5DgVfVUoTjVe+y3/LxMxY2GgU+CSLy4cpfsYorRXuXIOi0Vt40h67uZFTdIo6nLaZcwUJWAzwNS0tBnqqKzQDnjdG/iPyZxo46HaKUpbvYkj8qYRTZsBhge+JHhZyh0x9b95JqjVJkT084kZIPwu/mPWqPgfQ5jXh2+92Ay7HedfAgwA6KDWafb4w3cAAAAASUVORK5CYII=\\\");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTg4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTk4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBNjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBNzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pgd7PfIAAAGmSURBVHjaYvr//z8DJZiJgUIANoCRkREb9gLiSVAaQx4OQM7AAkwd7XU2/v++/rOttdYGEB9dASEvOMydGKfH8Gv/p4XTkvRBfLxeQAP+1cUhXopyvzhP7P/IoSj7g7Mw09cNKO6J1QQ0L4gICPIv/veg/8W+JdFvQNLHVsW9/nmn9zk7B+cCkDwhL7gt6knSZnx9/LuCEOcvkIAMP+cvto9nfqyZmmUAksfnBUtbM60gX/3/kgyv3/xSFOL5DZT+L8vP+Yfh5cvfPvp/xUHyQHXGyAYwgpwBjZYFT3Y1OEl/OfCH4ffv3wzc4iwMvNIsDJ+f/mH4+vIPAxsb631WW0Yln6ZpQLXdMK/DXGDflh+sIv37EivD5x//Gb7+YWT4y86sl7BCCkSD+Z++/1dkvsFRl+HnD1Rvje4F8whjMXmGj58YGf5zsDMwcnAwfPvKcml62DsQDeaDxN+/Y0qwlpEHqrdB94IRNIDUgfgfKJChGK4OikEW3gTiXUB950ASLFAF54AC94A0G9QAfOnmF9DCDzABFqS08IHYDIScdijOjQABBgC+/9awBH96jwAAAABJRU5ErkJggg==\\\");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url(\\\"data:image/gif;base64,R0lGODlhEAAQAMQAAAAAAEFBQVJSUl5eXmRkZGtra39/f4WFhYmJiZGRkaampry8vMPDw8zMzNXV1dzc3OTk5Orq6vDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABQALAAAAAAQABAAAAUuICWOZGmeaBml5XGwFCQSBGyXRSAwtqQIiRuiwIM5BoYVbEFIyGCQoeJGrVptIQA7\\\");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRTk5MTVGREIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRTk5MTVGRUIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZFOTkxNUZCQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZFOTkxNUZDQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SIDkjAAAAJ1JREFUeNpi/P//PwMlgImBQkB7A6qrq/+DMC55FkIGKCoq4pVnpFkgTp069f/+/fv/r1u37r+tre1/kg0A+ptn9uzZYLaRkRHpLvjw4cNXWVlZhufPnzOcO3eOdAO0tbVPAjHDmzdvGA4fPsxIsgGSkpJmv379Ynj37h2DjIyMCMkG3LhxQ/T27dsMampqDHZ2dq/pH41DxwCAAAMAFdc68dUsFZgAAAAASUVORK5CYII=\\\");}.ace_scrollbar {position: absolute;overflow-x: hidden;overflow-y: scroll;right: 0;top: 0;bottom: 0;}.ace_scrollbar-inner {position: absolute;width: 1px;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;}.ace_text-input.ace_composition {background: #f8f8f8;color: #111;z-index: 1000;opacity: 1;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;white-space: nowrap;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;/* setting pointer-events: auto; on node under the mouse, which changesduring scroll, will break mouse wheel scrolling in Safari */pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {color: black;font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-moz-transition: opacity 0.18s;-webkit-transition: opacity 0.18s;-o-transition: opacity 0.18s;-ms-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_cursor[style*=\\\"opacity: 0\\\"]{-ms-filter: \\\"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\\\";}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_line {white-space: nowrap;}.ace_marker-layer .ace_step {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\\\"),url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%3AIDAT8%11c%FC%FF%FF%7F%18%03%1A%60%01%F2%3F%A0%891%80%04%FF%11-%F8%17%9BJ%E2%05%B1ZD%81v%26t%E7%80%F8%A3%82h%A12%1A%20%A3%01%02%0F%01%BA%25%06%00%19%C0%0D%AEF%D5%3ES%00%00%00%00IEND%AEB%60%82\\\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;-moz-border-radius: 2px;-webkit-border-radius: 2px;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\\\"),url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%003IDAT8%11c%FC%FF%FF%7F%3E%03%1A%60%01%F2%3F%A3%891%80%04%FFQ%26%F8w%C0%B43%A1%DB%0C%E2%8F%0A%A2%85%CAh%80%8C%06%08%3C%04%E8%96%18%00%A3S%0D%CD%CF%D8%C1%9D%00%00%00%00IEND%AEB%60%82\\\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;}.ace_editor.ace_dragging .ace_content {cursor: move;}.ace_gutter-tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;display: inline-block;max-width: 500px;padding: 4px;position: fixed;z-index: 300;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre-line;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: inline-block;width: 11px;vertical-align: top;background-image: url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAe%8A%B1%0D%000%0C%C2%F2%2CK%96%BC%D0%8F9%81%88H%E9%D0%0E%96%C0%10%92%3E%02%80%5E%82%E4%A9*-%EEsw%C8%CC%11%EE%96w%D8%DC%E9*Eh%0C%151(%00%00%00%00IEND%AEB%60%82\\\");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;}.ace_fold-widget.ace_end {background-image: url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAm%C7%C1%09%000%08C%D1%8C%ECE%C8E(%8E%EC%02)%1EZJ%F1%C1'%04%07I%E1%E5%EE%CAL%F5%A2%99%99%22%E2%D6%1FU%B5%FE0%D9x%A7%26Wz5%0E%D5%00%00%00%00IEND%AEB%60%82\\\");}.ace_fold-widget.ace_closed {background-image: url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%03%00%00%00%06%08%06%00%00%00%06%E5%24%0C%00%00%009IDATx%DA5%CA%C1%09%000%08%03%C0%AC*(%3E%04%C1%0D%BA%B1%23%A4Uh%E0%20%81%C0%CC%F8%82%81%AA%A2%AArGfr%88%08%11%11%1C%DD%7D%E0%EE%5B%F6%F6%CB%B8%05Q%2F%E9tai%D9%00%00%00%00IEND%AEB%60%82\\\");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}/*** Dark version for fold widgets*/.ace_dark .ace_fold-widget {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");}.ace_dark .ace_fold-widget.ace_end {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");}.ace_dark .ace_fold-widget.ace_closed {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-moz-transition: opacity 0.4s ease 0.05s;-webkit-transition: opacity 0.4s ease 0.05s;-o-transition: opacity 0.4s ease 0.05s;-ms-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-moz-transition: opacity 0.05s ease 0.05s;-webkit-transition: opacity 0.05s ease 0.05s;-o-transition: opacity 0.05s ease 0.05s;-ms-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}\";\ndom.importCssString(editorCss,\"ace_editor\");var VirtualRenderer=function(container,theme){var _self=this;this.container=container||dom.createElement(\"div\"),this.$keepTextAreaAtCursor=!useragent.isIE,dom.addCssClass(this.container,\"ace_editor\"),this.setTheme(theme),this.$gutter=dom.createElement(\"div\"),this.$gutter.className=\"ace_gutter\",this.container.appendChild(this.$gutter),this.scroller=dom.createElement(\"div\"),this.scroller.className=\"ace_scroller\",this.container.appendChild(this.scroller),this.content=dom.createElement(\"div\"),this.content.className=\"ace_content\",this.scroller.appendChild(this.content),this.$gutterLayer=new GutterLayer(this.$gutter),this.$gutterLayer.on(\"changeGutterWidth\",this.onGutterResize.bind(this)),this.$markerBack=new MarkerLayer(this.content);var textLayer=this.$textLayer=new TextLayer(this.content);this.canvas=textLayer.element,this.$markerFront=new MarkerLayer(this.content),this.$cursorLayer=new CursorLayer(this.content),this.$horizScroll=!1,this.scrollBar=new ScrollBar(this.container),this.scrollBar.addEventListener(\"scroll\",function(e){_self.$inScrollAnimation||_self.session.setScrollTop(e.data)}),this.scrollTop=0,this.scrollLeft=0,event.addListener(this.scroller,\"scroll\",function(){var scrollLeft=_self.scroller.scrollLeft;_self.scrollLeft=scrollLeft,_self.session.setScrollLeft(scrollLeft)}),this.cursorPos={row:0,column:0},this.$textLayer.addEventListener(\"changeCharacterSize\",function(){_self.updateCharacterSize(),_self.onResize(!0)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:1,characterWidth:1,minHeight:1,maxHeight:1,offset:0,height:1},this.$loop=new RenderLoop(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),config.resetOptions(this),config._emit(\"renderer\",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,oop.implement(this,EventEmitter),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle(\"ace_nobold\",!this.$allowBoldFonts)),this.characterWidth=this.$textLayer.getCharacterWidth(),this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(session){this.session=session,this.scroller.className=\"ace_scroller\",this.$cursorLayer.setSession(session),this.$markerBack.setSession(session),this.$markerFront.setSession(session),this.$gutterLayer.setSession(session),this.$textLayer.setSession(session),this.$loop.schedule(this.CHANGE_FULL)},this.updateLines=function(firstRow,lastRow){void 0===lastRow&&(lastRow=1/0),this.$changedLines?(this.$changedLines.firstRow>firstRow&&(this.$changedLines.firstRow=firstRow),lastRow>this.$changedLines.lastRow&&(this.$changedLines.lastRow=lastRow)):this.$changedLines={firstRow:firstRow,lastRow:lastRow},this.$changedLines.firstRow>this.layerConfig.lastRow||this.$changedLines.lastRow\u003Cthis.layerConfig.firstRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(force){force?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.onResize=function(force,gutterWidth,width,height){var changes=0,size=this.$size;if(!(this.resizing>2)){if(this.resizing>1?this.resizing++:this.resizing=force?1:0,height||(height=dom.getInnerHeight(this.container)),height&&(force||size.height!=height)&&(size.height=height,changes=this.CHANGE_SIZE,size.scrollerHeight=this.scroller.clientHeight,size.scrollerHeight||(size.scrollerHeight=size.height,this.$horizScroll&&(size.scrollerHeight-=this.scrollBar.getWidth())),this.scrollBar.setHeight(size.scrollerHeight),this.session&&(this.session.setScrollTop(this.getScrollTop()),changes|=this.CHANGE_FULL)),width||(width=dom.getInnerWidth(this.container)),width&&(force||this.resizing>1||size.width!=width)){changes=this.CHANGE_SIZE,size.width=width;var gutterWidth=this.$showGutter?this.$gutter.offsetWidth:0;this.scroller.style.left=gutterWidth+\"px\",size.scrollerWidth=Math.max(0,width-gutterWidth-this.scrollBar.getWidth()),this.scroller.style.right=this.scrollBar.getWidth()+\"px\",(this.session.getUseWrapMode()&&this.adjustWrapLimit()||force)&&(changes|=this.CHANGE_FULL)}this.$size.scrollerHeight&&(force?this.$renderChanges(changes,!0):this.$loop.schedule(changes),force&&(this.$gutterLayer.$padding=null),force&&delete this.resizing)}},this.onGutterResize=function(){var width=this.$size.width,gutterWidth=this.$showGutter?this.$gutter.offsetWidth:0;this.scroller.style.left=gutterWidth+\"px\",this.$size.scrollerWidth=Math.max(0,width-gutterWidth-this.scrollBar.getWidth()),this.session.getUseWrapMode()&&this.adjustWrapLimit()&&this.$loop.schedule(this.CHANGE_FULL)},this.adjustWrapLimit=function(){var availableWidth=this.$size.scrollerWidth-2*this.$padding,limit=Math.floor(availableWidth/this.characterWidth);return this.session.adjustWrapLimit(limit,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(shouldAnimate){this.setOption(\"animatedScroll\",shouldAnimate)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(showInvisibles){this.setOption(\"showInvisibles\",showInvisibles)},this.getShowInvisibles=function(){return this.getOption(\"showInvisibles\")},this.getDisplayIndentGuides=function(){return this.getOption(\"displayIndentGuides\")},this.setDisplayIndentGuides=function(display){this.setOption(\"displayIndentGuides\",display)},this.setShowPrintMargin=function(showPrintMargin){this.setOption(\"showPrintMargin\",showPrintMargin)},this.getShowPrintMargin=function(){return this.getOption(\"showPrintMargin\")},this.setPrintMarginColumn=function(showPrintMargin){this.setOption(\"printMarginColumn\",showPrintMargin)},this.getPrintMarginColumn=function(){return this.getOption(\"printMarginColumn\")},this.getShowGutter=function(){return this.getOption(\"showGutter\")},this.setShowGutter=function(show){return this.setOption(\"showGutter\",show)},this.getFadeFoldWidgets=function(){return this.getOption(\"fadeFoldWidgets\")},this.setFadeFoldWidgets=function(show){this.setOption(\"fadeFoldWidgets\",show)},this.setHighlightGutterLine=function(shouldHighlight){this.setOption(\"highlightGutterLine\",shouldHighlight)},this.getHighlightGutterLine=function(){return this.getOption(\"highlightGutterLine\")},this.$updateGutterLineHighlight=function(){var pos=this.$cursorLayer.$pixelPos,height=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var cursor=this.session.selection.getCursor();cursor.column=0,pos=this.$cursorLayer.getPixelPosition(cursor,!0),height*=this.session.getRowLength(cursor.row)}this.$gutterLineHighlight.style.top=pos.top-this.layerConfig.offset+\"px\",this.$gutterLineHighlight.style.height=height+\"px\"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var containerEl=dom.createElement(\"div\");containerEl.className=\"ace_layer ace_print-margin-layer\",this.$printMarginEl=dom.createElement(\"div\"),this.$printMarginEl.className=\"ace_print-margin\",containerEl.appendChild(this.$printMarginEl),this.content.insertBefore(containerEl,this.content.firstChild)}var style=this.$printMarginEl.style;style.left=this.characterWidth*this.$printMarginColumn+this.$padding+\"px\",style.visibility=this.$showPrintMargin?\"visible\":\"hidden\",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.content},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var config=this.layerConfig,posTop=this.$cursorLayer.$pixelPos.top,posLeft=this.$cursorLayer.$pixelPos.left;posTop-=config.offset;var h=this.lineHeight;if(!(0>posTop||posTop>config.height-h)){var w=this.characterWidth;if(this.$composition){var val=this.textarea.value.replace(/^\\x01+/,\"\");w*=this.session.$getStringScreenWidth(val)[0],h+=2,posTop-=1}posLeft-=this.scrollLeft,posLeft>this.$size.scrollerWidth-w&&(posLeft=this.$size.scrollerWidth-w),posLeft-=this.scrollBar.width,this.textarea.style.height=h+\"px\",this.textarea.style.width=w+\"px\",this.textarea.style.right=Math.max(0,this.$size.scrollerWidth-posLeft-w)+\"px\",this.textarea.style.bottom=Math.max(0,this.$size.height-posTop-h)+\"px\"}}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var flint=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+flint},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(padding){this.$padding=padding,this.$textLayer.setPadding(padding),this.$cursorLayer.setPadding(padding),this.$markerFront.setPadding(padding),this.$markerBack.setPadding(padding),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(alwaysVisible){this.setOption(\"hScrollBarAlwaysVisible\",alwaysVisible)},this.$updateScrollBar=function(){this.scrollBar.setInnerHeight(this.layerConfig.maxHeight),this.scrollBar.setScrollTop(this.scrollTop)},this.$renderChanges=function(changes,force){if(force||changes&&this.session&&this.container.offsetWidth){if(this._signal(\"beforeRender\"),(changes&this.CHANGE_FULL||changes&this.CHANGE_SIZE||changes&this.CHANGE_TEXT||changes&this.CHANGE_LINES||changes&this.CHANGE_SCROLL)&&this.$computeLayerConfig(),changes&this.CHANGE_H_SCROLL){this.scroller.scrollLeft=this.scrollLeft;var scrollLeft=this.scroller.scrollLeft;this.scrollLeft=scrollLeft,this.session.setScrollLeft(scrollLeft),this.scroller.className=0==this.scrollLeft?\"ace_scroller\":\"ace_scroller ace_scroll-left\"}if(changes&this.CHANGE_FULL)return this.$textLayer.checkForSizeChanges(),this.$updateScrollBar(),this.$textLayer.update(this.layerConfig),this.$showGutter&&this.$gutterLayer.update(this.layerConfig),this.$markerBack.update(this.layerConfig),this.$markerFront.update(this.layerConfig),this.$cursorLayer.update(this.layerConfig),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this._signal(\"afterRender\"),void 0;if(changes&this.CHANGE_SCROLL)return changes&this.CHANGE_TEXT||changes&this.CHANGE_LINES?this.$textLayer.update(this.layerConfig):this.$textLayer.scrollLines(this.layerConfig),this.$showGutter&&this.$gutterLayer.update(this.layerConfig),this.$markerBack.update(this.layerConfig),this.$markerFront.update(this.layerConfig),this.$cursorLayer.update(this.layerConfig),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),this.$updateScrollBar(),this._signal(\"afterRender\"),void 0;changes&this.CHANGE_TEXT?(this.$textLayer.update(this.layerConfig),this.$showGutter&&this.$gutterLayer.update(this.layerConfig)):changes&this.CHANGE_LINES?(this.$updateLines()||changes&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(this.layerConfig):(changes&this.CHANGE_TEXT||changes&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(this.layerConfig),changes&this.CHANGE_CURSOR&&(this.$cursorLayer.update(this.layerConfig),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),changes&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(this.layerConfig),changes&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(this.layerConfig),changes&this.CHANGE_SIZE&&this.$updateScrollBar(),this._signal(\"afterRender\")}},this.$computeLayerConfig=function(){if(!this.$size.scrollerHeight)return this.onResize(!0);var session=this.session,offset=this.scrollTop%this.lineHeight,minHeight=this.$size.scrollerHeight+this.lineHeight,longestLine=this.$getLongestLine(),horizScroll=this.$hScrollBarAlwaysVisible||0>this.$size.scrollerWidth-longestLine,horizScrollChanged=this.$horizScroll!==horizScroll;this.$horizScroll=horizScroll,horizScrollChanged&&(this.scroller.style.overflowX=horizScroll?\"scroll\":\"hidden\",horizScroll||this.session.setScrollLeft(0));var maxHeight=this.session.getScreenLength()*this.lineHeight;this.session.setScrollTop(Math.max(0,Math.min(this.scrollTop,maxHeight-this.$size.scrollerHeight)));var firstRowScreen,firstRowHeight,lineCount=Math.ceil(minHeight/this.lineHeight)-1,firstRow=Math.max(0,Math.round((this.scrollTop-offset)/this.lineHeight)),lastRow=firstRow+lineCount,lineHeight=this.lineHeight;firstRow=session.screenToDocumentRow(firstRow,0);var foldLine=session.getFoldLine(firstRow);foldLine&&(firstRow=foldLine.start.row),firstRowScreen=session.documentToScreenRow(firstRow,0),firstRowHeight=session.getRowLength(firstRow)*lineHeight,lastRow=Math.min(session.screenToDocumentRow(lastRow,0),session.getLength()-1),minHeight=this.$size.scrollerHeight+session.getRowLength(lastRow)*lineHeight+firstRowHeight,offset=this.scrollTop-firstRowScreen*lineHeight,this.layerConfig={width:longestLine,padding:this.$padding,firstRow:firstRow,firstRowScreen:firstRowScreen,lastRow:lastRow,lineHeight:lineHeight,characterWidth:this.characterWidth,minHeight:minHeight,maxHeight:maxHeight,offset:offset,height:this.$size.scrollerHeight},this.$gutterLayer.element.style.marginTop=-offset+\"px\",this.content.style.marginTop=-offset+\"px\",this.content.style.width=longestLine+2*this.$padding+\"px\",this.content.style.height=minHeight+\"px\",horizScrollChanged&&this.onResize(!0)},this.$updateLines=function(){var firstRow=this.$changedLines.firstRow,lastRow=this.$changedLines.lastRow;this.$changedLines=null;var layerConfig=this.layerConfig;return firstRow>layerConfig.lastRow+1||layerConfig.firstRow>lastRow?void 0:1/0===lastRow?(this.$showGutter&&this.$gutterLayer.update(layerConfig),this.$textLayer.update(layerConfig),void 0):(this.$textLayer.updateLines(layerConfig,firstRow,lastRow),!0)},this.$getLongestLine=function(){var charCount=this.session.getScreenWidth();return this.$textLayer.showInvisibles&&(charCount+=1),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(charCount*this.characterWidth))},this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},this.addGutterDecoration=function(row,className){this.$gutterLayer.addGutterDecoration(row,className)},this.removeGutterDecoration=function(row,className){this.$gutterLayer.removeGutterDecoration(row,className)},this.updateBreakpoints=function(){this.$loop.schedule(this.CHANGE_GUTTER)},this.setAnnotations=function(annotations){this.$gutterLayer.setAnnotations(annotations),this.$loop.schedule(this.CHANGE_GUTTER)},this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},this.hideCursor=function(){this.$cursorLayer.hideCursor()},this.showCursor=function(){this.$cursorLayer.showCursor()},this.scrollSelectionIntoView=function(anchor,lead,offset){this.scrollCursorIntoView(anchor,offset),this.scrollCursorIntoView(lead,offset)},this.scrollCursorIntoView=function(cursor,offset){if(0!==this.$size.scrollerHeight){var pos=this.$cursorLayer.getPixelPosition(cursor),left=pos.left,top=pos.top;this.scrollTop>top?(offset&&(top-=offset*this.$size.scrollerHeight),this.session.setScrollTop(top)):this.scrollTop+this.$size.scrollerHeight\u003Ctop+this.lineHeight&&(offset&&(top+=offset*this.$size.scrollerHeight),this.session.setScrollTop(top+this.lineHeight-this.$size.scrollerHeight));var scrollLeft=this.scrollLeft;scrollLeft>left?(this.$padding+2*this.layerConfig.characterWidth>left&&(left=0),this.session.setScrollLeft(left)):scrollLeft+this.$size.scrollerWidth\u003Cleft+this.characterWidth&&this.session.setScrollLeft(Math.round(left+this.characterWidth-this.$size.scrollerWidth))}},this.getScrollTop=function(){return this.session.getScrollTop()},this.getScrollLeft=function(){return this.session.getScrollLeft()},this.getScrollTopRow=function(){return this.scrollTop/this.lineHeight},this.getScrollBottomRow=function(){return Math.max(0,Math.floor((this.scrollTop+this.$size.scrollerHeight)/this.lineHeight)-1)},this.scrollToRow=function(row){this.session.setScrollTop(row*this.lineHeight)},this.alignCursor=function(cursor,alignment){\"number\"==typeof cursor&&(cursor={row:cursor,column:0});var pos=this.$cursorLayer.getPixelPosition(cursor),h=this.$size.scrollerHeight-this.lineHeight,offset=pos.top-h*(alignment||0);return this.session.setScrollTop(offset),offset},this.STEPS=8,this.$calcSteps=function(fromValue,toValue){var i=0,l=this.STEPS,steps=[],func=function(t,x_min,dx){return dx*(Math.pow(t-1,3)+1)+x_min};for(i=0;l>i;++i)steps.push(func(i/this.STEPS,fromValue,toValue-fromValue));return steps},this.scrollToLine=function(line,center,animate,callback){var pos=this.$cursorLayer.getPixelPosition({row:line,column:0}),offset=pos.top;center&&(offset-=this.$size.scrollerHeight/2);var initialScroll=this.scrollTop;this.session.setScrollTop(offset),animate!==!1&&this.animateScrolling(initialScroll,callback)},this.animateScrolling=function(fromValue,callback){var toValue=this.scrollTop;if(this.$animatedScroll&&1e5>Math.abs(fromValue-toValue)){var _self=this,steps=_self.$calcSteps(fromValue,toValue);this.$inScrollAnimation=!0,clearInterval(this.$timer),_self.session.setScrollTop(steps.shift()),this.$timer=setInterval(function(){steps.length?(_self.session.setScrollTop(steps.shift()),_self.session.$scrollTop=toValue):null!=toValue?(_self.session.$scrollTop=-1,_self.session.setScrollTop(toValue),toValue=null):(_self.$timer=clearInterval(_self.$timer),_self.$inScrollAnimation=!1,callback&&callback())},10)}},this.scrollToY=function(scrollTop){this.scrollTop!==scrollTop&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=scrollTop)},this.scrollToX=function(scrollLeft){0>scrollLeft&&(scrollLeft=0),this.scrollLeft!==scrollLeft&&(this.scrollLeft=scrollLeft),this.$loop.schedule(this.CHANGE_H_SCROLL)},this.scrollBy=function(deltaX,deltaY){deltaY&&this.session.setScrollTop(this.session.getScrollTop()+deltaY),deltaX&&this.session.setScrollLeft(this.session.getScrollLeft()+deltaX)},this.isScrollableBy=function(deltaX,deltaY){return 0>deltaY&&this.session.getScrollTop()>=1?!0:deltaY>0&&-1>this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight?!0:void 0},this.pixelToScreenCoordinates=function(x,y){var canvasPos=this.scroller.getBoundingClientRect(),offset=(x+this.scrollLeft-canvasPos.left-this.$padding)/this.characterWidth,row=Math.floor((y+this.scrollTop-canvasPos.top)/this.lineHeight),col=Math.round(offset);return{row:row,column:col,side:offset-col>0?1:-1}},this.screenToTextCoordinates=function(x,y){var canvasPos=this.scroller.getBoundingClientRect(),col=Math.round((x+this.scrollLeft-canvasPos.left-this.$padding)/this.characterWidth),row=Math.floor((y+this.scrollTop-canvasPos.top)/this.lineHeight);return this.session.screenToDocumentPosition(row,Math.max(col,0))},this.textToScreenCoordinates=function(row,column){var canvasPos=this.scroller.getBoundingClientRect(),pos=this.session.documentToScreenPosition(row,column),x=this.$padding+Math.round(pos.column*this.characterWidth),y=pos.row*this.lineHeight;return{pageX:canvasPos.left+x-this.scrollLeft,pageY:canvasPos.top+y-this.scrollTop}},this.visualizeFocus=function(){dom.addCssClass(this.container,\"ace_focus\")},this.visualizeBlur=function(){dom.removeCssClass(this.container,\"ace_focus\")},this.showComposition=function(){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,dom.addCssClass(this.textarea,\"ace_composition\"),this.textarea.style.cssText=\"\",this.$moveTextAreaToCursor()},this.setCompositionText=function(){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(dom.removeCssClass(this.textarea,\"ace_composition\"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(theme){function afterLoad(theme){if(theme.cssClass){dom.importCssString(theme.cssText,theme.cssClass,_self.container.ownerDocument),_self.theme&&dom.removeCssClass(_self.container,_self.theme.cssClass),_self.$theme=theme.cssClass,_self.theme=theme,dom.addCssClass(_self.container,theme.cssClass),dom.setCssClass(_self.container,\"ace_dark\",theme.isDark);var padding=theme.padding||4;_self.$padding&&padding!=_self.$padding&&_self.setPadding(padding),_self.$size&&(_self.$size.width=0,_self.onResize()),_self._dispatchEvent(\"themeLoaded\",{theme:theme})}}var _self=this;if(this.$themeValue=theme,_self._dispatchEvent(\"themeChange\",{theme:theme}),theme&&\"string\"!=typeof theme)afterLoad(theme);else{var moduleName=theme||\"ace/theme/textmate\";config.loadModule([\"theme\",moduleName],afterLoad)}},this.getTheme=function(){return this.$themeValue},this.setStyle=function(style,include){dom.setCssClass(this.container,style,0!=include)},this.unsetStyle=function(style){dom.removeCssClass(this.container,style)},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(VirtualRenderer.prototype),config.defineOptions(VirtualRenderer.prototype,\"renderer\",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(value){this.$textLayer.setShowInvisibles(value)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(val){\"number\"==typeof val&&(this.$printMarginColumn=val),this.$showPrintMargin=!!val,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(show){this.$gutter.style.display=show?\"block\":\"none\",this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(show){dom.setCssClass(this.$gutter,\"ace_fade-fold-widgets\",show)},initialValue:!1},showFoldWidgets:{set:function(show){this.$gutterLayer.setShowFoldWidgets(show)},initialValue:!0},displayIndentGuides:{set:function(show){this.$textLayer.setDisplayIndentGuides(show)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(shouldHighlight){return this.$gutterLineHighlight?(this.$gutterLineHighlight.style.display=shouldHighlight?\"\":\"none\",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight(),void 0):(this.$gutterLineHighlight=dom.createElement(\"div\"),this.$gutterLineHighlight.className=\"ace_gutter-active-line\",this.$gutter.appendChild(this.$gutterLineHighlight),void 0)},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(alwaysVisible){this.$hScrollBarAlwaysVisible=alwaysVisible,this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(size){\"number\"==typeof size&&(size+=\"px\"),this.container.style.fontSize=size,this.updateFontSize()},initialValue:12},fontFamily:{set:function(name){this.container.style.fontFamily=name,this.updateFontSize()}}}),exports.VirtualRenderer=VirtualRenderer}),ace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\"],function(acequire,exports){var dom=acequire(\"../lib/dom\"),oop=acequire(\"../lib/oop\"),lang=acequire(\"../lib/lang\"),EventEmitter=acequire(\"../lib/event_emitter\").EventEmitter,Gutter=function(parentEl){this.element=dom.createElement(\"div\"),this.element.className=\"ace_layer ace_gutter-layer\",parentEl.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this)};(function(){oop.implement(this,EventEmitter),this.setSession=function(session){this.session&&this.session.removeEventListener(\"change\",this.$updateAnnotations),this.session=session,session.on(\"change\",this.$updateAnnotations)},this.addGutterDecoration=function(row,className){window.console&&console.warn&&console.warn(\"deprecated use session.addGutterDecoration\"),this.session.addGutterDecoration(row,className)},this.removeGutterDecoration=function(row,className){window.console&&console.warn&&console.warn(\"deprecated use session.removeGutterDecoration\"),this.session.removeGutterDecoration(row,className)},this.setAnnotations=function(annotations){this.$annotations=[];for(var rowInfo,row,i=0;annotations.length>i;i++){var annotation=annotations[i],row=annotation.row,rowInfo=this.$annotations[row];rowInfo||(rowInfo=this.$annotations[row]={text:[]});var annoText=annotation.text;annoText=annoText?lang.escapeHTML(annoText):annotation.html||\"\",-1===rowInfo.text.indexOf(annoText)&&rowInfo.text.push(annoText);var type=annotation.type;\"error\"==type?rowInfo.className=\" ace_error\":\"warning\"==type&&\" ace_error\"!=rowInfo.className?rowInfo.className=\" ace_warning\":\"info\"!=type||rowInfo.className||(rowInfo.className=\" ace_info\")}},this.$updateAnnotations=function(e){if(this.$annotations.length){var delta=e.data,range=delta.range,firstRow=range.start.row,len=range.end.row-firstRow;if(0===len);else if(\"removeText\"==delta.action||\"removeLines\"==delta.action)this.$annotations.splice(firstRow,len+1,null);else{var args=Array(len+1);args.unshift(firstRow,1),this.$annotations.splice.apply(this.$annotations,args)}}},this.update=function(config){for(var emptyAnno={className:\"\"},html=[],i=config.firstRow,lastRow=config.lastRow,fold=this.session.getNextFoldLine(i),foldStart=fold?fold.start.row:1/0,foldWidgets=this.$showFoldWidgets&&this.session.foldWidgets,breakpoints=this.session.$breakpoints,decorations=this.session.$decorations,firstLineNumber=this.session.$firstLineNumber,lastLineNumber=0;;){if(i>foldStart&&(i=fold.end.row+1,fold=this.session.getNextFoldLine(i,fold),foldStart=fold?fold.start.row:1/0),i>lastRow)break;var annotation=this.$annotations[i]||emptyAnno;if(html.push(\"\u003Cdiv class='ace_gutter-cell \",breakpoints[i]||\"\",decorations[i]||\"\",annotation.className,\"' style='height:\",this.session.getRowLength(i)*config.lineHeight,\"px;'>\",lastLineNumber=i+firstLineNumber),foldWidgets){var c=foldWidgets[i];null==c&&(c=foldWidgets[i]=this.session.getFoldWidget(i)),c&&html.push(\"\u003Cspan class='ace_fold-widget ace_\",c,\"start\"==c&&i==foldStart&&fold.end.row>i?\" ace_closed\":\" ace_open\",\"' style='height:\",config.lineHeight,\"px\",\"'>\u003C/span>\")}html.push(\"\u003C/div>\"),i++}this.element=dom.setInnerHtml(this.element,html.join(\"\")),this.element.style.height=config.minHeight+\"px\",this.session.$useWrapMode&&(lastLineNumber=this.session.getLength());var gutterWidth=(\"\"+lastLineNumber).length*config.characterWidth,padding=this.$padding||this.$computePadding();gutterWidth+=padding.left+padding.right,gutterWidth!==this.gutterWidth&&(this.gutterWidth=gutterWidth,this.element.style.width=Math.ceil(this.gutterWidth)+\"px\",this._emit(\"changeGutterWidth\",gutterWidth))},this.$showFoldWidgets=!0,this.setShowFoldWidgets=function(show){show?dom.addCssClass(this.element,\"ace_folding-enabled\"):dom.removeCssClass(this.element,\"ace_folding-enabled\"),this.$showFoldWidgets=show,this.$padding=null},this.getShowFoldWidgets=function(){return this.$showFoldWidgets},this.$computePadding=function(){if(!this.element.firstChild)return{left:0,right:0};var style=dom.computedStyle(this.element.firstChild);return this.$padding={},this.$padding.left=parseInt(style.paddingLeft)+1,this.$padding.right=parseInt(style.paddingRight),this.$padding},this.getRegion=function(point){var padding=this.$padding||this.$computePadding(),rect=this.element.getBoundingClientRect();return point.x\u003Cpadding.left+rect.left?\"markers\":this.$showFoldWidgets&&point.x>rect.right-padding.right?\"foldWidgets\":void 0}}).call(Gutter.prototype),exports.Gutter=Gutter}),ace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"],function(acequire,exports){var Range=acequire(\"../range\").Range,dom=acequire(\"../lib/dom\"),Marker=function(parentEl){this.element=dom.createElement(\"div\"),this.element.className=\"ace_layer ace_marker-layer\",parentEl.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(padding){this.$padding=padding},this.setSession=function(session){this.session=session},this.setMarkers=function(markers){this.markers=markers},this.update=function(config){var config=config||this.config;if(config){this.config=config;var html=[];for(var key in this.markers){var marker=this.markers[key];if(marker.range){var range=marker.range.clipRows(config.firstRow,config.lastRow);if(!range.isEmpty())if(range=range.toScreenRange(this.session),marker.renderer){var top=this.$getTop(range.start.row,config),left=this.$padding+range.start.column*config.characterWidth;marker.renderer(html,range,left,top,config)}else\"fullLine\"==marker.type?this.drawFullLineMarker(html,range,marker.clazz,config):\"screenLine\"==marker.type?this.drawScreenLineMarker(html,range,marker.clazz,config):range.isMultiLine()?\"text\"==marker.type?this.drawTextMarker(html,range,marker.clazz,config):this.drawMultiLineMarker(html,range,marker.clazz,config):this.drawSingleLineMarker(html,range,marker.clazz+\" ace_start\",config)}else marker.update(html,this,this.session,config)}this.element=dom.setInnerHtml(this.element,html.join(\"\"))}},this.$getTop=function(row,layerConfig){return(row-layerConfig.firstRowScreen)*layerConfig.lineHeight},this.drawTextMarker=function(stringBuilder,range,clazz,layerConfig){var row=range.start.row,lineRange=new Range(row,range.start.column,row,this.session.getScreenLastRowColumn(row));for(this.drawSingleLineMarker(stringBuilder,lineRange,clazz+\" ace_start\",layerConfig,1,\"text\"),row=range.end.row,lineRange=new Range(row,0,row,range.end.column),this.drawSingleLineMarker(stringBuilder,lineRange,clazz,layerConfig,0,\"text\"),row=range.start.row+1;range.end.row>row;row++)lineRange.start.row=row,lineRange.end.row=row,lineRange.end.column=this.session.getScreenLastRowColumn(row),this.drawSingleLineMarker(stringBuilder,lineRange,clazz,layerConfig,1,\"text\")},this.drawMultiLineMarker=function(stringBuilder,range,clazz,config){var padding=this.$padding,height=config.lineHeight,top=this.$getTop(range.start.row,config),left=padding+range.start.column*config.characterWidth;stringBuilder.push(\"\u003Cdiv class='\",clazz,\" ace_start' style='\",\"height:\",height,\"px;\",\"right:0;\",\"top:\",top,\"px;\",\"left:\",left,\"px;'>\u003C/div>\"),top=this.$getTop(range.end.row,config);var width=range.end.column*config.characterWidth;stringBuilder.push(\"\u003Cdiv class='\",clazz,\"' style='\",\"height:\",height,\"px;\",\"width:\",width,\"px;\",\"top:\",top,\"px;\",\"left:\",padding,\"px;'>\u003C/div>\"),height=(range.end.row-range.start.row-1)*config.lineHeight,0>height||(top=this.$getTop(range.start.row+1,config),stringBuilder.push(\"\u003Cdiv class='\",clazz,\"' style='\",\"height:\",height,\"px;\",\"right:0;\",\"top:\",top,\"px;\",\"left:\",padding,\"px;'>\u003C/div>\"))},this.drawSingleLineMarker=function(stringBuilder,range,clazz,config,extraLength){var height=config.lineHeight,width=(range.end.column+(extraLength||0)-range.start.column)*config.characterWidth,top=this.$getTop(range.start.row,config),left=this.$padding+range.start.column*config.characterWidth;stringBuilder.push(\"\u003Cdiv class='\",clazz,\"' style='\",\"height:\",height,\"px;\",\"width:\",width,\"px;\",\"top:\",top,\"px;\",\"left:\",left,\"px;'>\u003C/div>\")\n},this.drawFullLineMarker=function(stringBuilder,range,clazz,config){var top=this.$getTop(range.start.row,config),height=config.lineHeight;range.start.row!=range.end.row&&(height+=this.$getTop(range.end.row,config)-top),stringBuilder.push(\"\u003Cdiv class='\",clazz,\"' style='\",\"height:\",height,\"px;\",\"top:\",top,\"px;\",\"left:0;right:0;'>\u003C/div>\")},this.drawScreenLineMarker=function(stringBuilder,range,clazz,config){var top=this.$getTop(range.start.row,config),height=config.lineHeight;stringBuilder.push(\"\u003Cdiv class='\",clazz,\"' style='\",\"height:\",height,\"px;\",\"top:\",top,\"px;\",\"left:0;right:0;'>\u003C/div>\")}}).call(Marker.prototype),exports.Marker=Marker}),ace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"../lib/oop\"),dom=acequire(\"../lib/dom\"),lang=acequire(\"../lib/lang\"),useragent=acequire(\"../lib/useragent\"),EventEmitter=acequire(\"../lib/event_emitter\").EventEmitter,Text=function(parentEl){this.element=dom.createElement(\"div\"),this.element.className=\"ace_layer ace_text-layer\",parentEl.appendChild(this.element),this.$characterSize={width:0,height:0},this.checkForSizeChanges(),this.$pollSizeChanges()};(function(){oop.implement(this,EventEmitter),this.EOF_CHAR=\"¶\",this.EOL_CHAR=\"¬\",this.TAB_CHAR=\"→\",this.SPACE_CHAR=\"·\",this.$padding=0,this.setPadding=function(padding){this.$padding=padding,this.element.style.padding=\"0 \"+padding+\"px\"},this.getLineHeight=function(){return this.$characterSize.height||1},this.getCharacterWidth=function(){return this.$characterSize.width||1},this.checkForSizeChanges=function(){var size=this.$measureSizes();if(size&&(this.$characterSize.width!==size.width||this.$characterSize.height!==size.height)){this.$measureNode.style.fontWeight=\"bold\";var boldSize=this.$measureSizes();this.$measureNode.style.fontWeight=\"\",this.$characterSize=size,this.allowBoldFonts=boldSize&&boldSize.width===size.width&&boldSize.height===size.height,this._emit(\"changeCharacterSize\",{data:size})}},this.$pollSizeChanges=function(){var self=this;this.$pollSizeChangesTimer=setInterval(function(){self.checkForSizeChanges()},500)},this.$fontStyles={fontFamily:1,fontSize:1,fontWeight:1,fontStyle:1,lineHeight:1},this.$measureSizes=useragent.isIE||useragent.isOldGecko?function(){var n=1e3;if(!this.$measureNode){var measureNode=this.$measureNode=dom.createElement(\"div\"),style=measureNode.style;if(style.width=style.height=\"auto\",style.left=style.top=40*-n+\"px\",style.visibility=\"hidden\",style.position=\"fixed\",style.overflow=\"visible\",style.whiteSpace=\"nowrap\",measureNode.innerHTML=lang.stringRepeat(\"Xy\",n),this.element.ownerDocument.body)this.element.ownerDocument.body.appendChild(measureNode);else{for(var container=this.element.parentNode;!dom.hasCssClass(container,\"ace_editor\");)container=container.parentNode;container.appendChild(measureNode)}}if(!this.element.offsetWidth)return null;var style=this.$measureNode.style,computedStyle=dom.computedStyle(this.element);for(var prop in this.$fontStyles)style[prop]=computedStyle[prop];var size={height:this.$measureNode.offsetHeight,width:this.$measureNode.offsetWidth/(2*n)};return 0==size.width||0==size.height?null:size}:function(){if(!this.$measureNode){var measureNode=this.$measureNode=dom.createElement(\"div\"),style=measureNode.style;style.width=style.height=\"auto\",style.left=style.top=\"-100px\",style.visibility=\"hidden\",style.position=\"fixed\",style.overflow=\"visible\",style.whiteSpace=\"nowrap\",measureNode.innerHTML=\"X\";for(var container=this.element.parentNode;container&&!dom.hasCssClass(container,\"ace_editor\");)container=container.parentNode;if(!container)return this.$measureNode=null;container.appendChild(measureNode)}var rect=this.$measureNode.getBoundingClientRect(),size={height:rect.height,width:rect.width};return 0==size.width||0==size.height?null:size},this.setSession=function(session){this.session=session,this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(showInvisibles){return this.showInvisibles==showInvisibles?!1:(this.showInvisibles=showInvisibles,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(display){return this.displayIndentGuides==display?!1:(this.displayIndentGuides=display,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var tabSize=this.session.getTabSize();this.tabSize=tabSize;for(var tabStr=this.$tabStrings=[0],i=1;tabSize+1>i;i++)this.showInvisibles?tabStr.push(\"\u003Cspan class='ace_invisible'>\"+this.TAB_CHAR+lang.stringRepeat(\" \",i-1)+\"\u003C/span>\"):tabStr.push(lang.stringRepeat(\" \",i));if(this.displayIndentGuides){this.$indentGuideRe=/\\s\\S| \\t|\\t |\\s$/;var className=\"ace_indent-guide\";if(this.showInvisibles){className+=\" ace_invisible\";var spaceContent=lang.stringRepeat(this.SPACE_CHAR,this.tabSize),tabContent=this.TAB_CHAR+lang.stringRepeat(\" \",this.tabSize-1)}else var spaceContent=lang.stringRepeat(\" \",this.tabSize),tabContent=spaceContent;this.$tabStrings[\" \"]=\"\u003Cspan class='\"+className+\"'>\"+spaceContent+\"\u003C/span>\",this.$tabStrings[\"\t\"]=\"\u003Cspan class='\"+className+\"'>\"+tabContent+\"\u003C/span>\"}},this.updateLines=function(config,firstRow,lastRow){(this.config.lastRow!=config.lastRow||this.config.firstRow!=config.firstRow)&&this.scrollLines(config),this.config=config;for(var first=Math.max(firstRow,config.firstRow),last=Math.min(lastRow,config.lastRow),lineElements=this.element.childNodes,lineElementsIdx=0,row=config.firstRow;first>row;row++){var foldLine=this.session.getFoldLine(row);if(foldLine){if(foldLine.containsRow(first)){first=foldLine.start.row;break}row=foldLine.end.row}lineElementsIdx++}for(var row=first,foldLine=this.session.getNextFoldLine(row),foldStart=foldLine?foldLine.start.row:1/0;;){if(row>foldStart&&(row=foldLine.end.row+1,foldLine=this.session.getNextFoldLine(row,foldLine),foldStart=foldLine?foldLine.start.row:1/0),row>last)break;var lineElement=lineElements[lineElementsIdx++];if(lineElement){var html=[];this.$renderLine(html,row,!this.$useLineGroups(),row==foldStart?foldLine:!1),dom.setInnerHtml(lineElement,html.join(\"\"))}row++}},this.scrollLines=function(config){var oldConfig=this.config;if(this.config=config,!oldConfig||oldConfig.lastRow\u003Cconfig.firstRow)return this.update(config);if(config.lastRow\u003ColdConfig.firstRow)return this.update(config);var el=this.element;if(oldConfig.firstRow\u003Cconfig.firstRow)for(var row=this.session.getFoldedRowCount(oldConfig.firstRow,config.firstRow-1);row>0;row--)el.removeChild(el.firstChild);if(oldConfig.lastRow>config.lastRow)for(var row=this.session.getFoldedRowCount(config.lastRow+1,oldConfig.lastRow);row>0;row--)el.removeChild(el.lastChild);if(config.firstRow\u003ColdConfig.firstRow){var fragment=this.$renderLinesFragment(config,config.firstRow,oldConfig.firstRow-1);el.firstChild?el.insertBefore(fragment,el.firstChild):el.appendChild(fragment)}if(config.lastRow>oldConfig.lastRow){var fragment=this.$renderLinesFragment(config,oldConfig.lastRow+1,config.lastRow);el.appendChild(fragment)}},this.$renderLinesFragment=function(config,firstRow,lastRow){for(var fragment=this.element.ownerDocument.createDocumentFragment(),row=firstRow,foldLine=this.session.getNextFoldLine(row),foldStart=foldLine?foldLine.start.row:1/0;;){if(row>foldStart&&(row=foldLine.end.row+1,foldLine=this.session.getNextFoldLine(row,foldLine),foldStart=foldLine?foldLine.start.row:1/0),row>lastRow)break;var container=dom.createElement(\"div\"),html=[];if(this.$renderLine(html,row,!1,row==foldStart?foldLine:!1),container.innerHTML=html.join(\"\"),this.$useLineGroups())container.className=\"ace_line_group\",fragment.appendChild(container);else for(var lines=container.childNodes;lines.length;)fragment.appendChild(lines[0]);row++}return fragment},this.update=function(config){this.config=config;for(var html=[],firstRow=config.firstRow,lastRow=config.lastRow,row=firstRow,foldLine=this.session.getNextFoldLine(row),foldStart=foldLine?foldLine.start.row:1/0;;){if(row>foldStart&&(row=foldLine.end.row+1,foldLine=this.session.getNextFoldLine(row,foldLine),foldStart=foldLine?foldLine.start.row:1/0),row>lastRow)break;this.$useLineGroups()&&html.push(\"\u003Cdiv class='ace_line_group'>\"),this.$renderLine(html,row,!1,row==foldStart?foldLine:!1),this.$useLineGroups()&&html.push(\"\u003C/div>\"),row++}this.element=dom.setInnerHtml(this.element,html.join(\"\"))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(stringBuilder,screenColumn,token,value){var self=this,replaceReg=/\\t|&|\u003C|( +)|([\\x00-\\x1f\\x80-\\xa0\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF])|[\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3000-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]/g,replaceFunc=function(c,a,b,tabIdx){if(a)return self.showInvisibles?\"\u003Cspan class='ace_invisible'>\"+lang.stringRepeat(self.SPACE_CHAR,c.length)+\"\u003C/span>\":lang.stringRepeat(\" \",c.length);if(\"&\"==c)return\"&\";if(\"\u003C\"==c)return\"<\";if(\"\t\"==c){var tabSize=self.session.getScreenTabSize(screenColumn+tabIdx);return screenColumn+=tabSize-1,self.$tabStrings[tabSize]}if(\" \"==c){var classToUse=self.showInvisibles?\"ace_cjk ace_invisible\":\"ace_cjk\",space=self.showInvisibles?self.SPACE_CHAR:\"\";return screenColumn+=1,\"\u003Cspan class='\"+classToUse+\"' style='width:\"+2*self.config.characterWidth+\"px'>\"+space+\"\u003C/span>\"}return b?\"\u003Cspan class='ace_invisible ace_invalid'>\"+self.SPACE_CHAR+\"\u003C/span>\":(screenColumn+=1,\"\u003Cspan class='ace_cjk' style='width:\"+2*self.config.characterWidth+\"px'>\"+c+\"\u003C/span>\")},output=value.replace(replaceReg,replaceFunc);if(this.$textToken[token.type])stringBuilder.push(output);else{var classes=\"ace_\"+token.type.replace(/\\./g,\" ace_\"),style=\"\";\"fold\"==token.type&&(style=\" style='width:\"+token.value.length*this.config.characterWidth+\"px;' \"),stringBuilder.push(\"\u003Cspan class='\",classes,\"'\",style,\">\",output,\"\u003C/span>\")}return screenColumn+value.length},this.renderIndentGuide=function(stringBuilder,value){var cols=value.search(this.$indentGuideRe);return 0>=cols?value:\" \"==value[0]?(cols-=cols%this.tabSize,stringBuilder.push(lang.stringRepeat(this.$tabStrings[\" \"],cols/this.tabSize)),value.substr(cols)):\"\t\"==value[0]?(stringBuilder.push(lang.stringRepeat(this.$tabStrings[\"\t\"],cols)),value.substr(cols)):value},this.$renderWrappedLine=function(stringBuilder,tokens,splits,onlyContents){for(var chars=0,split=0,splitChars=splits[0],screenColumn=0,i=0;tokens.length>i;i++){var token=tokens[i],value=token.value;if(0==i&&this.displayIndentGuides){if(chars=value.length,value=this.renderIndentGuide(stringBuilder,value),!value)continue;chars-=value.length}if(splitChars>chars+value.length)screenColumn=this.$renderToken(stringBuilder,screenColumn,token,value),chars+=value.length;else{for(;chars+value.length>=splitChars;)screenColumn=this.$renderToken(stringBuilder,screenColumn,token,value.substring(0,splitChars-chars)),value=value.substring(splitChars-chars),chars=splitChars,onlyContents||stringBuilder.push(\"\u003C/div>\",\"\u003Cdiv class='ace_line' style='height:\",this.config.lineHeight,\"px'>\"),split++,screenColumn=0,splitChars=splits[split]||Number.MAX_VALUE;0!=value.length&&(chars+=value.length,screenColumn=this.$renderToken(stringBuilder,screenColumn,token,value))}}},this.$renderSimpleLine=function(stringBuilder,tokens){var screenColumn=0,token=tokens[0],value=token.value;this.displayIndentGuides&&(value=this.renderIndentGuide(stringBuilder,value)),value&&(screenColumn=this.$renderToken(stringBuilder,screenColumn,token,value));for(var i=1;tokens.length>i;i++)token=tokens[i],value=token.value,screenColumn=this.$renderToken(stringBuilder,screenColumn,token,value)},this.$renderLine=function(stringBuilder,row,onlyContents,foldLine){if(foldLine||0==foldLine||(foldLine=this.session.getFoldLine(row)),foldLine)var tokens=this.$getFoldLineTokens(row,foldLine);else var tokens=this.session.getTokens(row);if(onlyContents||stringBuilder.push(\"\u003Cdiv class='ace_line' style='height:\",this.config.lineHeight,\"px'>\"),tokens.length){var splits=this.session.getRowSplitData(row);splits&&splits.length?this.$renderWrappedLine(stringBuilder,tokens,splits,onlyContents):this.$renderSimpleLine(stringBuilder,tokens)}this.showInvisibles&&(foldLine&&(row=foldLine.end.row),stringBuilder.push(\"\u003Cspan class='ace_invisible'>\",row==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,\"\u003C/span>\")),onlyContents||stringBuilder.push(\"\u003C/div>\")},this.$getFoldLineTokens=function(row,foldLine){function addTokens(tokens,from,to){for(var idx=0,col=0;from>col+tokens[idx].value.length;)if(col+=tokens[idx].value.length,idx++,idx==tokens.length)return;if(col!=from){var value=tokens[idx].value.substring(from-col);value.length>to-from&&(value=value.substring(0,to-from)),renderTokens.push({type:tokens[idx].type,value:value}),col=from+value.length,idx+=1}for(;to>col&&tokens.length>idx;){var value=tokens[idx].value;value.length+col>to?renderTokens.push({type:tokens[idx].type,value:value.substring(0,to-col)}):renderTokens.push(tokens[idx]),col+=value.length,idx+=1}}var session=this.session,renderTokens=[],tokens=session.getTokens(row);return foldLine.walk(function(placeholder,row,column,lastColumn,isNewRow){null!=placeholder?renderTokens.push({type:\"fold\",value:placeholder}):(isNewRow&&(tokens=session.getTokens(row)),tokens.length&&addTokens(tokens,lastColumn,column))},foldLine.end.row,this.session.getLine(foldLine.end.row).length),renderTokens},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(Text.prototype),exports.Text=Text}),ace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(acequire,exports){var dom=acequire(\"../lib/dom\"),Cursor=function(parentEl){this.element=dom.createElement(\"div\"),this.element.className=\"ace_layer ace_cursor-layer\",parentEl.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),dom.addCssClass(this.element,\"ace_hidden-cursors\")};(function(){this.$padding=0,this.setPadding=function(padding){this.$padding=padding},this.setSession=function(session){this.session=session},this.setBlinking=function(blinking){blinking!=this.isBlinking&&(this.isBlinking=blinking,this.restartTimer())},this.setBlinkInterval=function(blinkInterval){blinkInterval!=this.blinkInterval&&(this.blinkInterval=blinkInterval,this.restartTimer())},this.setSmoothBlinking=function(smoothBlinking){smoothBlinking!=this.smoothBlinking&&(this.smoothBlinking=smoothBlinking,smoothBlinking?dom.addCssClass(this.element,\"ace_smooth-blinking\"):dom.removeCssClass(this.element,\"ace_smooth-blinking\"),this.restartTimer())},this.addCursor=function(){var el=dom.createElement(\"div\");return el.className=\"ace_cursor\",this.element.appendChild(el),this.cursors.push(el),el},this.removeCursor=function(){if(this.cursors.length>1){var el=this.cursors.pop();return el.parentNode.removeChild(el),el}},this.hideCursor=function(){this.isVisible=!1,dom.addCssClass(this.element,\"ace_hidden-cursors\"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,dom.removeCssClass(this.element,\"ace_hidden-cursors\"),this.restartTimer()},this.restartTimer=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&dom.removeCssClass(this.element,\"ace_smooth-blinking\");for(var i=this.cursors.length;i--;)this.cursors[i].style.opacity=\"\";if(this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){dom.addCssClass(this.element,\"ace_smooth-blinking\")}.bind(this));var blink=function(){this.timeoutId=setTimeout(function(){for(var i=this.cursors.length;i--;)this.cursors[i].style.opacity=0}.bind(this),.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){for(var i=this.cursors.length;i--;)this.cursors[i].style.opacity=\"\";blink()}.bind(this),this.blinkInterval),blink()}},this.getPixelPosition=function(position,onScreen){if(!this.config||!this.session)return{left:0,top:0};position||(position=this.session.selection.getCursor());var pos=this.session.documentToScreenPosition(position),cursorLeft=this.$padding+pos.column*this.config.characterWidth,cursorTop=(pos.row-(onScreen?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:cursorLeft,top:cursorTop}},this.update=function(config){this.config=config;var selections=this.session.$selectionMarkers,i=0,cursorIndex=0;(void 0===selections||0===selections.length)&&(selections=[{cursor:null}]);for(var i=0,n=selections.length;n>i;i++){var pixelPos=this.getPixelPosition(selections[i].cursor,!0);if(!((pixelPos.top>config.height+config.offset||pixelPos.top\u003C-config.offset)&&i>1)){var style=(this.cursors[cursorIndex++]||this.addCursor()).style;style.left=pixelPos.left+\"px\",style.top=pixelPos.top+\"px\",style.width=config.characterWidth+\"px\",style.height=config.lineHeight+\"px\"}}for(;this.cursors.length>cursorIndex;)this.removeCursor();var overwrite=this.session.getOverwrite();this.$setOverwrite(overwrite),this.$pixelPos=pixelPos,this.restartTimer()},this.$setOverwrite=function(overwrite){overwrite!=this.overwrite&&(this.overwrite=overwrite,overwrite?dom.addCssClass(this.element,\"ace_overwrite-cursors\"):dom.removeCssClass(this.element,\"ace_overwrite-cursors\"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(Cursor.prototype),exports.Cursor=Cursor}),ace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),dom=acequire(\"./lib/dom\"),event=acequire(\"./lib/event\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,ScrollBar=function(parent){this.element=dom.createElement(\"div\"),this.element.className=\"ace_scrollbar\",this.inner=dom.createElement(\"div\"),this.inner.className=\"ace_scrollbar-inner\",this.element.appendChild(this.inner),parent.appendChild(this.element),this.width=dom.scrollbarWidth(parent.ownerDocument),this.element.style.width=(this.width||15)+5+\"px\",event.addListener(this.element,\"scroll\",this.onScroll.bind(this))};(function(){oop.implement(this,EventEmitter),this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit(\"scroll\",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.width},this.setHeight=function(height){this.element.style.height=height+\"px\"},this.setInnerHeight=function(height){this.inner.style.height=height+\"px\"},this.setScrollTop=function(scrollTop){this.scrollTop!=scrollTop&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=scrollTop)}}).call(ScrollBar.prototype),exports.ScrollBar=ScrollBar}),ace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"],function(acequire,exports){var event=acequire(\"./lib/event\"),RenderLoop=function(onRender,win){this.onRender=onRender,this.pending=!1,this.changes=0,this.window=win||window};(function(){this.schedule=function(change){if(this.changes=this.changes|change,!this.pending){this.pending=!0;var _self=this;event.nextFrame(function(){_self.pending=!1;for(var changes;changes=_self.changes;)_self.changes=0,_self.onRender(changes)},this.window)}}}).call(RenderLoop.prototype),exports.RenderLoop=RenderLoop}),ace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\"],function(acequire,exports){function find(session,needle,dir){return search.$options.wrap=!0,search.$options.needle=needle,search.$options.backwards=-1==dir,search.find(session)}function isSamePoint(p1,p2){return p1.row==p2.row&&p1.column==p2.column}function MultiSelect(editor){editor.$onAddRange=editor.$onAddRange.bind(editor),editor.$onRemoveRange=editor.$onRemoveRange.bind(editor),editor.$onMultiSelect=editor.$onMultiSelect.bind(editor),editor.$onSingleSelect=editor.$onSingleSelect.bind(editor),exports.onSessionChange.call(editor,editor),editor.on(\"changeSession\",exports.onSessionChange.bind(editor)),editor.on(\"mousedown\",onMouseDown),editor.commands.addCommands(commands.defaultCommands),addAltCursorListeners(editor)}function addAltCursorListeners(editor){function reset(){altCursor&&(contentEl.style.cursor=\"\",altCursor=!1)}var el=editor.textInput.getElement(),altCursor=!1,contentEl=editor.renderer.content;event.addListener(el,\"keydown\",function(e){18!=e.keyCode||e.ctrlKey||e.shiftKey||e.metaKey?altCursor&&(contentEl.style.cursor=\"\"):altCursor||(contentEl.style.cursor=\"crosshair\",altCursor=!0)}),event.addListener(el,\"keyup\",reset),event.addListener(el,\"blur\",reset)}var RangeList=acequire(\"./range_list\").RangeList,Range=acequire(\"./range\").Range,Selection=acequire(\"./selection\").Selection,onMouseDown=acequire(\"./mouse/multi_select_handler\").onMouseDown,event=acequire(\"./lib/event\"),lang=acequire(\"./lib/lang\"),commands=acequire(\"./commands/multi_select_commands\");exports.commands=commands.defaultCommands.concat(commands.multiSelectCommands);var Search=acequire(\"./search\").Search,search=new Search,EditSession=acequire(\"./edit_session\").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(EditSession.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(range,$blockChangeEvents){if(range){if(!this.inMultiSelectMode&&0==this.rangeCount){var oldRange=this.toOrientedRange();if(this.rangeList.add(oldRange),this.rangeList.add(range),2!=this.rangeList.ranges.length)return this.rangeList.removeAll(),$blockChangeEvents||this.fromOrientedRange(range);this.rangeList.removeAll(),this.rangeList.add(oldRange),this.$onAddRange(oldRange)}range.cursor||(range.cursor=range.end);var removed=this.rangeList.add(range);return this.$onAddRange(range),removed.length&&this.$onRemoveRange(removed),this.rangeCount>1&&!this.inMultiSelectMode&&(this._emit(\"multiSelect\"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),$blockChangeEvents||this.fromOrientedRange(range)}},this.toSingleRange=function(range){range=range||this.ranges[0];var removed=this.rangeList.removeAll();removed.length&&this.$onRemoveRange(removed),range&&this.fromOrientedRange(range)},this.substractPoint=function(pos){var removed=this.rangeList.substractPoint(pos);return removed?(this.$onRemoveRange(removed),removed[0]):void 0},this.mergeOverlappingRanges=function(){var removed=this.rangeList.merge();removed.length?this.$onRemoveRange(removed):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(range){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(range),this._emit(\"addRange\",{range:range})},this.$onRemoveRange=function(removed){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var lastRange=this.rangeList.ranges.pop();removed.push(lastRange),this.rangeCount=0}for(var i=removed.length;i--;){var index=this.ranges.indexOf(removed[i]);this.ranges.splice(index,1)}this._emit(\"removeRange\",{ranges:removed}),0==this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._emit(\"singleSelect\"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),lastRange=lastRange||this.ranges[0],lastRange&&!lastRange.isEqual(this.getRange())&&this.fromOrientedRange(lastRange)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new RangeList,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeList.ranges.concat()},this.splitIntoLines=function(){if(this.rangeCount>1){var ranges=this.rangeList.ranges,lastRange=ranges[ranges.length-1],range=Range.fromPoints(ranges[0].start,lastRange.end);this.toSingleRange(),this.setSelectionRange(range,lastRange.cursor==lastRange.start)}else{var range=this.getRange(),isBackwards=this.isBackwards(),startRow=range.start.row,endRow=range.end.row;if(startRow==endRow){if(isBackwards)var start=range.end,end=range.start;else var start=range.start,end=range.end;return this.addRange(Range.fromPoints(end,end)),this.addRange(Range.fromPoints(start,start)),void 0}var rectSel=[],r=this.getLineRange(startRow,!0);r.start.column=range.start.column,rectSel.push(r);for(var i=startRow+1;endRow>i;i++)rectSel.push(this.getLineRange(i,!0));r=this.getLineRange(endRow,!0),r.end.column=range.end.column,rectSel.push(r),rectSel.forEach(this.addRange,this)}},this.toggleBlockSelection=function(){if(this.rangeCount>1){var ranges=this.rangeList.ranges,lastRange=ranges[ranges.length-1],range=Range.fromPoints(ranges[0].start,lastRange.end);this.toSingleRange(),this.setSelectionRange(range,lastRange.cursor==lastRange.start)}else{var cursor=this.session.documentToScreenPosition(this.selectionLead),anchor=this.session.documentToScreenPosition(this.selectionAnchor),rectSel=this.rectangularRangeBlock(cursor,anchor);rectSel.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(screenCursor,screenAnchor,includeEmptyLines){var rectSel=[],xBackwards=screenCursor.column\u003CscreenAnchor.column;if(xBackwards)var startColumn=screenCursor.column,endColumn=screenAnchor.column;else var startColumn=screenAnchor.column,endColumn=screenCursor.column;var yBackwards=screenCursor.row\u003CscreenAnchor.row;if(yBackwards)var startRow=screenCursor.row,endRow=screenAnchor.row;else var startRow=screenAnchor.row,endRow=screenCursor.row;0>startColumn&&(startColumn=0),0>startRow&&(startRow=0),startRow==endRow&&(includeEmptyLines=!0);for(var row=startRow;endRow>=row;row++){var range=Range.fromPoints(this.session.screenToDocumentPosition(row,startColumn),this.session.screenToDocumentPosition(row,endColumn));if(range.isEmpty()){if(docEnd&&isSamePoint(range.end,docEnd))break;var docEnd=range.end}range.cursor=xBackwards?range.start:range.end,rectSel.push(range)}if(yBackwards&&rectSel.reverse(),!includeEmptyLines){for(var end=rectSel.length-1;rectSel[end].isEmpty()&&end>0;)end--;if(end>0)for(var start=0;rectSel[start].isEmpty();)start++;for(var i=end;i>=start;i--)rectSel[i].isEmpty()&&rectSel.splice(i,1)}return rectSel}}.call(Selection.prototype);var Editor=acequire(\"./editor\").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(orientedRange){orientedRange.cursor||(orientedRange.cursor=orientedRange.end);var style=this.getSelectionStyle();return orientedRange.marker=this.session.addMarker(orientedRange,\"ace_selection\",style),this.session.$selectionMarkers.push(orientedRange),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,orientedRange},this.removeSelectionMarker=function(range){if(range.marker){this.session.removeMarker(range.marker);var index=this.session.$selectionMarkers.indexOf(range);-1!=index&&this.session.$selectionMarkers.splice(index,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(ranges){for(var markerList=this.session.$selectionMarkers,i=ranges.length;i--;){var range=ranges[i];if(range.marker){this.session.removeMarker(range.marker);var index=markerList.indexOf(range);-1!=index&&markerList.splice(index,1)}}this.session.selectionMarkerCount=markerList.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle(\"ace_multiselect\"),this.keyBinding.addKeyboardHandler(commands.keyboardHandler),this.commands.on(\"exec\",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle(\"ace_multiselect\"),this.keyBinding.removeKeyboardHandler(commands.keyboardHandler),this.commands.removeEventListener(\"exec\",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onMultiSelectExec=function(e){var command=e.command,editor=e.editor;editor.multiSelect&&(command.multiSelectAction?\"forEach\"==command.multiSelectAction?editor.forEachSelection(command,e.args):\"forEachLine\"==command.multiSelectAction?editor.forEachSelection(command,e.args,!0):\"single\"==command.multiSelectAction?(editor.exitMultiSelectMode(),command.exec(editor,e.args||{})):command.multiSelectAction(editor,e.args||{}):(command.exec(editor,e.args||{}),editor.multiSelect.addRange(editor.multiSelect.toOrientedRange()),editor.multiSelect.mergeOverlappingRanges()),e.preventDefault())},this.forEachSelection=function(cmd,args,$byLines){if(!this.inVirtualSelectionMode){var session=this.session,selection=this.selection,rangeList=selection.rangeList,reg=selection._eventRegistry;selection._eventRegistry={};var tmpSel=new Selection(session);this.inVirtualSelectionMode=!0;for(var i=rangeList.ranges.length;i--;){if($byLines)for(;i>0&&rangeList.ranges[i].start.row==rangeList.ranges[i-1].end.row;)i--;tmpSel.fromOrientedRange(rangeList.ranges[i]),this.selection=session.selection=tmpSel,cmd.exec(this,args||{}),tmpSel.toOrientedRange(rangeList.ranges[i])}tmpSel.detach(),this.selection=session.selection=selection,this.inVirtualSelectionMode=!1,selection._eventRegistry=reg,selection.mergeOverlappingRanges(),this.onCursorChange(),this.onSelectionChange()}},this.exitMultiSelectMode=function(){this.inVirtualSelectionMode||this.multiSelect.toSingleRange()},this.getCopyText=function(){var text=\"\";if(this.inMultiSelectMode){var ranges=this.multiSelect.rangeList.ranges;text=[];for(var i=0;ranges.length>i;i++)text.push(this.session.getTextRange(ranges[i]));text=text.join(this.session.getDocument().getNewLineCharacter())}else this.selection.isEmpty()||(text=this.session.getTextRange(this.getSelectionRange()));return text},this.onPaste=function(text){if(!this.$readOnly){if(this._signal(\"paste\",text),!this.inMultiSelectMode||this.inVirtualSelectionMode)return this.insert(text);var lines=text.split(/\\r\\n|\\r|\\n/),ranges=this.selection.rangeList.ranges;if(lines.length>ranges.length||2>=lines.length||!lines[1])return this.commands.exec(\"insertstring\",this,text);for(var i=ranges.length;i--;){var range=ranges[i];range.isEmpty()||this.session.remove(range),this.session.insert(range.start,lines[i])}}},this.findAll=function(needle,options,additive){options=options||{},options.needle=needle||options.needle,this.$search.set(options);var ranges=this.$search.findAll(this.session);if(!ranges.length)return 0;this.$blockScrolling+=1;var selection=this.multiSelect;additive||selection.toSingleRange(ranges[0]);for(var i=ranges.length;i--;)selection.addRange(ranges[i],!0);return this.$blockScrolling-=1,ranges.length},this.selectMoreLines=function(dir,skip){var range=this.selection.toOrientedRange(),isBackwards=range.cursor==range.end,screenLead=this.session.documentToScreenPosition(range.cursor);this.selection.$desiredColumn&&(screenLead.column=this.selection.$desiredColumn);var lead=this.session.screenToDocumentPosition(screenLead.row+dir,screenLead.column);if(range.isEmpty())var anchor=lead;else var screenAnchor=this.session.documentToScreenPosition(isBackwards?range.end:range.start),anchor=this.session.screenToDocumentPosition(screenAnchor.row+dir,screenAnchor.column);if(isBackwards){var newRange=Range.fromPoints(lead,anchor);newRange.cursor=newRange.start}else{var newRange=Range.fromPoints(anchor,lead);newRange.cursor=newRange.end\n}if(newRange.desiredColumn=screenLead.column,this.selection.inMultiSelectMode){if(skip)var toRemove=range.cursor}else this.selection.addRange(range);this.selection.addRange(newRange),toRemove&&this.selection.substractPoint(toRemove)},this.transposeSelections=function(dir){for(var session=this.session,sel=session.multiSelect,all=sel.ranges,i=all.length;i--;){var range=all[i];if(range.isEmpty()){var tmp=session.getWordRange(range.start.row,range.start.column);range.start.row=tmp.start.row,range.start.column=tmp.start.column,range.end.row=tmp.end.row,range.end.column=tmp.end.column}}sel.mergeOverlappingRanges();for(var words=[],i=all.length;i--;){var range=all[i];words.unshift(session.getTextRange(range))}0>dir?words.unshift(words.pop()):words.push(words.shift());for(var i=all.length;i--;){var range=all[i],tmp=range.clone();session.replace(range,words[i]),range.start.row=tmp.start.row,range.start.column=tmp.start.column}},this.selectMore=function(dir,skip){var session=this.session,sel=session.multiSelect,range=sel.toOrientedRange();if(range.isEmpty()){var range=session.getWordRange(range.start.row,range.start.column);range.cursor=range.end,this.multiSelect.addRange(range)}var needle=session.getTextRange(range),newRange=find(session,needle,dir);newRange&&(newRange.cursor=-1==dir?newRange.start:newRange.end,this.multiSelect.addRange(newRange)),skip&&this.multiSelect.substractPoint(range.cursor)},this.alignCursors=function(){var session=this.session,sel=session.multiSelect,ranges=sel.ranges;if(ranges.length){var row=-1,sameRowRanges=ranges.filter(function(r){return r.cursor.row==row?!0:(row=r.cursor.row,void 0)});sel.$onRemoveRange(sameRowRanges);var maxCol=0,minSpace=1/0,spaceOffsets=ranges.map(function(r){var p=r.cursor,line=session.getLine(p.row),spaceOffset=line.substr(p.column).search(/\\S/g);return-1==spaceOffset&&(spaceOffset=0),p.column>maxCol&&(maxCol=p.column),minSpace>spaceOffset&&(minSpace=spaceOffset),spaceOffset});ranges.forEach(function(r,i){var p=r.cursor,l=maxCol-p.column,d=spaceOffsets[i]-minSpace;l>d?session.insert(p,lang.stringRepeat(\" \",l-d)):session.remove(new Range(p.row,p.column,p.row,p.column-l+d)),r.start.column=r.end.column=maxCol,r.start.row=r.end.row=p.row,r.cursor=r.end}),sel.fromOrientedRange(ranges[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var range=this.selection.getRange(),fr=range.start.row,lr=range.end.row,lines=this.session.doc.removeLines(fr,lr);lines=this.$reAlignText(lines),this.session.doc.insertLines(fr,lines),range.start.column=0,range.end.column=lines[lines.length-1].length,this.selection.setRange(range)}},this.$reAlignText=function(lines){function spaces(n){return lang.stringRepeat(\" \",n)}function alignLeft(m){return m[2]?spaces(startW)+m[2]+spaces(textW-m[2].length+endW)+m[4].replace(/^([=:])\\s+/,\"$1 \"):m[0]}function alignRight(m){return m[2]?spaces(startW+textW-m[2].length)+m[2]+spaces(endW,\" \")+m[4].replace(/^([=:])\\s+/,\"$1 \"):m[0]}function unAlign(m){return m[2]?spaces(startW)+m[2]+spaces(endW)+m[4].replace(/^([=:])\\s+/,\"$1 \"):m[0]}var startW,textW,endW,isLeftAligned=!0,isRightAligned=!0;return lines.map(function(line){var m=line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);return m?null==startW?(startW=m[1].length,textW=m[2].length,endW=m[3].length,m):(startW+textW+endW!=m[1].length+m[2].length+m[3].length&&(isRightAligned=!1),startW!=m[1].length&&(isLeftAligned=!1),startW>m[1].length&&(startW=m[1].length),m[2].length>textW&&(textW=m[2].length),endW>m[3].length&&(endW=m[3].length),m):[line]}).map(isLeftAligned?isRightAligned?alignRight:alignLeft:unAlign)}}).call(Editor.prototype),exports.onSessionChange=function(e){var session=e.session;session.multiSelect||(session.$selectionMarkers=[],session.selection.$initRangeList(),session.multiSelect=session.selection),this.multiSelect=session.multiSelect;var oldSession=e.oldSession;oldSession&&(oldSession.multiSelect.removeEventListener(\"addRange\",this.$onAddRange),oldSession.multiSelect.removeEventListener(\"removeRange\",this.$onRemoveRange),oldSession.multiSelect.removeEventListener(\"multiSelect\",this.$onMultiSelect),oldSession.multiSelect.removeEventListener(\"singleSelect\",this.$onSingleSelect)),session.multiSelect.on(\"addRange\",this.$onAddRange),session.multiSelect.on(\"removeRange\",this.$onRemoveRange),session.multiSelect.on(\"multiSelect\",this.$onMultiSelect),session.multiSelect.on(\"singleSelect\",this.$onSingleSelect),this.inMultiSelectMode!=session.selection.inMultiSelectMode&&(session.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},exports.MultiSelect=MultiSelect}),ace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"],function(acequire,exports){function isSamePoint(p1,p2){return p1.row==p2.row&&p1.column==p2.column}function onMouseDown(e){var ev=e.domEvent,alt=ev.altKey,shift=ev.shiftKey,ctrl=e.getAccelKey(),button=e.getButton();if(e.editor.inMultiSelectMode&&2==button)return e.editor.textInput.onContextMenu(e.domEvent),void 0;if(!ctrl&&!alt)return 0==button&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode(),void 0;var editor=e.editor,selection=editor.selection,isMultiSelect=editor.inMultiSelectMode,pos=e.getDocumentPosition(),cursor=selection.getCursor(),inSelection=e.inSelection()||selection.isEmpty()&&isSamePoint(pos,cursor),mouseX=e.x,mouseY=e.y,onMouseSelection=function(e){mouseX=e.clientX,mouseY=e.clientY},blockSelect=function(){var newCursor=editor.renderer.pixelToScreenCoordinates(mouseX,mouseY),cursor=session.screenToDocumentPosition(newCursor.row,newCursor.column);isSamePoint(screenCursor,newCursor)&&isSamePoint(cursor,selection.selectionLead)||(screenCursor=newCursor,editor.selection.moveCursorToPosition(cursor),editor.selection.clearSelection(),editor.renderer.scrollCursorIntoView(),editor.removeSelectionMarkers(rectSel),rectSel=selection.rectangularRangeBlock(screenCursor,screenAnchor),rectSel.forEach(editor.addSelectionMarker,editor),editor.updateSelectionMarkers())},session=editor.session,screenAnchor=editor.renderer.pixelToScreenCoordinates(mouseX,mouseY),screenCursor=screenAnchor;if(!ctrl||shift||alt||0!=button){if(alt&&0==button){e.stop(),isMultiSelect&&!ctrl?selection.toSingleRange():!isMultiSelect&&ctrl&&selection.addRange();var rectSel=[];shift?(screenAnchor=session.documentToScreenPosition(selection.lead),blockSelect()):(selection.moveCursorToPosition(pos),selection.clearSelection());var onMouseSelectionEnd=function(){clearInterval(timerId),editor.removeSelectionMarkers(rectSel);for(var i=0;rectSel.length>i;i++)selection.addRange(rectSel[i])},onSelectionInterval=blockSelect;event.capture(editor.container,onMouseSelection,onMouseSelectionEnd);var timerId=setInterval(function(){onSelectionInterval()},20);return e.preventDefault()}}else{if(!isMultiSelect&&inSelection)return;if(!isMultiSelect){var range=selection.toOrientedRange();editor.addSelectionMarker(range)}var oldRange=selection.rangeList.rangeAtPoint(pos);editor.once(\"mouseup\",function(){var tmpSel=selection.toOrientedRange();oldRange&&tmpSel.isEmpty()&&isSamePoint(oldRange.cursor,tmpSel.cursor)?selection.substractPoint(tmpSel.cursor):(range&&(editor.removeSelectionMarker(range),selection.addRange(range)),selection.addRange(tmpSel))})}}var event=acequire(\"../lib/event\");exports.onMouseDown=onMouseDown}),ace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"],function(acequire,exports){exports.defaultCommands=[{name:\"addCursorAbove\",exec:function(editor){editor.selectMoreLines(-1)},bindKey:{win:\"Ctrl-Alt-Up\",mac:\"Ctrl-Alt-Up\"},readonly:!0},{name:\"addCursorBelow\",exec:function(editor){editor.selectMoreLines(1)},bindKey:{win:\"Ctrl-Alt-Down\",mac:\"Ctrl-Alt-Down\"},readonly:!0},{name:\"addCursorAboveSkipCurrent\",exec:function(editor){editor.selectMoreLines(-1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Up\",mac:\"Ctrl-Alt-Shift-Up\"},readonly:!0},{name:\"addCursorBelowSkipCurrent\",exec:function(editor){editor.selectMoreLines(1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Down\",mac:\"Ctrl-Alt-Shift-Down\"},readonly:!0},{name:\"selectMoreBefore\",exec:function(editor){editor.selectMore(-1)},bindKey:{win:\"Ctrl-Alt-Left\",mac:\"Ctrl-Alt-Left\"},readonly:!0},{name:\"selectMoreAfter\",exec:function(editor){editor.selectMore(1)},bindKey:{win:\"Ctrl-Alt-Right\",mac:\"Ctrl-Alt-Right\"},readonly:!0},{name:\"selectNextBefore\",exec:function(editor){editor.selectMore(-1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Left\",mac:\"Ctrl-Alt-Shift-Left\"},readonly:!0},{name:\"selectNextAfter\",exec:function(editor){editor.selectMore(1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Right\",mac:\"Ctrl-Alt-Shift-Right\"},readonly:!0},{name:\"splitIntoLines\",exec:function(editor){editor.multiSelect.splitIntoLines()},bindKey:{win:\"Ctrl-Alt-L\",mac:\"Ctrl-Alt-L\"},readonly:!0},{name:\"alignCursors\",exec:function(editor){editor.alignCursors()},bindKey:{win:\"Ctrl-Alt-A\",mac:\"Ctrl-Alt-A\"}}],exports.multiSelectCommands=[{name:\"singleSelection\",bindKey:\"esc\",exec:function(editor){editor.exitMultiSelectMode()},readonly:!0,isAvailable:function(editor){return editor&&editor.inMultiSelectMode}}];var HashHandler=acequire(\"../keyboard/hash_handler\").HashHandler;exports.keyboardHandler=new HashHandler(exports.multiSelectCommands)}),ace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/config\"],function(acequire,exports){var oop=acequire(\"../lib/oop\"),EventEmitter=acequire(\"../lib/event_emitter\").EventEmitter,config=acequire(\"../config\"),WorkerClient=function(topLevelNamespaces,mod,classname){this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),this.onError=this.onError.bind(this);var workerUrl;if(config.get(\"packaged\"))workerUrl=config.moduleUrl(mod.id,\"worker\");else{var normalizePath=this.$normalizePath;acequire.nameToUrl&&!acequire.toUrl&&(acequire.toUrl=acequire.nameToUrl),workerUrl=normalizePath(acequire.toUrl(\"ace/worker/worker.js\",null,\"_\"));var tlns={};topLevelNamespaces.forEach(function(ns){tlns[ns]=normalizePath(acequire.toUrl(ns,null,\"_\").replace(/(\\.js)?(\\?.*)?$/,\"\"))})}var workerSrc=mod.src,Blob=require(\"w3c-blob\"),blob=new Blob([workerSrc],{type:\"application/javascript\"}),blobUrl=(window.URL||window.webkitURL).createObjectURL(blob);this.$worker=new Worker(blobUrl),this.$worker.postMessage({init:!0,tlns:tlns,module:mod.id,classname:classname}),this.callbackId=1,this.callbacks={},this.$worker.onerror=this.onError,this.$worker.onmessage=this.onMessage};(function(){oop.implement(this,EventEmitter),this.onError=function(e){throw window.console&&console.log&&console.log(e),e},this.onMessage=function(e){var msg=e.data;switch(msg.type){case\"log\":window.console&&console.log&&console.log.apply(console,msg.data);break;case\"event\":this._emit(msg.name,{data:msg.data});break;case\"call\":var callback=this.callbacks[msg.id];callback&&(callback(msg.data),delete this.callbacks[msg.id])}},this.$normalizePath=function(path){return location.host?(path=path.replace(/^[a-z]+:\\/\\/[^\\/]+/,\"\"),path=location.protocol+\"//\"+location.host+(\"/\"==path.charAt(0)?\"\":location.pathname.replace(/\\/[^\\/]*$/,\"\"))+\"/\"+path.replace(/^[\\/]+/,\"\")):path},this.terminate=function(){this._emit(\"terminate\",{}),this.$worker.terminate(),this.$worker=null,this.$doc.removeEventListener(\"change\",this.changeListener),this.$doc=null},this.send=function(cmd,args){this.$worker.postMessage({command:cmd,args:args})},this.call=function(cmd,args,callback){if(callback){var id=this.callbackId++;this.callbacks[id]=callback,args.push(id)}this.send(cmd,args)},this.emit=function(event,data){try{this.$worker.postMessage({event:event,data:{data:data.data}})}catch(ex){}},this.attachToDocument=function(doc){this.$doc&&this.terminate(),this.$doc=doc,this.call(\"setValue\",[doc.getValue()]),doc.on(\"change\",this.changeListener)},this.changeListener=function(e){e.range={start:e.data.range.start,end:e.data.range.end},this.emit(\"change\",e)}}).call(WorkerClient.prototype);var UIWorkerClient=function(topLevelNamespaces,mod,classname){this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var main=null,sender=Object.create(EventEmitter),_self=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){_self.messageBuffer.push(e),main&&setTimeout(processNext)};var processNext=function(){var msg=_self.messageBuffer.shift();msg.command?main[msg.command].apply(main,msg.args):msg.event&&sender._emit(msg.event,msg.data)};sender.postMessage=function(msg){_self.onMessage({data:msg})},sender.callback=function(data,callbackId){this.postMessage({type:\"call\",id:callbackId,data:data})},sender.emit=function(name,data){this.postMessage({type:\"event\",name:name,data:data})},config.loadModule([\"worker\",mod],function(Main){for(main=new Main[classname](sender);_self.messageBuffer.length;)processNext()})};UIWorkerClient.prototype=WorkerClient.prototype,exports.UIWorkerClient=UIWorkerClient,exports.WorkerClient=WorkerClient}),ace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"],function(acequire,exports){var Range=acequire(\"./range\").Range,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,oop=acequire(\"./lib/oop\"),PlaceHolder=function(session,length,pos,others,mainClass,othersClass){var _self=this;this.length=length,this.session=session,this.doc=session.getDocument(),this.mainClass=mainClass,this.othersClass=othersClass,this.$onUpdate=this.onUpdate.bind(this),this.doc.on(\"change\",this.$onUpdate),this.$others=others,this.$onCursorChange=function(){setTimeout(function(){_self.onCursorChange()})},this.$pos=pos;var undoStack=session.getUndoManager().$undoStack||session.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=undoStack.length,this.setup(),session.selection.on(\"changeCursor\",this.$onCursorChange)};(function(){oop.implement(this,EventEmitter),this.setup=function(){var _self=this,doc=this.doc,session=this.session,pos=this.$pos;this.pos=doc.createAnchor(pos.row,pos.column),this.markerId=session.addMarker(new Range(pos.row,pos.column,pos.row,pos.column+this.length),this.mainClass,null,!1),this.pos.on(\"change\",function(event){session.removeMarker(_self.markerId),_self.markerId=session.addMarker(new Range(event.value.row,event.value.column,event.value.row,event.value.column+_self.length),_self.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(other){var anchor=doc.createAnchor(other.row,other.column);_self.others.push(anchor)}),session.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var session=this.session,_self=this;this.othersActive=!0,this.others.forEach(function(anchor){anchor.markerId=session.addMarker(new Range(anchor.row,anchor.column,anchor.row,anchor.column+_self.length),_self.othersClass,null,!1),anchor.on(\"change\",function(event){session.removeMarker(anchor.markerId),anchor.markerId=session.addMarker(new Range(event.value.row,event.value.column,event.value.row,event.value.column+_self.length),_self.othersClass,null,!1)})})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var i=0;this.others.length>i;i++)this.session.removeMarker(this.others[i].markerId)}},this.onUpdate=function(event){var delta=event.data,range=delta.range;if(range.start.row===range.end.row&&range.start.row===this.pos.row&&!this.$updating){this.$updating=!0;var lengthDiff=\"insertText\"===delta.action?range.end.column-range.start.column:range.start.column-range.end.column;if(range.start.column>=this.pos.column&&range.start.column\u003C=this.pos.column+this.length+1){var distanceFromStart=range.start.column-this.pos.column;if(this.length+=lengthDiff,!this.session.$fromUndo){if(\"insertText\"===delta.action)for(var i=this.others.length-1;i>=0;i--){var otherPos=this.others[i],newPos={row:otherPos.row,column:otherPos.column+distanceFromStart};otherPos.row===range.start.row&&range.start.column\u003CotherPos.column&&(newPos.column+=lengthDiff),this.doc.insert(newPos,delta.text)}else if(\"removeText\"===delta.action)for(var i=this.others.length-1;i>=0;i--){var otherPos=this.others[i],newPos={row:otherPos.row,column:otherPos.column+distanceFromStart};otherPos.row===range.start.row&&range.start.column\u003CotherPos.column&&(newPos.column+=lengthDiff),this.doc.remove(new Range(newPos.row,newPos.column,newPos.row,newPos.column-lengthDiff))}range.start.column===this.pos.column&&\"insertText\"===delta.action?setTimeout(function(){this.pos.setPosition(this.pos.row,this.pos.column-lengthDiff);for(var i=0;this.others.length>i;i++){var other=this.others[i],newPos={row:other.row,column:other.column-lengthDiff};other.row===range.start.row&&range.start.column\u003Cother.column&&(newPos.column+=lengthDiff),other.setPosition(newPos.row,newPos.column)}}.bind(this),0):range.start.column===this.pos.column&&\"removeText\"===delta.action&&setTimeout(function(){for(var i=0;this.others.length>i;i++){var other=this.others[i];other.row===range.start.row&&range.start.column\u003Cother.column&&other.setPosition(other.row,other.column-lengthDiff)}}.bind(this),0)}this.pos._emit(\"change\",{value:this.pos});for(var i=0;this.others.length>i;i++)this.others[i]._emit(\"change\",{value:this.others[i]})}this.$updating=!1}},this.onCursorChange=function(event){if(!this.$updating){var pos=this.session.selection.getCursor();pos.row===this.pos.row&&pos.column>=this.pos.column&&pos.column\u003C=this.pos.column+this.length?(this.showOtherMarkers(),this._emit(\"cursorEnter\",event)):(this.hideOtherMarkers(),this._emit(\"cursorLeave\",event))}},this.detach=function(){this.session.removeMarker(this.markerId),this.hideOtherMarkers(),this.doc.removeEventListener(\"change\",this.$onUpdate),this.session.selection.removeEventListener(\"changeCursor\",this.$onCursorChange),this.pos.detach();for(var i=0;this.others.length>i;i++)this.others[i].detach();this.session.setUndoSelect(!0)},this.cancel=function(){if(-1===this.$undoStackDepth)throw Error(\"Canceling placeholders only supported with undo manager attached to session.\");for(var undoManager=this.session.getUndoManager(),undosRequired=(undoManager.$undoStack||undoManager.$undostack).length-this.$undoStackDepth,i=0;undosRequired>i;i++)undoManager.undo(!0)}}).call(PlaceHolder.prototype),exports.PlaceHolder=PlaceHolder}),ace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(acequire,exports){var Range=acequire(\"../../range\").Range,FoldMode=exports.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(session,foldStyle,row){var line=session.getLine(row);return this.foldingStartMarker.test(line)?\"start\":\"markbeginend\"==foldStyle&&this.foldingStopMarker&&this.foldingStopMarker.test(line)?\"end\":\"\"},this.getFoldWidgetRange=function(){return null},this.indentationBlock=function(session,row,column){var re=/\\S/,line=session.getLine(row),startLevel=line.search(re);if(-1!=startLevel){for(var startColumn=column||line.length,maxRow=session.getLength(),startRow=row,endRow=row;maxRow>++row;){var level=session.getLine(row).search(re);if(-1!=level){if(startLevel>=level)break;endRow=row}}if(endRow>startRow){var endColumn=session.getLine(endRow).length;return new Range(startRow,startColumn,endRow,endColumn)}}},this.openingBracketBlock=function(session,bracket,row,column,typeRe){var start={row:row,column:column+1},end=session.$findClosingBracket(bracket,start,typeRe);if(end){var fw=session.foldWidgets[end.row];return null==fw&&(fw=this.getFoldWidget(session,end.row)),\"start\"==fw&&end.row>start.row&&(end.row--,end.column=session.getLine(end.row).length),Range.fromPoints(start,end)}},this.closingBracketBlock=function(session,bracket,row,column){var end={row:row,column:column},start=session.$findOpeningBracket(bracket,end);return start?(start.column++,end.column--,Range.fromPoints(start,end)):void 0}}).call(FoldMode.prototype)}),ace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(acequire,exports){exports.isDark=!1,exports.cssClass=\"ace-tm\",exports.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm .ace_scroller {background-color: #FFFFFF;}.ace-tm .ace_cursor {border-left: 2px solid black;}.ace-tm .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_markup.ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_markup.ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;}';var dom=acequire(\"../lib/dom\");dom.importCssString(exports.cssText,exports.cssClass)}),function(){ace.acequire([\"ace/ace\"],function(a){a&&a.config.init(),window.ace||(window.ace={});for(var key in a)a.hasOwnProperty(key)&&(ace[key]=a[key])})}(),module.exports=window.ace.acequire(\"ace/ace\")})()},{\"w3c-blob\":30}],31:[function(require,module,exports){var Object_keys=function(obj){if(Object.keys)return Object.keys(obj);var res=[];for(var key in obj)res.push(key);return res},forEach=function(xs,fn){if(xs.forEach)return xs.forEach(fn);for(var i=0;xs.length>i;i++)fn(xs[i],i,xs)},Script=exports.Script=function NodeScript(code){return this instanceof Script?(this.code=code,void 0):new Script(code)};Script.prototype.runInNewContext=function(context){context||(context={});var iframe=document.createElement(\"iframe\");iframe.style||(iframe.style={}),iframe.style.display=\"none\",document.body.appendChild(iframe);var win=iframe.contentWindow;forEach(Object_keys(context),function(key){win[key]=context[key]}),!win.eval&&win.execScript&&win.execScript(\"null\");var res=win.eval(this.code);return forEach(Object_keys(win),function(key){context[key]=win[key]}),document.body.removeChild(iframe),res},Script.prototype.runInThisContext=function(){return eval(this.code)},Script.prototype.runInContext=function(context){return this.runInNewContext(context)},forEach(Object_keys(Script.prototype),function(name){exports[name]=Script[name]=function(code){var s=Script(code);return s[name].apply(s,[].slice.call(arguments,1))}}),exports.createScript=function(code){return exports.Script(code)},exports.createContext=Script.createContext=function(context){var copy={};return\"object\"==typeof context&&forEach(Object_keys(context),function(key){copy[key]=context[key]}),copy}},{}],24:[function(require,module){\"use strict\";function Terminal(opts){if(opts=opts||{},!(this instanceof Terminal))return new Terminal(opts);this.cols=opts.cols||500,this.rows=opts.rows||500,this.ybase=0,this.ydisp=0,this.x=0,this.y=0,this.cursorState=0,this.cursorHidden=!1,this.convertEol=!1,this.state=states.normal,this.queue=\"\",this.scrollTop=0,this.scrollBottom=this.rows-1,this.applicationKeypad=!1,this.originMode=!1,this.insertMode=!1,this.wraparoundMode=!1,this.normal=null,this.charset=null,this.gcharset=null,this.glevel=0,this.charsets=[null],this.element,this.children,this.refreshStart,this.refreshEnd,this.savedX,this.savedY,this.savedCols,this.readable=!0,this.writable=!0,this.defAttr=131840,this.curAttr=this.defAttr,this.params=[],this.currentParam=0,this.prefix=\"\",this.postfix=\"\",this.lines=[];for(var i=this.rows;i--;)this.lines.push(this.blankLine());this.tabs,this.setupStops()}var states=require(\"./lib/states\");module.exports=Terminal,require(\"./lib/colors\")(Terminal),require(\"./lib/options\")(Terminal),require(\"./lib/open\")(Terminal),require(\"./lib/destroy\")(Terminal),require(\"./lib/refresh\")(Terminal),require(\"./lib/write\")(Terminal),require(\"./lib/setgLevel\"),require(\"./lib/setgCharset\"),require(\"./lib/debug\")(Terminal),require(\"./lib/stops\")(Terminal),require(\"./lib/erase\")(Terminal),require(\"./lib/blankLine\")(Terminal),require(\"./lib/range\")(Terminal),require(\"./lib/util\")(Terminal),require(\"./lib/esc/index.js\")(Terminal),require(\"./lib/esc/reset.js\")(Terminal),require(\"./lib/esc/tabSet.js\")(Terminal),require(\"./lib/csi/charAttributes\")(Terminal),require(\"./lib/csi/insert-delete\")(Terminal),require(\"./lib/csi/position\")(Terminal),require(\"./lib/csi/cursor\")(Terminal),require(\"./lib/csi/repeatPrecedingCharacter\")(Terminal),require(\"./lib/csi/tabClear\")(Terminal),require(\"./lib/csi/softReset\")(Terminal),require(\"./lib/charsets.js\")(Terminal)},{\"./lib/esc/index.js\":32,\"./lib/esc/reset.js\":33,\"./lib/esc/tabSet.js\":34,\"./lib/charsets.js\":35,\"./lib/states\":36,\"./lib/colors\":37,\"./lib/options\":38,\"./lib/open\":39,\"./lib/destroy\":40,\"./lib/refresh\":41,\"./lib/write\":42,\"./lib/setgLevel\":43,\"./lib/setgCharset\":44,\"./lib/debug\":45,\"./lib/stops\":46,\"./lib/erase\":47,\"./lib/blankLine\":48,\"./lib/range\":49,\"./lib/util\":50,\"./lib/csi/charAttributes\":51,\"./lib/csi/insert-delete\":52,\"./lib/csi/position\":53,\"./lib/csi/cursor\":54,\"./lib/csi/repeatPrecedingCharacter\":55,\"./lib/csi/tabClear\":56,\"./lib/csi/softReset\":57}],25:[function(require,module,exports){(function(process){function through(write,end){function drain(){for(;buffer.length&&!stream.paused;){var data=buffer.shift();if(null===data)return stream.emit(\"end\");stream.emit(\"data\",data)}}function _end(){stream.writable=!1,end.call(stream),stream.readable||stream.destroy()}write=write||function(data){this.queue(data)},end=end||function(){this.queue(null)};var ended=!1,destroyed=!1,buffer=[],stream=new Stream;return stream.readable=stream.writable=!0,stream.paused=!1,stream.write=function(data){return write.call(this,data),!stream.paused},stream.queue=stream.push=function(data){return buffer.push(data),drain(),stream},stream.on(\"end\",function(){stream.readable=!1,stream.writable||process.nextTick(function(){stream.destroy()})}),stream.end=function(data){return ended?void 0:(ended=!0,arguments.length&&stream.write(data),_end(),stream)},stream.destroy=function(){return destroyed?void 0:(destroyed=!0,ended=!0,buffer.length=0,stream.writable=stream.readable=!1,stream.emit(\"close\"),stream)},stream.pause=function(){return stream.paused?void 0:(stream.paused=!0,stream.emit(\"pause\"),stream)},stream.resume=function(){return stream.paused&&(stream.paused=!1),drain(),stream.paused||stream.emit(\"drain\"),stream},stream}var Stream=require(\"stream\");exports=module.exports=through,through.through=through})(require(\"__browserify_process\"))},{stream:58,__browserify_process:16}],30:[function(require,module){(function(global){function get_blob(){if(global.Blob)try{return new Blob([\"asdf\"],{type:\"text/plain\"}),Blob}catch(err){}var Builder=global.BlobBuilder;return\"function\"!=typeof Builder&&(Builder=global.WebKitBlobBuilder||global.MozBlobBuilder||global.MSBlobBuilder),function(parts,bag){var builder=new Builder,endings=bag.endings,type=bag.type;if(endings)for(var i=0,len=parts.length;len>i;++i)builder.append(parts[i],endings);else for(var i=0,len=parts.length;len>i;++i)builder.append(parts[i]);return type?builder.getBlob(type):builder.getBlob()}}module.exports=get_blob()})(window)},{}],33:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.reset=function(){Terminal.call(this,this.cols,this.rows),this.refresh(0,this.rows-1)}}},{}],35:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.charsets={},Terminal.charsets.SCLD={\"`\":\"◆\",a:\"▒\",b:\"\t\",c:\"\\f\",d:\"\\r\",e:\"\\n\",f:\"°\",g:\"±\",h:\"␤\",i:\"\u000b\",j:\"┘\",k:\"┐\",l:\"┌\",m:\"└\",n:\"┼\",o:\"⎺\",p:\"⎻\",q:\"─\",r:\"⎼\",s:\"⎽\",t:\"├\",u:\"┤\",v:\"┴\",w:\"┬\",x:\"│\",y:\"≤\",z:\"≥\",\"{\":\"π\",\"|\":\"≠\",\"}\":\"£\",\"~\":\"·\"},Terminal.charsets.UK=null,Terminal.charsets.US=null,Terminal.charsets.Dutch=null,Terminal.charsets.Finnish=null,Terminal.charsets.French=null,Terminal.charsets.FrenchCanadian=null,Terminal.charsets.German=null,Terminal.charsets.Italian=null,Terminal.charsets.NorwegianDanish=null,Terminal.charsets.Spanish=null,Terminal.charsets.Swedish=null,Terminal.charsets.Swiss=null,Terminal.charsets.ISOLatin=null}},{}],36:[function(require,module){\"use strict\";module.exports={normal:0,escaped:1,csi:2,osc:3,charset:4,dcs:5,ignore:6}},{}],37:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.colors=[\"#2e3436\",\"#cc0000\",\"#4e9a06\",\"#c4a000\",\"#3465a4\",\"#75507b\",\"#06989a\",\"#d3d7cf\",\"#555753\",\"#ef2929\",\"#8ae234\",\"#fce94f\",\"#729fcf\",\"#ad7fa8\",\"#34e2e2\",\"#eeeeec\"],Terminal.colors=function(){function out(r,g,b){colors.push(\"#\"+hex(r)+hex(g)+hex(b))}function hex(c){return c=c.toString(16),2>c.length?\"0\"+c:c}var i,colors=Terminal.colors,r=[0,95,135,175,215,255];for(i=0;216>i;i++)out(r[0|i/36%6],r[0|i/6%6],r[i%6]);for(i=0;24>i;i++)r=8+10*i,out(r,r,r);return colors}(),Terminal.defaultColors={bg:\"#000000\",fg:\"#f0f0f0\"},Terminal.colors[256]=Terminal.defaultColors.bg,Terminal.colors[257]=Terminal.defaultColors.fg}},{}],38:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.termName=\"xterm\",Terminal.geometry=[80,24],Terminal.cursorBlink=!0,Terminal.visualBell=!1,Terminal.popOnBell=!1,Terminal.scrollback=1e3,Terminal.screenKeys=!1,Terminal.programFeatures=!1,Terminal.debug=!1}},{}],39:[function(require,module){\"use strict\";function isBoldBroken(){var el=document.createElement(\"span\");el.innerHTML=\"hello world\",document.body.appendChild(el);var w1=el.scrollWidth;el.style.fontWeight=\"bold\";var w2=el.scrollWidth;return document.body.removeChild(el),w1!==w2}module.exports=function(Terminal){Terminal.prototype.open=function(){var div,i=0;for(this.element=document.createElement(\"div\"),this.element.className=\"terminal\",this.children=[];this.rows>i;i++)div=document.createElement(\"div\"),this.element.appendChild(div),this.children.push(div);this.refresh(0,this.rows-1),null===Terminal.brokenBold&&(Terminal.brokenBold=isBoldBroken()),this.element.style.backgroundColor=Terminal.defaultColors.bg,this.element.style.color=Terminal.defaultColors.fg}}},{}],40:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.destroy=function(){this.readable=!1,this.writable=!1,this._events={},this.handler=function(){},this.write=function(){}}}},{}],41:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.refresh=function(start,end){var x,y,i,line,out,ch,width,data,attr,fgColor,bgColor,flags,row,parent;\nfor(width=this.cols,y=start;end>=y;y++){if(row=y+this.ydisp,line=this.lines[row],!line)return this.reset();for(out=\"\",x=y===this.y&&this.cursorState&&this.ydisp===this.ybase&&!this.cursorHidden?this.x:-1,attr=this.defAttr,i=0;width>i;i++){switch(data=line[i][0],ch=line[i][1],i===x&&(data=-1),data!==attr&&(attr!==this.defAttr&&(out+=\"\u003C/span>\"),data!==this.defAttr&&(-1===data?out+='\u003Cspan class=\"reverse-video\">':(out+='\u003Cspan style=\"',bgColor=511&data,fgColor=511&data>>9,flags=data>>18,1&flags&&(Terminal.brokenBold||(out+=\"font-weight:bold;\"),8>fgColor&&(fgColor+=8)),2&flags&&(out+=\"text-decoration:underline;\"),256!==bgColor&&(out+=\"background-color:\"+Terminal.colors[bgColor]+\";\"),257!==fgColor&&(out+=\"color:\"+Terminal.colors[fgColor]+\";\"),out+='\">'))),ch){case\"&\":out+=\"&\";break;case\"\u003C\":out+=\"\u003C\";break;case\">\":out+=\">\";break;default:out+=\" \">=ch?\" \":ch}attr=data}attr!==this.defAttr&&(out+=\"\u003C/span>\"),this.children[y].innerHTML=out}parent&&parent.appendChild(this.element)}}},{}],43:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.setgLevel=function(g){this.glevel=g,this.charset=this.charsets[g]}}},{}],44:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.setgCharset=function(g,charset){this.charsets[g]=charset,this.glevel===g&&(this.charset=charset)}}},{}],45:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.log=function(){if(Terminal.debug&&window.console&&window.console.log){var args=Array.prototype.slice.call(arguments);window.console.log.apply(window.console,args)}},Terminal.prototype.error=function(){if(Terminal.debug&&window.console&&window.console.error){var args=Array.prototype.slice.call(arguments);window.console.error.apply(window.console,args)}}}},{}],47:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.eraseRight=function(x,y){for(var line=this.lines[this.ybase+y],ch=[this.curAttr,\" \"];this.cols>x;x++)line[x]=ch;this.updateRange(y)},Terminal.prototype.eraseLeft=function(x,y){var line=this.lines[this.ybase+y],ch=[this.curAttr,\" \"];for(x++;x--;)line[x]=ch;this.updateRange(y)},Terminal.prototype.eraseLine=function(y){this.eraseRight(0,y)},Terminal.prototype.eraseInDisplay=function(params){var j;switch(params[0]){case 0:for(this.eraseRight(this.x,this.y),j=this.y+1;this.rows>j;j++)this.eraseLine(j);break;case 1:for(this.eraseLeft(this.x,this.y),j=this.y;j--;)this.eraseLine(j);break;case 2:for(j=this.rows;j--;)this.eraseLine(j);break;case 3:}},Terminal.prototype.eraseInLine=function(params){switch(params[0]){case 0:this.eraseRight(this.x,this.y);break;case 1:this.eraseLeft(this.x,this.y);break;case 2:this.eraseLine(this.y)}}}},{}],46:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.setupStops=function(i){for(null!=i?this.tabs[i]||(i=this.prevStop(i)):(this.tabs={},i=0);this.cols>i;i+=8)this.tabs[i]=!0},Terminal.prototype.prevStop=function(x){for(null==x&&(x=this.x);!this.tabs[--x]&&x>0;);return x>=this.cols?this.cols-1:0>x?0:x},Terminal.prototype.nextStop=function(x){for(null==x&&(x=this.x);!this.tabs[++x]&&this.cols>x;);return x>=this.cols?this.cols-1:0>x?0:x}}},{}],48:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.blankLine=function(cur){for(var attr=cur?this.curAttr:this.defAttr,ch=[attr,\" \"],line=[],i=0;this.cols>i;i++)line[i]=ch;return line}}},{}],49:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.updateRange=function(y){this.refreshStart>y&&(this.refreshStart=y),y>this.refreshEnd&&(this.refreshEnd=y)},Terminal.prototype.maxRange=function(){this.refreshStart=0,this.refreshEnd=this.rows-1}}},{}],50:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.ch=function(cur){return cur?[this.curAttr,\" \"]:[this.defAttr,\" \"]},Terminal.prototype.is=function(term){var name=this.termName||Terminal.termName;return 0===(name+\"\").indexOf(term)}}},{}],51:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.charAttributes=function(params){for(var bg,fg,p,l=params.length,i=0;l>i;i++)if(p=params[i],p>=30&&37>=p)this.curAttr=-261633&this.curAttr|p-30\u003C\u003C9;else if(p>=40&&47>=p)this.curAttr=-512&this.curAttr|p-40;else if(p>=90&&97>=p)p+=8,this.curAttr=-261633&this.curAttr|p-90\u003C\u003C9;else if(p>=100&&107>=p)p+=8,this.curAttr=-512&this.curAttr|p-100;else if(0===p)this.curAttr=this.defAttr;else if(1===p)this.curAttr=this.curAttr|1\u003C\u003C18;else if(4===p)this.curAttr=this.curAttr|2\u003C\u003C18;else if(7===p||27===p){if(7===p){if(4&this.curAttr>>18)continue;this.curAttr=this.curAttr|4\u003C\u003C18}else if(27===p){if(4&~(this.curAttr>>18))continue;this.curAttr=-1048577&this.curAttr}bg=511&this.curAttr,fg=511&this.curAttr>>9,this.curAttr=-262144&this.curAttr|(bg\u003C\u003C9|fg)}else if(22===p)this.curAttr=-262145&this.curAttr;else if(24===p)this.curAttr=-524289&this.curAttr;else if(39===p)this.curAttr=-261633&this.curAttr,this.curAttr=this.curAttr|(511&this.defAttr>>9)\u003C\u003C9;else if(49===p)this.curAttr=-512&this.curAttr,this.curAttr=this.curAttr|511&this.defAttr;else if(38===p){if(5!==params[i+1])continue;i+=2,p=255¶ms[i],this.curAttr=-261633&this.curAttr|p\u003C\u003C9}else if(48===p){if(5!==params[i+1])continue;i+=2,p=255¶ms[i],this.curAttr=-512&this.curAttr|p}}}},{}],52:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.insertChars=function(params){var param,row,j,ch;for(param=params[0],1>param&&(param=1),row=this.y+this.ybase,j=this.x,ch=[this.curAttr,\" \"];param--&&this.cols>j;)this.lines[row].splice(j++,0,ch),this.lines[row].pop()},Terminal.prototype.insertLines=function(params){var param,row,j;for(param=params[0],1>param&&(param=1),row=this.y+this.ybase,j=this.rows-1-this.scrollBottom,j=this.rows-1+this.ybase-j+1;param--;)this.lines.splice(row,0,this.blankLine(!0)),this.lines.splice(j,1);this.updateRange(this.y),this.updateRange(this.scrollBottom)},Terminal.prototype.deleteLines=function(params){var param,row,j;for(param=params[0],1>param&&(param=1),row=this.y+this.ybase,j=this.rows-1-this.scrollBottom,j=this.rows-1+this.ybase-j;param--;)this.lines.splice(j+1,0,this.blankLine(!0)),this.lines.splice(row,1);this.updateRange(this.y),this.updateRange(this.scrollBottom)},Terminal.prototype.deleteChars=function(params){var param,row,ch;for(param=params[0],1>param&&(param=1),row=this.y+this.ybase,ch=[this.curAttr,\" \"];param--;)this.lines[row].splice(this.x,1),this.lines[row].push(ch)},Terminal.prototype.eraseChars=function(params){var param,row,j,ch;for(param=params[0],1>param&&(param=1),row=this.y+this.ybase,j=this.x,ch=[this.curAttr,\" \"];param--&&this.cols>j;)this.lines[row][j++]=ch}}},{}],53:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.charPosAbsolute=function(params){var param=params[0];1>param&&(param=1),this.x=param-1,this.x>=this.cols&&(this.x=this.cols-1)},Terminal.prototype.HPositionRelative=function(params){var param=params[0];1>param&&(param=1),this.x+=param,this.x>=this.cols&&(this.x=this.cols-1)},Terminal.prototype.linePosAbsolute=function(params){var param=params[0];1>param&&(param=1),this.y=param-1,this.y>=this.rows&&(this.y=this.rows-1)},Terminal.prototype.VPositionRelative=function(params){var param=params[0];1>param&&(param=1),this.y+=param,this.y>=this.rows&&(this.y=this.rows-1)},Terminal.prototype.HVPosition=function(params){1>params[0]&&(params[0]=1),1>params[1]&&(params[1]=1),this.y=params[0]-1,this.y>=this.rows&&(this.y=this.rows-1),this.x=params[1]-1,this.x>=this.cols&&(this.x=this.cols-1)}}},{}],54:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.saveCursor=function(){this.savedX=this.x,this.savedY=this.y},Terminal.prototype.restoreCursor=function(){this.x=this.savedX||0,this.y=this.savedY||0},Terminal.prototype.cursorUp=function(params){var param=params[0];1>param&&(param=1),this.y-=param,0>this.y&&(this.y=0)},Terminal.prototype.cursorDown=function(params){var param=params[0];1>param&&(param=1),this.y+=param,this.y>=this.rows&&(this.y=this.rows-1)},Terminal.prototype.cursorForward=function(params){var param=params[0];1>param&&(param=1),this.x+=param,this.x>=this.cols&&(this.x=this.cols-1)},Terminal.prototype.cursorBackward=function(params){var param=params[0];1>param&&(param=1),this.x-=param,0>this.x&&(this.x=0)},Terminal.prototype.cursorPos=function(params){var row,col;row=params[0]-1,col=params.length>=2?params[1]-1:0,0>row?row=0:row>=this.rows&&(row=this.rows-1),0>col?col=0:col>=this.cols&&(col=this.cols-1),this.x=col,this.y=row},Terminal.prototype.cursorNextLine=function(params){var param=params[0];1>param&&(param=1),this.y+=param,this.y>=this.rows&&(this.y=this.rows-1),this.x=0},Terminal.prototype.cursorPrecedingLine=function(params){var param=params[0];1>param&&(param=1),this.y-=param,0>this.y&&(this.y=0),this.x=0},Terminal.prototype.cursorCharAbsolute=function(params){var param=params[0];1>param&&(param=1),this.x=param-1},Terminal.prototype.cursorForwardTab=function(params){for(var param=params[0]||1;param--;)this.x=this.nextStop()},Terminal.prototype.cursorBackwardTab=function(params){for(var param=params[0]||1;param--;)this.x=this.prevStop()}}},{}],55:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.repeatPrecedingCharacter=function(params){for(var param=params[0]||1,line=this.lines[this.ybase+this.y],ch=line[this.x-1]||[this.defAttr,\" \"];param--;)line[this.x++]=ch}}},{}],56:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.tabClear=function(params){var param=params[0];0>=param?delete this.tabs[this.x]:3===param&&(this.tabs={})}}},{}],57:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.softReset=function(){this.cursorHidden=!1,this.insertMode=!1,this.originMode=!1,this.wraparoundMode=!1,this.applicationKeypad=!1,this.scrollTop=0,this.scrollBottom=this.rows-1,this.curAttr=this.defAttr,this.x=this.y=0,this.charset=null,this.glevel=0,this.charsets=[null]}}},{}],58:[function(require,module){function Stream(){events.EventEmitter.call(this)}var events=require(\"events\"),util=require(\"util\");util.inherits(Stream,events.EventEmitter),module.exports=Stream,Stream.Stream=Stream,Stream.prototype.pipe=function(dest,options){function ondata(chunk){dest.writable&&!1===dest.write(chunk)&&source.pause&&source.pause()}function ondrain(){source.readable&&source.resume&&source.resume()}function onend(){didOnEnd||(didOnEnd=!0,dest._pipeCount--,cleanup(),dest._pipeCount>0||dest.end())}function onclose(){didOnEnd||(didOnEnd=!0,dest._pipeCount--,cleanup(),dest._pipeCount>0||dest.destroy())}function onerror(er){if(cleanup(),0===this.listeners(\"error\").length)throw er}function cleanup(){source.removeListener(\"data\",ondata),dest.removeListener(\"drain\",ondrain),source.removeListener(\"end\",onend),source.removeListener(\"close\",onclose),source.removeListener(\"error\",onerror),dest.removeListener(\"error\",onerror),source.removeListener(\"end\",cleanup),source.removeListener(\"close\",cleanup),dest.removeListener(\"end\",cleanup),dest.removeListener(\"close\",cleanup)}var source=this;source.on(\"data\",ondata),dest.on(\"drain\",ondrain),dest._isStdio||options&&options.end===!1||(dest._pipeCount=dest._pipeCount||0,dest._pipeCount++,source.on(\"end\",onend),source.on(\"close\",onclose));var didOnEnd=!1;return source.on(\"error\",onerror),dest.on(\"error\",onerror),source.on(\"end\",cleanup),source.on(\"close\",cleanup),dest.on(\"end\",cleanup),dest.on(\"close\",cleanup),dest.emit(\"pipe\",source),dest}},{events:15,util:6}],59:[function(require,module,exports){\"use strict\";var vm=require(\"vm\");exports.createCtx=function(sandbox){return vm.createContext(sandbox)},exports.runInCtx=function(code,ctx){return vm.runInContext(code,ctx)}},{vm:31}],60:[function(require,module){\"use strict\";module.exports=function(arr){return arr.filter(function(k){return!filterOut.hasOwnProperty(k)})};var filterOuts=[\"ArrayBuffer\",\"Attr\",\"BeforeLoadEvent\",\"Blob\",\"CDATASection\",\"CSSCharsetRule\",\"CSSImportRule\",\"CSSMediaRule\",\"CSSPageRule\",\"CSSPrimitiveValue\",\"CSSRuleList\",\"CSSStyleDeclaration\",\"CSSStyleSheet\",\"CSSValue\",\"CanvasGradient\",\"ClientRectList\",\"Clipboard\",\"CompositionEvent\",\"Counter\",\"DOMException\",\"DOMParser\",\"DOMStringMap\",\"DOMTokenList\",\"Document\",\"DocumentFragment\",\"DocumentType\",\"Element\",\"ErrorEvent\",\"Event\",\"EventSource\",\"File\",\"FileError\",\"FileList\",\"Float32Array\",\"HTMLAllCollection\",\"HTMLAreaElement\",\"HTMLBRElement\",\"HTMLButtonElement\",\"HTMLCanvasElement\",\"HTMLCollection\",\"HTMLDListElement\",\"HTMLDirectoryElement\",\"HTMLDivElement\",\"HTMLFormElement\",\"HTMLFrameElement\",\"HTMLHRElement\",\"HTMLIFrameElement\",\"HTMLImageElement\",\"HTMLInputElement\",\"HTMLLinkElement\",\"HTMLMapElement\",\"HTMLMediaElement\",\"HTMLMenuElement\",\"HTMLMeterElement\",\"HTMLOptGroupElement\",\"HTMLParamElement\",\"HTMLProgressElement\",\"HTMLQuoteElement\",\"HTMLSelectElement\",\"HTMLTableCaptionElement\",\"HTMLTableColElement\",\"HTMLTableSectionElement\",\"HTMLUListElement\",\"HTMLUnknownElement\",\"HashChangeEvent\",\"ImageData\",\"Int16Array\",\"Int8Array\",\"MediaController\",\"MediaError\",\"MediaList\",\"MessageChannel\",\"MimeType\",\"MutationEvent\",\"NamedNodeMap\",\"NodeFilter\",\"Notation\",\"OverflowEvent\",\"Plugin\",\"PluginArray\",\"PopStateEvent\",\"RGBColor\",\"Range\",\"Rect\",\"SQLException\",\"SVGAltGlyphItemElement\",\"SVGAnimateColorElement\",\"SVGAnimatedAngle\",\"SVGAnimatedEnumeration\",\"SVGAnimatedLength\",\"SVGAnimatedLengthList\",\"SVGAnimatedNumberList\",\"SVGAnimatedRect\",\"SVGAnimatedString\",\"SVGAnimatedTransformList\",\"SVGClipPathElement\",\"SVGDefsElement\",\"SVGElementInstanceList\",\"SVGEllipseElement\",\"SVGException\",\"SVGFEComponentTransferElement\",\"SVGFEConvolveMatrixElement\",\"SVGFEDiffuseLightingElement\",\"SVGFEDistantLightElement\",\"SVGFEFloodElement\",\"SVGFEFuncBElement\",\"SVGFEFuncGElement\",\"SVGFEFuncRElement\",\"SVGFEGaussianBlurElement\",\"SVGFEImageElement\",\"SVGFEMergeNodeElement\",\"SVGFEOffsetElement\",\"SVGFESpecularLightingElement\",\"SVGFilterElement\",\"SVGFontElement\",\"SVGFontFaceNameElement\",\"SVGFontFaceUriElement\",\"SVGGlyphElement\",\"SVGGlyphRefElement\",\"SVGGradientElement\",\"SVGHKernElement\",\"SVGLengthList\",\"SVGLinearGradientElement\",\"SVGMarkerElement\",\"SVGMatrix\",\"SVGNumber\",\"SVGPaint\",\"SVGPathSegArcAbs\",\"SVGPathSegArcRel\",\"SVGPathSegCurvetoCubicAbs\",\"SVGPathSegCurvetoCubicSmoothAbs\",\"SVGPathSegCurvetoCubicSmoothRel\",\"SVGPathSegCurvetoQuadraticRel\",\"SVGPathSegCurvetoQuadraticSmoothAbs\",\"SVGPathSegCurvetoQuadraticSmoothRel\",\"SVGPathSegLinetoHorizontalRel\",\"SVGPathSegLinetoVerticalRel\",\"SVGPathSegList\",\"SVGPathSegMovetoAbs\",\"SVGPatternElement\",\"SVGPointList\",\"SVGPolylineElement\",\"SVGPreserveAspectRatio\",\"SVGRectElement\",\"SVGSetElement\",\"SVGStopElement\",\"SVGStringList\",\"SVGSymbolElement\",\"SVGTSpanElement\",\"SVGTextPathElement\",\"SVGTransformList\",\"SVGZoomEvent\",\"Selection\",\"Storage\",\"StorageEvent\",\"TextEvent\",\"TextMetrics\",\"TextTrackCueList\",\"UIEvent\",\"Uint32Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"WebGLActiveInfo\",\"WebGLProgram\",\"WebGLRenderbuffer\",\"WebGLRenderingContext\",\"WebGLShader\",\"WebKitAnimationEvent\",\"WebKitCSSFilterValue\",\"WebKitCSSKeyframeRule\",\"WebKitCSSTransformValue\",\"WebKitPoint\",\"WebKitTransitionEvent\",\"Window\",\"Worker\",\"XMLDocument\",\"XMLHttpRequest\",\"XMLHttpRequestException\",\"XPathEvaluator\",\"XPathResult\",\"clientInformation\",\"console\",\"exports\",\"frameElement\",\"frames\",\"history\",\"localStorage\",\"location\",\"locationbar\",\"menubar\",\"navigator\",\"onbeforeunload\",\"onblur\",\"oncanplaythrough\",\"onclick\",\"ondragenter\",\"ondragleave\",\"ondragover\",\"ondragstart\",\"ondrop\",\"ondurationchange\",\"onemptied\",\"onerror\",\"onkeydown\",\"onkeypress\",\"onloadeddata\",\"onloadstart\",\"onmessage\",\"onmouseout\",\"onmouseover\",\"onoffline\",\"ononline\",\"onplay\",\"onplaying\",\"onprogress\",\"onratechange\",\"onscroll\",\"onsearch\",\"onselect\",\"onsuspend\",\"ontimeupdate\",\"onwebkittransitionend\",\"opener\",\"scrollbars\",\"styleMedia\",\"toolbar\",\"webkitAudioContext\",\"webkitAudioPannerNode\",\"webkitURL\",\"Audio\",\"AudioProcessingEvent\",\"CSSFontFaceRule\",\"CSSRule\",\"CSSStyleRule\",\"CSSValueList\",\"CanvasPattern\",\"CanvasRenderingContext2D\",\"CharacterData\",\"ClientRect\",\"CloseEvent\",\"Comment\",\"CustomEvent\",\"DOMImplementation\",\"DOMSettableTokenList\",\"DOMStringList\",\"DataView\",\"Entity\",\"EntityReference\",\"EventException\",\"FileReader\",\"Float64Array\",\"FormData\",\"HTMLAnchorElement\",\"HTMLAppletElement\",\"HTMLAudioElement\",\"HTMLBaseElement\",\"HTMLBaseFontElement\",\"HTMLBodyElement\",\"HTMLDocument\",\"HTMLElement\",\"HTMLEmbedElement\",\"HTMLFieldSetElement\",\"HTMLFontElement\",\"HTMLFrameSetElement\",\"HTMLHeadElement\",\"HTMLHeadingElement\",\"HTMLHtmlElement\",\"HTMLKeygenElement\",\"HTMLLIElement\",\"HTMLLabelElement\",\"HTMLLegendElement\",\"HTMLMarqueeElement\",\"HTMLMetaElement\",\"HTMLModElement\",\"HTMLOListElement\",\"HTMLObjectElement\",\"HTMLOptionElement\",\"HTMLOutputElement\",\"HTMLParagraphElement\",\"HTMLPreElement\",\"HTMLScriptElement\",\"HTMLSourceElement\",\"HTMLSpanElement\",\"HTMLStyleElement\",\"HTMLTableCellElement\",\"HTMLTableElement\",\"HTMLTableRowElement\",\"HTMLTextAreaElement\",\"HTMLTitleElement\",\"HTMLTrackElement\",\"HTMLVideoElement\",\"Image\",\"Int32Array\",\"KeyboardEvent\",\"MessageEvent\",\"MessagePort\",\"MimeTypeArray\",\"MouseEvent\",\"Node\",\"NodeList\",\"OfflineAudioCompletionEvent\",\"Option\",\"PageTransitionEvent\",\"ProcessingInstruction\",\"ProgressEvent\",\"RangeException\",\"SVGAElement\",\"SVGAltGlyphDefElement\",\"SVGAltGlyphElement\",\"SVGAngle\",\"SVGAnimateElement\",\"SVGAnimateMotionElement\",\"SVGAnimateTransformElement\",\"SVGAnimatedBoolean\",\"SVGAnimatedInteger\",\"SVGAnimatedNumber\",\"SVGAnimatedPreserveAspectRatio\",\"SVGCircleElement\",\"SVGColor\",\"SVGComponentTransferFunctionElement\",\"SVGCursorElement\",\"SVGDescElement\",\"SVGDocument\",\"SVGElement\",\"SVGElementInstance\",\"SVGFEBlendElement\",\"SVGFEColorMatrixElement\",\"SVGFECompositeElement\",\"SVGFEDisplacementMapElement\",\"SVGFEDropShadowElement\",\"SVGFEFuncAElement\",\"SVGFEMergeElement\",\"SVGFEMorphologyElement\",\"SVGFEPointLightElement\",\"SVGFESpotLightElement\",\"SVGFETileElement\",\"SVGFETurbulenceElement\",\"SVGFontFaceElement\",\"SVGFontFaceFormatElement\",\"SVGFontFaceSrcElement\",\"SVGForeignObjectElement\",\"SVGGElement\",\"SVGImageElement\",\"SVGLength\",\"SVGLineElement\",\"SVGMPathElement\",\"SVGMaskElement\",\"SVGMetadataElement\",\"SVGMissingGlyphElement\",\"SVGNumberList\",\"SVGPathElement\",\"SVGPathSeg\",\"SVGPathSegClosePath\",\"SVGPathSegCurvetoCubicRel\",\"SVGPathSegCurvetoQuadraticAbs\",\"SVGPathSegLinetoAbs\",\"SVGPathSegLinetoHorizontalAbs\",\"SVGPathSegLinetoRel\",\"SVGPathSegLinetoVerticalAbs\",\"SVGPathSegMovetoRel\",\"SVGPoint\",\"SVGPolygonElement\",\"SVGRadialGradientElement\",\"SVGRect\",\"SVGRenderingIntent\",\"SVGSVGElement\",\"SVGScriptElement\",\"SVGStyleElement\",\"SVGSwitchElement\",\"SVGTRefElement\",\"SVGTextContentElement\",\"SVGTextElement\",\"SVGTextPositioningElement\",\"SVGTitleElement\",\"SVGTransform\",\"SVGUnitTypes\",\"SVGUseElement\",\"SVGVKernElement\",\"SVGViewElement\",\"SharedWorker\",\"StyleSheet\",\"StyleSheetList\",\"Text\",\"TextTrack\",\"TextTrackCue\",\"TextTrackList\",\"TimeRanges\",\"TrackEvent\",\"Uint16Array\",\"WebGLBuffer\",\"WebGLContextEvent\",\"WebGLFramebuffer\",\"WebGLShaderPrecisionFormat\",\"WebGLTexture\",\"WebGLUniformLocation\",\"WebKitCSSKeyframesRule\",\"WebKitCSSMatrix\",\"WebKitMutationObserver\",\"WebSocket\",\"WheelEvent\",\"XMLHttpRequestProgressEvent\",\"XMLHttpRequestUpload\",\"XMLSerializer\",\"XPathException\",\"XSLTProcessor\",\"applicationCache\",\"closed\",\"crypto\",\"defaultStatus\",\"defaultstatus\",\"devicePixelRatio\",\"event\",\"innerHeight\",\"innerWidth\",\"length\",\"module\",\"name\",\"offscreenBuffering\",\"onabort\",\"oncanplay\",\"onchange\",\"oncontextmenu\",\"ondblclick\",\"ondrag\",\"ondragend\",\"onended\",\"onfocus\",\"onhashchange\",\"oninput\",\"oninvalid\",\"onkeyup\",\"onload\",\"onloadedmetadata\",\"onmousedown\",\"onmousemove\",\"onmouseup\",\"onmousewheel\",\"onpagehide\",\"onpageshow\",\"onpause\",\"onpopstate\",\"onreset\",\"onresize\",\"onseeked\",\"onseeking\",\"onstalled\",\"onstorage\",\"onsubmit\",\"onunload\",\"onvolumechange\",\"onwaiting\",\"onwebkitanimationend\",\"onwebkitanimationiteration\",\"onwebkitanimationstart\",\"outerHeight\",\"outerWidth\",\"pageXOffset\",\"pageYOffset\",\"parent\",\"personalbar\",\"screen\",\"screenLeft\",\"screenTop\",\"screenX\",\"screenY\",\"scrollX\",\"scrollY\",\"self\",\"sessionStorage\",\"status\",\"statusbar\",\"Touch\",\"TouchList\",\"TouchEvent\",\"DeviceMotionEvent\",\"DeviceOrientationEvent\",\"orientation\",\"onorientationchange\",\"ontouched\",\"ondeviceorientation\",\"ontouchmove\",\"ondevicemotion\",\"ontouchcancel\",\"ontouchstart\",\"ongestureend\",\"ontouchend\",\"ongesturestart\",\"ongesturechange\",\"getSearchEngine\",\"setSearchEngine\",\"canSetSearchEngine\",\"InstallTrigger\",\"getInterface\",\"sidebar\"],filterOut={};filterOuts.forEach(function(k){filterOut[k]=!0})},{}],61:[function(require,module){\"use strict\";var exclude={};module.exports=function(thing,exclude_){var t={},ex=exclude_||exclude;return thing?(Object.keys(thing).filter(function(k){return!ex[k]}).forEach(function(k){thing.hasOwnProperty(k)&&(t[k]=thing[k])}),t):t},[\"top\",\"Intl\",\"chrome\",\"document\",\"external\",\"v8Intl\",\"window\",\"frameElement\",\"parent\"].forEach(function(k){exclude[k]=!0})},{}],28:[function(require,module){module.exports={highlight:require(\"./lib/highlight\"),highlightFile:require(\"./lib/highlightFile\"),highlightFileSync:require(\"./lib/highlightFileSync\")}},{\"./lib/highlight\":62,\"./lib/highlightFile\":63,\"./lib/highlightFileSync\":64}],65:[function(require,module,exports){(function(process){function filter(xs,fn){for(var res=[],i=0;xs.length>i;i++)fn(xs[i],i,xs)&&res.push(xs[i]);return res}function normalizeArray(parts,allowAboveRoot){for(var up=0,i=parts.length;i>=0;i--){var last=parts[i];\".\"==last?parts.splice(i,1):\"..\"===last?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up--;up)parts.unshift(\"..\");return parts}var splitPathRe=/^(.+\\/(?!$)|\\/)?((?:.+?)?(\\.[^.]*)?)$/;exports.resolve=function(){for(var resolvedPath=\"\",resolvedAbsolute=!1,i=arguments.length;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:process.cwd();\"string\"==typeof path&&path&&(resolvedPath=path+\"/\"+resolvedPath,resolvedAbsolute=\"/\"===path.charAt(0))}return resolvedPath=normalizeArray(filter(resolvedPath.split(\"/\"),function(p){return!!p}),!resolvedAbsolute).join(\"/\"),(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},exports.normalize=function(path){var isAbsolute=\"/\"===path.charAt(0),trailingSlash=\"/\"===path.slice(-1);return path=normalizeArray(filter(path.split(\"/\"),function(p){return!!p}),!isAbsolute).join(\"/\"),path||isAbsolute||(path=\".\"),path&&trailingSlash&&(path+=\"/\"),(isAbsolute?\"/\":\"\")+path},exports.join=function(){var paths=Array.prototype.slice.call(arguments,0);return exports.normalize(filter(paths,function(p){return p&&\"string\"==typeof p}).join(\"/\"))},exports.dirname=function(path){var dir=splitPathRe.exec(path)[1]||\"\",isWindows=!1;return dir?1===dir.length||isWindows&&3>=dir.length&&\":\"===dir.charAt(1)?dir:dir.substring(0,dir.length-1):\".\"},exports.basename=function(path,ext){var f=splitPathRe.exec(path)[2]||\"\";return ext&&f.substr(-1*ext.length)===ext&&(f=f.substr(0,f.length-ext.length)),f},exports.extname=function(path){return splitPathRe.exec(path)[3]||\"\"},exports.relative=function(from,to){function trim(arr){for(var start=0;arr.length>start&&\"\"===arr[start];start++);for(var end=arr.length-1;end>=0&&\"\"===arr[end];end--);return start>end?[]:arr.slice(start,end-start+1)}from=exports.resolve(from).substr(1),to=exports.resolve(to).substr(1);for(var fromParts=trim(from.split(\"/\")),toParts=trim(to.split(\"/\")),length=Math.min(fromParts.length,toParts.length),samePartsLength=length,i=0;length>i;i++)if(fromParts[i]!==toParts[i]){samePartsLength=i;break}for(var outputParts=[],i=samePartsLength;fromParts.length>i;i++)outputParts.push(\"..\");return outputParts=outputParts.concat(toParts.slice(samePartsLength)),outputParts.join(\"/\")}})(require(\"__browserify_process\"))},{__browserify_process:16}],42:[function(require,module){\"use strict\";function fixLinefeed(data){return data.replace(/([^\\r])\\n/g,\"$1\\r\\n\")}function fixIndent(data){return/(^|\\n) /.test(data)?data.split(\"\\n\").map(function(line){for(var count=0;\" \"===line.charAt(0);)line=line.slice(1),count++;for(;count--;)line=\" \"+line;return line}).join(\"\\r\\n\"):data}var states=require(\"./states\");module.exports=function(Terminal){Terminal.prototype.write=function(data){data=fixLinefeed(data),data=fixIndent(data);var cs,ch,l=data.length,i=0;for(this.refreshStart=this.y,this.refreshEnd=this.y,this.ybase!==this.ydisp&&(this.ydisp=this.ybase,this.maxRange());l>i;i++)switch(ch=data[i],this.state){case states.normal:switch(ch){case\"\u0007\":this.bell();break;case\"\\n\":case\"\u000b\":case\"\\f\":this.convertEol&&(this.x=0),this.y++;break;case\"\\r\":this.x=0;break;case\"\\b\":this.x>0&&this.x--;break;case\"\t\":this.x=this.nextStop();break;case\"\u000e\":this.setgLevel(1);break;case\"\u000f\":this.setgLevel(0);break;case\"\u001b\":this.state=states.escaped;break;default:ch>=\" \"&&(this.charset&&this.charset[ch]&&(ch=this.charset[ch]),this.x>=this.cols&&(this.x=0,this.y++),this.lines[this.y+this.ybase][this.x]=[this.curAttr,ch],this.x++,this.updateRange(this.y))}break;case states.escaped:switch(ch){case\"[\":this.params=[],this.currentParam=0,this.state=states.csi;break;case\"]\":this.params=[],this.currentParam=0,this.state=states.osc;break;case\"P\":this.params=[],this.currentParam=0,this.state=states.dcs;break;case\"_\":this.stateType=\"apc\",this.state=states.ignore;break;case\"^\":this.stateType=\"pm\",this.state=states.ignore;break;case\"c\":this.reset();break;case\"E\":this.x=0;break;case\"D\":this.index();break;case\"M\":this.reverseIndex();break;case\"%\":this.setgLevel(0),this.setgCharset(0,Terminal.charsets.US),this.state=states.normal,i++;break;case\"(\":case\")\":case\"*\":case\"+\":case\"-\":case\".\":switch(ch){case\"(\":this.gcharset=0;break;case\")\":this.gcharset=1;break;case\"*\":this.gcharset=2;break;case\"+\":this.gcharset=3;break;case\"-\":this.gcharset=1;break;case\".\":this.gcharset=2}this.state=states.charset;break;case\"/\":this.gcharset=3,this.state=states.charset,i--;break;case\"N\":break;case\"O\":break;case\"n\":this.setgLevel(2);break;case\"o\":this.setgLevel(3);break;case\"|\":this.setgLevel(3);break;case\"}\":this.setgLevel(2);break;case\"~\":this.setgLevel(1);break;case\"7\":this.saveCursor(),this.state=states.normal;break;case\"8\":this.restoreCursor(),this.state=states.normal;break;case\"#\":this.state=states.normal,i++;break;case\"H\":this.tabSet();break;case\"=\":this.log(\"Serial port requested application keypad.\"),this.applicationKeypad=!0,this.state=states.normal;break;case\">\":this.log(\"Switching back to normal keypad.\"),this.applicationKeypad=!1,this.state=states.normal;break;default:this.state=states.normal,this.error(\"Unknown ESC control: %s.\",ch)}break;case states.charset:switch(ch){case\"0\":cs=Terminal.charsets.SCLD;break;case\"A\":cs=Terminal.charsets.UK;break;case\"B\":cs=Terminal.charsets.US;break;case\"4\":cs=Terminal.charsets.Dutch;break;case\"C\":case\"5\":cs=Terminal.charsets.Finnish;break;case\"R\":cs=Terminal.charsets.French;break;case\"Q\":cs=Terminal.charsets.FrenchCanadian;break;case\"K\":cs=Terminal.charsets.German;break;case\"Y\":cs=Terminal.charsets.Italian;break;case\"E\":case\"6\":cs=Terminal.charsets.NorwegianDanish;break;case\"Z\":cs=Terminal.charsets.Spanish;break;case\"H\":case\"7\":cs=Terminal.charsets.Swedish;break;case\"=\":cs=Terminal.charsets.Swiss;break;case\"/\":cs=Terminal.charsets.ISOLatin,i++;break;default:cs=Terminal.charsets.US}this.setgCharset(this.gcharset,cs),this.gcharset=null,this.state=states.normal;break;case states.osc:if(\"\u001b\"===ch||\"\u0007\"===ch){switch(\"\u001b\"===ch&&i++,this.params.push(this.currentParam),this.params[0]){case 0:case 1:case 2:this.params[1]&&(this.title=this.params[1],this.handleTitle(this.title));break;case 3:break;case 4:case 5:break;case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:break;case 46:break;case 50:break;case 51:break;case 52:break;case 104:case 105:case 110:case 111:case 112:case 113:case 114:case 115:case 116:case 117:case 118:}this.params=[],this.currentParam=0,this.state=states.normal}else this.params.length?this.currentParam+=ch:ch>=\"0\"&&\"9\">=ch?this.currentParam=10*this.currentParam+ch.charCodeAt(0)-48:\";\"===ch&&(this.params.push(this.currentParam),this.currentParam=\"\");break;case states.csi:if(\"?\"===ch||\">\"===ch||\"!\"===ch){this.prefix=ch;break}if(ch>=\"0\"&&\"9\">=ch){this.currentParam=10*this.currentParam+ch.charCodeAt(0)-48;break}if(\"$\"===ch||'\"'===ch||\" \"===ch||\"'\"===ch){this.postfix=ch;break}if(this.params.push(this.currentParam),this.currentParam=0,\";\"===ch)break;switch(this.state=states.normal,ch){case\"A\":this.cursorUp(this.params);break;case\"B\":this.cursorDown(this.params);break;case\"C\":this.cursorForward(this.params);break;case\"D\":this.cursorBackward(this.params);break;case\"H\":this.cursorPos(this.params);break;case\"J\":this.eraseInDisplay(this.params);break;case\"K\":this.eraseInLine(this.params);break;case\"m\":this.charAttributes(this.params);break;case\"n\":this.deviceStatus(this.params);break;case\"@\":this.insertChars(this.params);break;case\"E\":this.cursorNextLine(this.params);break;case\"F\":this.cursorPrecedingLine(this.params);break;case\"G\":this.cursorCharAbsolute(this.params);break;case\"L\":this.insertLines(this.params);break;case\"M\":this.deleteLines(this.params);break;case\"P\":this.deleteChars(this.params);break;case\"X\":this.eraseChars(this.params);break;case\"`\":this.charPosAbsolute(this.params);break;case\"a\":this.HPositionRelative(this.params);break;case\"c\":break;case\"d\":this.linePosAbsolute(this.params);break;case\"e\":this.VPositionRelative(this.params);break;case\"f\":this.HVPosition(this.params);break;case\"h\":break;case\"l\":break;case\"r\":break;case\"s\":this.saveCursor(this.params);break;case\"u\":this.restoreCursor(this.params);break;case\"I\":this.cursorForwardTab(this.params);break;case\"S\":break;case\"T\":2>this.params.length&&!this.prefix;break;case\"Z\":this.cursorBackwardTab(this.params);break;case\"b\":this.repeatPrecedingCharacter(this.params);break;case\"g\":this.tabClear(this.params);break;case\"p\":switch(this.prefix){case\"!\":this.softReset(this.params)}break;default:this.error(\"Unknown CSI code: %s.\",ch)}this.prefix=\"\",this.postfix=\"\";break;case states.dcs:if(\"\u001b\"===ch||\"\u0007\"===ch){switch(\"\u001b\"===ch&&i++,this.prefix){case\"\":break;case\"$q\":var pt=this.currentParam;switch(pt){case'\"q':pt='0\"q';break;case'\"p':pt='61\"p';break;case\"r\":pt=\"\"+(this.scrollTop+1)+\";\"+(this.scrollBottom+1)+\"r\";break;case\"m\":pt=\"0m\";break;default:this.error(\"Unknown DCS Pt: %s.\",pt),pt=\"\"}break;case\"+p\":break;default:this.error(\"Unknown DCS prefix: %s.\",this.prefix)}this.currentParam=0,this.prefix=\"\",this.state=states.normal}else this.currentParam?this.currentParam+=ch:this.prefix||\"$\"===ch||\"+\"===ch?2===this.prefix.length?this.currentParam=ch:this.prefix+=ch:this.currentParam=ch;break;case states.ignore:\"\u001b\"===ch||\"\u0007\"===ch?(\"\u001b\"===ch&&i++,this.stateData=\"\",this.state=states.normal):(this.stateData||(this.stateData=\"\"),this.stateData+=ch)}this.updateRange(this.y),this.refresh(this.refreshStart,this.refreshEnd)},Terminal.prototype.writeln=function(data){data=data.replace(/ /g,\" \"),this.write(data+\" \\r\\n\")}}},{\"./states\":36}],32:[function(require,module){\"use strict\";var states=require(\"../states\");module.exports=function(Terminal){Terminal.prototype.index=function(){this.y++,this.y>this.scrollBottom&&(this.y--,this.scroll()),this.state=states.normal},Terminal.prototype.reverseIndex=function(){var j;this.y--,this.y\u003Cthis.scrollTop&&(this.y++,this.lines.splice(this.y+this.ybase,0,this.blankLine(!0)),j=this.rows-1-this.scrollBottom,this.lines.splice(this.rows-1+this.ybase-j+1,1),this.updateRange(this.scrollTop),this.updateRange(this.scrollBottom)),this.state=states.normal}}},{\"../states\":36}],34:[function(require,module){\"use strict\";var states=require(\"../states\");module.exports=function(Terminal){Terminal.prototype.tabSet=function(){this.tabs[this.x]=!0,this.state=states.normal}}},{\"../states\":36}],26:[function(require,module){(function(process){\"use strict\";function isFunctionDeclaration(snippet){var firstStatement=snippet.ast.body&&snippet.ast.body[0]&&snippet.ast.body[0];return firstStatement&&\"FunctionDeclaration\"===firstStatement.type}function added(origKeys,keys){return keys.filter(function(k){return!~origKeys.indexOf(k)\n})}function changed(ctx,prevCtx,prevKeys){return prevKeys.filter(function(k){return!deepIs(prevCtx[k],ctx[k])})}function keyValues(keys,ctx,prevCtx){return keys.map(function(k){return{key:k,value:ctx[k],prevValue:prevCtx?prevCtx[k]:void 0}})}function cleaned(ctx,add){var cleanedCtx=removeProblematic(ctx);return Object.keys(add).forEach(function(k){cleanedCtx[k]=add[k]}),cleanedCtx}function evalSnippet(ctx,snippet,isStrict,allTrackedKeyValues){browser&&(ctx=cleaned(ctx,allTrackedKeyValues));var result,prevCtx=clone(ctx),prevKeys=Object.keys(prevCtx),code=snippet.code;try{isStrict&&!useStrictRx.test(code)&&parse('\"use strict\";'+snippet.code),result=runner.runInCtx(code,ctx)}catch(e){ctx[ErrorIndicator]=\"\"+e}browser&&(ctx=cleaned(ctx,{}));var crntCtx=clone(ctx),keys=Object.keys(crntCtx),addedValues=added(prevKeys,keys);browser&&(addedValues=removeIFrameGenerated(addedValues));var addedKeyValues=keyValues(addedValues,crntCtx),changedValues=changed(crntCtx,prevCtx,prevKeys),changedKeyValues=keyValues(changedValues,crntCtx,prevCtx);snippet.evaluated={result:result,ctx:prevCtx,added:clone(addedKeyValues),changed:clone(changedKeyValues)},browser&&(addedKeyValues.concat(changedKeyValues).forEach(function(x){allTrackedKeyValues[x.key]=x.value}),delete allTrackedKeyValues[ErrorIndicator]),delete ctx[ErrorIndicator]}var browser=process.browser,clone=(require(\"vm\"),require(\"clone\")),deepIs=require(\"deep-is\"),runner=require(\"./runner-vm\"),colors=require(\"ansicolors\"),parse=require(\"esprima\").parse,removeIFrameGenerated=require(\"./remove-iframe-generated\"),removeProblematic=require(\"./remove-problematic\"),createSandbox=require(\"./create-sandbox\"),ErrorIndicator=colors.red(\"!\"),useStrictRx=/^ *['\"]use strict['\"]/;module.exports=function(snippets,fullSrcPath){var fndecs,sandbox=createSandbox(fullSrcPath),ctx=runner.createCtx(sandbox),allTrackedKeyValues={},nonEmptySnippets=snippets.filter(function(snippet){return snippet.code.length}),isStrict=nonEmptySnippets.some(function(snippet){return useStrictRx.test(snippet.raw)});return browser||(fndecs=nonEmptySnippets.filter(function(snippet,idx){return isFunctionDeclaration(snippet)?(nonEmptySnippets.splice(idx,1),!0):!1}),fndecs.forEach(function(snippet){evalSnippet(ctx,snippet,isStrict,allTrackedKeyValues)})),nonEmptySnippets.forEach(function(snippet){evalSnippet(ctx,snippet,isStrict,allTrackedKeyValues)}),ctx}})(require(\"__browserify_process\"))},{vm:31,\"./runner-vm\":59,\"./remove-iframe-generated\":60,\"./remove-problematic\":61,\"./create-sandbox\":66,clone:67,ansicolors:68,\"deep-is\":69,esprima:70,__browserify_process:16}],66:[function(require,module){(function(process,global){\"use strict\";function cleanProcess(process){var exclude={stdout:!0,stderr:!0,stdin:!0,mainModule:!0};return removeProblematic(process,exclude)}var browser=process.browser,requireLikeName=\"require-like\",requireLike=browser?function(){}:require(requireLikeName),path=require(\"path\"),removeProblematic=require(\"./remove-problematic\");module.exports=function(fullSrcPath){var exports={},sandbox={console:global.console,module:{exports:exports,parent:null},exports:exports,process:cleanProcess(process)},serverside={require:requireLike(fullSrcPath),__filename:fullSrcPath,__dirname:path.dirname(fullSrcPath),Buffer:require(\"buffer\").Buffer,ArrayBuffer:global.ArrayBuffer,Int8Array:global.Int8Array,Uint8Array:global.Uint8Array,Uint8ClampedArray:global.Uint8ClampedArray,Int16Array:global.Int16Array,Uint16Array:global.Uint16Array,Int32Array:global.Int32Array,Uint32Array:global.Uint32Array,Float32Array:global.Float32Array,Float64Array:global.Float64Array,DataView:global.DataView};return browser||Object.keys(serverside).forEach(function(k){sandbox[k]=serverside[k]}),sandbox}})(require(\"__browserify_process\"),window)},{path:65,buffer:71,\"./remove-problematic\":61,__browserify_process:16}],27:[function(require,module){\"use strict\";function formatAdd(key,value,diffopts){return format(\"%s %s: %s\",colors.brightGreen(\"+\"),key,diffValues({},value,diffopts))}function formatChange(key,prevValue,value,diffopts){return format(\"%s %s: %s\",colors.brightBlue(\"~\"),key,diffValues(prevValue,value,diffopts))}function formatResult(result,diffopts){return format(\"%s %s\",colors.cyan(\"=>\"),diffValues({},result,diffopts))}function formatSectionEnd(multiLine,lastOne){return!multiLine||lastOne?\"\\n\":colors.brightBlack(\"\\n--------\\n\")}function resolveTale(evaluated,opts){if(!evaluated)return\"\";var tales=[];return evaluated.added.length&&evaluated.added.forEach(function(x){tales.push(opts.formatAdd(x.key,x.value,opts.diff))}),evaluated.changed.length&&evaluated.changed.forEach(function(x){tales.push(opts.formatChange(x.key,x.prevValue,x.value,opts.diff))}),evaluated.result!==void 0&&tales.push(opts.formatResult(evaluated.result,opts.diff)),tales.reduce(function(s,tale,idx,all){var lastOne=idx===all.length-1,multiLine=~tale.indexOf(\"\\n\");return s+tale+opts.formatSectionEnd(multiLine,lastOne)},\"\")}var diffValues=require(\"./diff-values\"),format=require(\"util\").format,colors=require(\"ansicolors\");module.exports=function(snippets,opts){return opts=opts||{},opts.formatAdd=opts.formatAdd||formatAdd,opts.formatChange=opts.formatChange||formatChange,opts.formatResult=opts.formatResult||formatResult,opts.formatSectionEnd=opts.formatSectionEnd||formatSectionEnd,snippets.map(function(snippet){var tale=resolveTale(snippet.evaluated,opts);return{tale:tale,insertAfter:snippet.end}})}},{util:6,\"./diff-values\":72,ansicolors:68}],73:[function(require,module){(function(){function objectKeys(object){if(Object.keys)return Object.keys(object);var result=[];for(var name in object)Object.prototype.hasOwnProperty.call(object,name)&&result.push(name);return result}function replacer(key,value){return void 0===value?\"\"+value:\"number\"!=typeof value||!isNaN(value)&&isFinite(value)?\"function\"==typeof value||value instanceof RegExp?\"\"+value:value:\"\"+value}function truncate(s,n){return\"string\"==typeof s?n>s.length?s:s.slice(0,n):s}function fail(actual,expected,message,operator,stackStartFunction){throw new assert.AssertionError({message:message,actual:actual,expected:expected,operator:operator,stackStartFunction:stackStartFunction})}function ok(value,message){value||fail(value,!0,message,\"==\",assert.ok)}function _deepEqual(actual,expected){if(actual===expected)return!0;if(Buffer.isBuffer(actual)&&Buffer.isBuffer(expected)){if(actual.length!=expected.length)return!1;for(var i=0;actual.length>i;i++)if(actual[i]!==expected[i])return!1;return!0}return actual instanceof Date&&expected instanceof Date?actual.getTime()===expected.getTime():\"object\"!=typeof actual&&\"object\"!=typeof expected?actual==expected:objEquiv(actual,expected)}function isUndefinedOrNull(value){return null===value||void 0===value}function isArguments(object){return\"[object Arguments]\"==Object.prototype.toString.call(object)}function objEquiv(a,b){if(isUndefinedOrNull(a)||isUndefinedOrNull(b))return!1;if(a.prototype!==b.prototype)return!1;if(isArguments(a))return isArguments(b)?(a=pSlice.call(a),b=pSlice.call(b),_deepEqual(a,b)):!1;try{var key,i,ka=objectKeys(a),kb=objectKeys(b)}catch(e){return!1}if(ka.length!=kb.length)return!1;for(ka.sort(),kb.sort(),i=ka.length-1;i>=0;i--)if(ka[i]!=kb[i])return!1;for(i=ka.length-1;i>=0;i--)if(key=ka[i],!_deepEqual(a[key],b[key]))return!1;return!0}function expectedException(actual,expected){return actual&&expected?expected instanceof RegExp?expected.test(actual):actual instanceof expected?!0:expected.call({},actual)===!0?!0:!1:!1}function _throws(shouldThrow,block,expected,message){var actual;\"string\"==typeof expected&&(message=expected,expected=null);try{block()}catch(e){actual=e}if(message=(expected&&expected.name?\" (\"+expected.name+\").\":\".\")+(message?\" \"+message:\".\"),shouldThrow&&!actual&&fail(\"Missing expected exception\"+message),!shouldThrow&&expectedException(actual,expected)&&fail(\"Got unwanted exception\"+message),shouldThrow&&actual&&expected&&!expectedException(actual,expected)||!shouldThrow&&actual)throw actual}var util=require(\"util\"),Buffer=require(\"buffer\").Buffer,pSlice=Array.prototype.slice,assert=module.exports=ok;assert.AssertionError=function(options){this.name=\"AssertionError\",this.message=options.message,this.actual=options.actual,this.expected=options.expected,this.operator=options.operator;var stackStartFunction=options.stackStartFunction||fail;Error.captureStackTrace&&Error.captureStackTrace(this,stackStartFunction)},util.inherits(assert.AssertionError,Error),assert.AssertionError.prototype.toString=function(){return this.message?[this.name+\":\",this.message].join(\" \"):[this.name+\":\",truncate(JSON.stringify(this.actual,replacer),128),this.operator,truncate(JSON.stringify(this.expected,replacer),128)].join(\" \")},assert.AssertionError.__proto__=Error.prototype,assert.fail=fail,assert.ok=ok,assert.equal=function(actual,expected,message){actual!=expected&&fail(actual,expected,message,\"==\",assert.equal)},assert.notEqual=function(actual,expected,message){actual==expected&&fail(actual,expected,message,\"!=\",assert.notEqual)},assert.deepEqual=function(actual,expected,message){_deepEqual(actual,expected)||fail(actual,expected,message,\"deepEqual\",assert.deepEqual)},assert.notDeepEqual=function(actual,expected,message){_deepEqual(actual,expected)&&fail(actual,expected,message,\"notDeepEqual\",assert.notDeepEqual)},assert.strictEqual=function(actual,expected,message){actual!==expected&&fail(actual,expected,message,\"===\",assert.strictEqual)},assert.notStrictEqual=function(actual,expected,message){actual===expected&&fail(actual,expected,message,\"!==\",assert.notStrictEqual)},assert.throws=function(){_throws.apply(this,[!0].concat(pSlice.call(arguments)))},assert.doesNotThrow=function(){_throws.apply(this,[!1].concat(pSlice.call(arguments)))},assert.ifError=function(err){if(err)throw err}})()},{util:6,buffer:71}],74:[function(){},{}],69:[function(require,module){function isUndefinedOrNull(value){return null===value||void 0===value}function isArguments(object){return\"[object Arguments]\"==Object.prototype.toString.call(object)}function isNumberNaN(value){return\"number\"==typeof value&&value!==value}function areZerosEqual(zeroA,zeroB){return 1/zeroA===1/zeroB}function objEquiv(a,b){if(isUndefinedOrNull(a)||isUndefinedOrNull(b))return!1;if(a.prototype!==b.prototype)return!1;if(isArguments(a))return isArguments(b)?(a=pSlice.call(a),b=pSlice.call(b),deepEqual(a,b)):!1;try{var key,i,ka=Object_keys(a),kb=Object_keys(b)}catch(e){return!1}if(ka.length!=kb.length)return!1;for(ka.sort(),kb.sort(),i=ka.length-1;i>=0;i--)if(ka[i]!=kb[i])return!1;for(i=ka.length-1;i>=0;i--)if(key=ka[i],!deepEqual(a[key],b[key]))return!1;return!0}var pSlice=Array.prototype.slice,Object_keys=\"function\"==typeof Object.keys?Object.keys:function(obj){var keys=[];for(var key in obj)keys.push(key);return keys},deepEqual=module.exports=function(actual,expected){return 0===actual&&0===expected?areZerosEqual(actual,expected):actual===expected?!0:actual instanceof Date&&expected instanceof Date?actual.getTime()===expected.getTime():isNumberNaN(actual)?isNumberNaN(expected):\"object\"!=typeof actual&&\"object\"!=typeof expected?actual==expected:objEquiv(actual,expected)}},{}],68:[function(require,module){\"use strict\";var colorNums={white:37,black:30,blue:34,cyan:36,green:32,magenta:35,red:31,yellow:33,brightBlack:90,brightRed:91,brightGreen:92,brightYellow:93,brightBlue:94,brightMagenta:95,brightCyan:96,brightWhite:97},backgroundColorNums={bgBlack:40,bgRed:41,bgGreen:42,bgYellow:43,bgBlue:44,bgMagenta:45,bgCyan:46,bgWhite:47,bgBrightBlack:100,bgBrightRed:101,bgBrightGreen:102,bgBrightYellow:103,bgBrightBlue:104,bgBrightMagenta:105,bgBrightCyan:106,bgBrightWhite:107},colors={};Object.keys(colorNums).forEach(function(k){colors[k]=function(s){return\"\u001b[\"+colorNums[k]+\"m\"+s+\"\u001b[39m\"}}),Object.keys(backgroundColorNums).forEach(function(k){colors[k]=function(s){return\"\u001b[\"+backgroundColorNums[k]+\"m\"+s+\"\u001b[49m\"}}),module.exports=colors},{}],70:[function(require,module,exports){(function(){(function(root,factory){\"use strict\";\"function\"==typeof define&&define.amd?define([\"exports\"],factory):exports!==void 0?factory(exports):factory(root.esprima={})})(this,function(exports){\"use strict\";function assert(condition,message){if(!condition)throw Error(\"ASSERT: \"+message)}function sliceSource(from,to){return source.slice(from,to)}function isDecimalDigit(ch){return\"0123456789\".indexOf(ch)>=0}function isHexDigit(ch){return\"0123456789abcdefABCDEF\".indexOf(ch)>=0}function isOctalDigit(ch){return\"01234567\".indexOf(ch)>=0}function isWhiteSpace(ch){return\" \"===ch||\"\t\"===ch||\"\u000b\"===ch||\"\\f\"===ch||\" \"===ch||ch.charCodeAt(0)>=5760&&\" ᠎              \".indexOf(ch)>=0}function isLineTerminator(ch){return\"\\n\"===ch||\"\\r\"===ch||\"\\u2028\"===ch||\"\\u2029\"===ch}function isIdentifierStart(ch){return\"$\"===ch||\"_\"===ch||\"\\\\\"===ch||ch>=\"a\"&&\"z\">=ch||ch>=\"A\"&&\"Z\">=ch||ch.charCodeAt(0)>=128&&Regex.NonAsciiIdentifierStart.test(ch)}function isIdentifierPart(ch){return\"$\"===ch||\"_\"===ch||\"\\\\\"===ch||ch>=\"a\"&&\"z\">=ch||ch>=\"A\"&&\"Z\">=ch||ch>=\"0\"&&\"9\">=ch||ch.charCodeAt(0)>=128&&Regex.NonAsciiIdentifierPart.test(ch)}function isFutureReservedWord(id){switch(id){case\"class\":case\"enum\":case\"export\":case\"extends\":case\"import\":case\"super\":return!0}return!1}function isStrictModeReservedWord(id){switch(id){case\"implements\":case\"interface\":case\"package\":case\"private\":case\"protected\":case\"public\":case\"static\":case\"yield\":case\"let\":return!0}return!1}function isRestrictedWord(id){return\"eval\"===id||\"arguments\"===id}function isKeyword(id){var keyword=!1;switch(id.length){case 2:keyword=\"if\"===id||\"in\"===id||\"do\"===id;break;case 3:keyword=\"var\"===id||\"for\"===id||\"new\"===id||\"try\"===id;break;case 4:keyword=\"this\"===id||\"else\"===id||\"case\"===id||\"void\"===id||\"with\"===id;break;case 5:keyword=\"while\"===id||\"break\"===id||\"catch\"===id||\"throw\"===id;break;case 6:keyword=\"return\"===id||\"typeof\"===id||\"delete\"===id||\"switch\"===id;break;case 7:keyword=\"default\"===id||\"finally\"===id;break;case 8:keyword=\"function\"===id||\"continue\"===id||\"debugger\"===id;break;case 10:keyword=\"instanceof\"===id}if(keyword)return!0;switch(id){case\"const\":return!0;case\"yield\":case\"let\":return!0}return strict&&isStrictModeReservedWord(id)?!0:isFutureReservedWord(id)}function skipComment(){var ch,blockComment,lineComment;for(blockComment=!1,lineComment=!1;length>index;)if(ch=source[index],lineComment)ch=source[index++],isLineTerminator(ch)&&(lineComment=!1,\"\\r\"===ch&&\"\\n\"===source[index]&&++index,++lineNumber,lineStart=index);else if(blockComment)isLineTerminator(ch)?(\"\\r\"===ch&&\"\\n\"===source[index+1]&&++index,++lineNumber,++index,lineStart=index,index>=length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")):(ch=source[index++],index>=length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\"),\"*\"===ch&&(ch=source[index],\"/\"===ch&&(++index,blockComment=!1)));else if(\"/\"===ch)if(ch=source[index+1],\"/\"===ch)index+=2,lineComment=!0;else{if(\"*\"!==ch)break;index+=2,blockComment=!0,index>=length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")}else if(isWhiteSpace(ch))++index;else{if(!isLineTerminator(ch))break;++index,\"\\r\"===ch&&\"\\n\"===source[index]&&++index,++lineNumber,lineStart=index}}function scanHexEscape(prefix){var i,len,ch,code=0;for(len=\"u\"===prefix?4:2,i=0;len>i;++i){if(!(length>index&&isHexDigit(source[index])))return\"\";ch=source[index++],code=16*code+\"0123456789abcdef\".indexOf(ch.toLowerCase())}return String.fromCharCode(code)}function scanIdentifier(){var ch,start,id,restore;if(ch=source[index],isIdentifierStart(ch)){if(start=index,\"\\\\\"===ch){if(++index,\"u\"!==source[index])return;if(++index,restore=index,ch=scanHexEscape(\"u\")){if(\"\\\\\"===ch||!isIdentifierStart(ch))return;id=ch}else index=restore,id=\"u\"}else id=source[index++];for(;length>index&&(ch=source[index],isIdentifierPart(ch));)if(\"\\\\\"===ch){if(++index,\"u\"!==source[index])return;if(++index,restore=index,ch=scanHexEscape(\"u\")){if(\"\\\\\"===ch||!isIdentifierPart(ch))return;id+=ch}else index=restore,id+=\"u\"}else id+=source[index++];return 1===id.length?{type:Token.Identifier,value:id,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}:isKeyword(id)?{type:Token.Keyword,value:id,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}:\"null\"===id?{type:Token.NullLiteral,value:id,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}:\"true\"===id||\"false\"===id?{type:Token.BooleanLiteral,value:id,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}:{type:Token.Identifier,value:id,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}}}function scanPunctuator(){var ch2,ch3,ch4,start=index,ch1=source[index];return\";\"===ch1||\"{\"===ch1||\"}\"===ch1?(++index,{type:Token.Punctuator,value:ch1,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\",\"===ch1||\"(\"===ch1||\")\"===ch1?(++index,{type:Token.Punctuator,value:ch1,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):(ch2=source[index+1],\".\"!==ch1||isDecimalDigit(ch2)?(ch3=source[index+2],ch4=source[index+3],\">\"===ch1&&\">\"===ch2&&\">\"===ch3&&\"=\"===ch4?(index+=4,{type:Token.Punctuator,value:\">>>=\",lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\"=\"===ch1&&\"=\"===ch2&&\"=\"===ch3?(index+=3,{type:Token.Punctuator,value:\"===\",lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\"!\"===ch1&&\"=\"===ch2&&\"=\"===ch3?(index+=3,{type:Token.Punctuator,value:\"!==\",lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\">\"===ch1&&\">\"===ch2&&\">\"===ch3?(index+=3,{type:Token.Punctuator,value:\">>>\",lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\"\u003C\"===ch1&&\"\u003C\"===ch2&&\"=\"===ch3?(index+=3,{type:Token.Punctuator,value:\"\u003C\u003C=\",lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\">\"===ch1&&\">\"===ch2&&\"=\"===ch3?(index+=3,{type:Token.Punctuator,value:\">>=\",lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\"=\"===ch2&&\"\u003C>=!+-*%&|^/\".indexOf(ch1)>=0?(index+=2,{type:Token.Punctuator,value:ch1+ch2,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):ch1===ch2&&\"+-\u003C>&|\".indexOf(ch1)>=0&&\"+-\u003C>&|\".indexOf(ch2)>=0?(index+=2,{type:Token.Punctuator,value:ch1+ch2,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\"[]\u003C>+-*%&|^!~?:=/\".indexOf(ch1)>=0?{type:Token.Punctuator,value:source[index++],lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}:void 0):{type:Token.Punctuator,value:source[index++],lineNumber:lineNumber,lineStart:lineStart,range:[start,index]})}function scanNumericLiteral(){var number,start,ch;if(ch=source[index],assert(isDecimalDigit(ch)||\".\"===ch,\"Numeric literal must start with a decimal digit or a decimal point\"),start=index,number=\"\",\".\"!==ch){if(number=source[index++],ch=source[index],\"0\"===number){if(\"x\"===ch||\"X\"===ch){for(number+=source[index++];length>index&&(ch=source[index],isHexDigit(ch));)number+=source[index++];return 2>=number.length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\"),length>index&&(ch=source[index],isIdentifierStart(ch)&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")),{type:Token.NumericLiteral,value:parseInt(number,16),lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}}if(isOctalDigit(ch)){for(number+=source[index++];length>index&&(ch=source[index],isOctalDigit(ch));)number+=source[index++];return length>index&&(ch=source[index],(isIdentifierStart(ch)||isDecimalDigit(ch))&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")),{type:Token.NumericLiteral,value:parseInt(number,8),octal:!0,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}}isDecimalDigit(ch)&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")}for(;length>index&&(ch=source[index],isDecimalDigit(ch));)number+=source[index++]}if(\".\"===ch)for(number+=source[index++];length>index&&(ch=source[index],isDecimalDigit(ch));)number+=source[index++];if(\"e\"===ch||\"E\"===ch)if(number+=source[index++],ch=source[index],(\"+\"===ch||\"-\"===ch)&&(number+=source[index++]),ch=source[index],isDecimalDigit(ch))for(number+=source[index++];length>index&&(ch=source[index],isDecimalDigit(ch));)number+=source[index++];else ch=\"character \"+ch,index>=length&&(ch=\"\u003Cend>\"),throwError({},Messages.UnexpectedToken,\"ILLEGAL\");return length>index&&(ch=source[index],isIdentifierStart(ch)&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")),{type:Token.NumericLiteral,value:parseFloat(number),lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}}function scanStringLiteral(){var quote,start,ch,code,unescaped,restore,str=\"\",octal=!1;for(quote=source[index],assert(\"'\"===quote||'\"'===quote,\"String literal must starts with a quote\"),start=index,++index;length>index;){if(ch=source[index++],ch===quote){quote=\"\";break}if(\"\\\\\"===ch)if(ch=source[index++],isLineTerminator(ch))++lineNumber,\"\\r\"===ch&&\"\\n\"===source[index]&&++index;else switch(ch){case\"n\":str+=\"\\n\";break;case\"r\":str+=\"\\r\";break;case\"t\":str+=\"\t\";break;case\"u\":case\"x\":restore=index,unescaped=scanHexEscape(ch),unescaped?str+=unescaped:(index=restore,str+=ch);break;case\"b\":str+=\"\\b\";break;case\"f\":str+=\"\\f\";break;case\"v\":str+=\"\u000b\";break;default:isOctalDigit(ch)?(code=\"01234567\".indexOf(ch),0!==code&&(octal=!0),length>index&&isOctalDigit(source[index])&&(octal=!0,code=8*code+\"01234567\".indexOf(source[index++]),\"0123\".indexOf(ch)>=0&&length>index&&isOctalDigit(source[index])&&(code=8*code+\"01234567\".indexOf(source[index++]))),str+=String.fromCharCode(code)):str+=ch}else{if(isLineTerminator(ch))break;str+=ch}}return\"\"!==quote&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\"),{type:Token.StringLiteral,value:str,octal:octal,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}}function scanRegExp(){var str,ch,start,pattern,flags,value,restore,classMarker=!1,terminated=!1;for(buffer=null,skipComment(),start=index,ch=source[index],assert(\"/\"===ch,\"Regular expression literal must start with a slash\"),str=source[index++];length>index;)if(ch=source[index++],str+=ch,classMarker)\"]\"===ch&&(classMarker=!1);else if(\"\\\\\"===ch)ch=source[index++],isLineTerminator(ch)&&throwError({},Messages.UnterminatedRegExp),str+=ch;else{if(\"/\"===ch){terminated=!0;break}\"[\"===ch?classMarker=!0:isLineTerminator(ch)&&throwError({},Messages.UnterminatedRegExp)}for(terminated||throwError({},Messages.UnterminatedRegExp),pattern=str.substr(1,str.length-2),flags=\"\";length>index&&(ch=source[index],isIdentifierPart(ch));)if(++index,\"\\\\\"===ch&&length>index)if(ch=source[index],\"u\"===ch)if(++index,restore=index,ch=scanHexEscape(\"u\"))for(flags+=ch,str+=\"\\\\u\";index>restore;++restore)str+=source[restore];else index=restore,flags+=\"u\",str+=\"\\\\u\";else str+=\"\\\\\";else flags+=ch,str+=ch;try{value=RegExp(pattern,flags)}catch(e){throwError({},Messages.InvalidRegExp)}return{literal:str,value:value,range:[start,index]}}function isIdentifierName(token){return token.type===Token.Identifier||token.type===Token.Keyword||token.type===Token.BooleanLiteral||token.type===Token.NullLiteral}function advance(){var ch,token;return skipComment(),index>=length?{type:Token.EOF,lineNumber:lineNumber,lineStart:lineStart,range:[index,index]}:(token=scanPunctuator(),token!==void 0?token:(ch=source[index],\"'\"===ch||'\"'===ch?scanStringLiteral():\".\"===ch||isDecimalDigit(ch)?scanNumericLiteral():(token=scanIdentifier(),token!==void 0?token:(throwError({},Messages.UnexpectedToken,\"ILLEGAL\"),void 0))))}function lex(){var token;return buffer?(index=buffer.range[1],lineNumber=buffer.lineNumber,lineStart=buffer.lineStart,token=buffer,buffer=null,token):(buffer=null,advance())}function lookahead(){var pos,line,start;return null!==buffer?buffer:(pos=index,line=lineNumber,start=lineStart,buffer=advance(),index=pos,lineNumber=line,lineStart=start,buffer)}function peekLineTerminator(){var pos,line,start,found;return pos=index,line=lineNumber,start=lineStart,skipComment(),found=lineNumber!==line,index=pos,lineNumber=line,lineStart=start,found}function throwError(token,messageFormat){var error,args=Array.prototype.slice.call(arguments,2),msg=messageFormat.replace(/%(\\d)/g,function(whole,index){return args[index]||\"\"});throw\"number\"==typeof token.lineNumber?(error=Error(\"Line \"+token.lineNumber+\": \"+msg),error.index=token.range[0],error.lineNumber=token.lineNumber,error.column=token.range[0]-lineStart+1):(error=Error(\"Line \"+lineNumber+\": \"+msg),error.index=index,error.lineNumber=lineNumber,error.column=index-lineStart+1),error}function throwErrorTolerant(){try{throwError.apply(null,arguments)}catch(e){if(!extra.errors)throw e;extra.errors.push(e)}}function throwUnexpected(token){if(token.type===Token.EOF&&throwError(token,Messages.UnexpectedEOS),token.type===Token.NumericLiteral&&throwError(token,Messages.UnexpectedNumber),token.type===Token.StringLiteral&&throwError(token,Messages.UnexpectedString),token.type===Token.Identifier&&throwError(token,Messages.UnexpectedIdentifier),token.type===Token.Keyword){if(isFutureReservedWord(token.value))throwError(token,Messages.UnexpectedReserved);else if(strict&&isStrictModeReservedWord(token.value))return throwErrorTolerant(token,Messages.StrictReservedWord),void 0;throwError(token,Messages.UnexpectedToken,token.value)}throwError(token,Messages.UnexpectedToken,token.value)}function expect(value){var token=lex();(token.type!==Token.Punctuator||token.value!==value)&&throwUnexpected(token)}function expectKeyword(keyword){var token=lex();(token.type!==Token.Keyword||token.value!==keyword)&&throwUnexpected(token)}function match(value){var token=lookahead();return token.type===Token.Punctuator&&token.value===value}function matchKeyword(keyword){var token=lookahead();return token.type===Token.Keyword&&token.value===keyword}function matchAssign(){var token=lookahead(),op=token.value;return token.type!==Token.Punctuator?!1:\"=\"===op||\"*=\"===op||\"/=\"===op||\"%=\"===op||\"+=\"===op||\"-=\"===op||\"\u003C\u003C=\"===op||\">>=\"===op||\">>>=\"===op||\"&=\"===op||\"^=\"===op||\"|=\"===op}function consumeSemicolon(){var token,line;if(\";\"===source[index])return lex(),void 0;if(line=lineNumber,skipComment(),lineNumber===line){if(match(\";\"))return lex(),void 0;token=lookahead(),token.type===Token.EOF||match(\"}\")||throwUnexpected(token)}}function isLeftHandSide(expr){return expr.type===Syntax.Identifier||expr.type===Syntax.MemberExpression}function parseArrayInitialiser(){var elements=[];for(expect(\"[\");!match(\"]\");)match(\",\")?(lex(),elements.push(null)):(elements.push(parseAssignmentExpression()),match(\"]\")||expect(\",\"));return expect(\"]\"),{type:Syntax.ArrayExpression,elements:elements}}function parsePropertyFunction(param,first){var previousStrict,body;return previousStrict=strict,body=parseFunctionSourceElements(),first&&strict&&isRestrictedWord(param[0].name)&&throwErrorTolerant(first,Messages.StrictParamName),strict=previousStrict,{type:Syntax.FunctionExpression,id:null,params:param,defaults:[],body:body,rest:null,generator:!1,expression:!1}}function parseObjectPropertyKey(){var token=lex();return token.type===Token.StringLiteral||token.type===Token.NumericLiteral?(strict&&token.octal&&throwErrorTolerant(token,Messages.StrictOctalLiteral),createLiteral(token)):{type:Syntax.Identifier,name:token.value}}function parseObjectProperty(){var token,key,id,param;return token=lookahead(),token.type===Token.Identifier?(id=parseObjectPropertyKey(),\"get\"!==token.value||match(\":\")?\"set\"!==token.value||match(\":\")?(expect(\":\"),{type:Syntax.Property,key:id,value:parseAssignmentExpression(),kind:\"init\"}):(key=parseObjectPropertyKey(),expect(\"(\"),token=lookahead(),token.type!==Token.Identifier&&throwUnexpected(lex()),param=[parseVariableIdentifier()],expect(\")\"),{type:Syntax.Property,key:key,value:parsePropertyFunction(param,token),kind:\"set\"}):(key=parseObjectPropertyKey(),expect(\"(\"),expect(\")\"),{type:Syntax.Property,key:key,value:parsePropertyFunction([]),kind:\"get\"})):token.type!==Token.EOF&&token.type!==Token.Punctuator?(key=parseObjectPropertyKey(),expect(\":\"),{type:Syntax.Property,key:key,value:parseAssignmentExpression(),kind:\"init\"}):(throwUnexpected(token),void 0)}function parseObjectInitialiser(){var property,name,kind,properties=[],map={},toString=String;for(expect(\"{\");!match(\"}\");)property=parseObjectProperty(),name=property.key.type===Syntax.Identifier?property.key.name:toString(property.key.value),kind=\"init\"===property.kind?PropertyKind.Data:\"get\"===property.kind?PropertyKind.Get:PropertyKind.Set,Object.prototype.hasOwnProperty.call(map,name)?(map[name]===PropertyKind.Data?strict&&kind===PropertyKind.Data?throwErrorTolerant({},Messages.StrictDuplicateProperty):kind!==PropertyKind.Data&&throwErrorTolerant({},Messages.AccessorDataProperty):kind===PropertyKind.Data?throwErrorTolerant({},Messages.AccessorDataProperty):map[name]&kind&&throwErrorTolerant({},Messages.AccessorGetSet),map[name]|=kind):map[name]=kind,properties.push(property),match(\"}\")||expect(\",\");return expect(\"}\"),{type:Syntax.ObjectExpression,properties:properties}}function parseGroupExpression(){var expr;return expect(\"(\"),expr=parseExpression(),expect(\")\"),expr}function parsePrimaryExpression(){var token=lookahead(),type=token.type;if(type===Token.Identifier)return{type:Syntax.Identifier,name:lex().value};if(type===Token.StringLiteral||type===Token.NumericLiteral)return strict&&token.octal&&throwErrorTolerant(token,Messages.StrictOctalLiteral),createLiteral(lex());if(type===Token.Keyword){if(matchKeyword(\"this\"))return lex(),{type:Syntax.ThisExpression};if(matchKeyword(\"function\"))return parseFunctionExpression()}return type===Token.BooleanLiteral?(lex(),token.value=\"true\"===token.value,createLiteral(token)):type===Token.NullLiteral?(lex(),token.value=null,createLiteral(token)):match(\"[\")?parseArrayInitialiser():match(\"{\")?parseObjectInitialiser():match(\"(\")?parseGroupExpression():match(\"/\")||match(\"/=\")?createLiteral(scanRegExp()):throwUnexpected(lex())}function parseArguments(){var args=[];if(expect(\"(\"),!match(\")\"))for(;length>index&&(args.push(parseAssignmentExpression()),!match(\")\"));)expect(\",\");return expect(\")\"),args}function parseNonComputedProperty(){var token=lex();return isIdentifierName(token)||throwUnexpected(token),{type:Syntax.Identifier,name:token.value}}function parseNonComputedMember(){return expect(\".\"),parseNonComputedProperty()}function parseComputedMember(){var expr;return expect(\"[\"),expr=parseExpression(),expect(\"]\"),expr}function parseNewExpression(){var expr;return expectKeyword(\"new\"),expr={type:Syntax.NewExpression,callee:parseLeftHandSideExpression(),arguments:[]},match(\"(\")&&(expr.arguments=parseArguments()),expr}function parseLeftHandSideExpressionAllowCall(){var expr;for(expr=matchKeyword(\"new\")?parseNewExpression():parsePrimaryExpression();match(\".\")||match(\"[\")||match(\"(\");)expr=match(\"(\")?{type:Syntax.CallExpression,callee:expr,arguments:parseArguments()}:match(\"[\")?{type:Syntax.MemberExpression,computed:!0,object:expr,property:parseComputedMember()}:{type:Syntax.MemberExpression,computed:!1,object:expr,property:parseNonComputedMember()};return expr}function parseLeftHandSideExpression(){var expr;for(expr=matchKeyword(\"new\")?parseNewExpression():parsePrimaryExpression();match(\".\")||match(\"[\");)expr=match(\"[\")?{type:Syntax.MemberExpression,computed:!0,object:expr,property:parseComputedMember()}:{type:Syntax.MemberExpression,computed:!1,object:expr,property:parseNonComputedMember()};return expr}function parsePostfixExpression(){var token,expr=parseLeftHandSideExpressionAllowCall();return token=lookahead(),token.type!==Token.Punctuator?expr:(!match(\"++\")&&!match(\"--\")||peekLineTerminator()||(strict&&expr.type===Syntax.Identifier&&isRestrictedWord(expr.name)&&throwErrorTolerant({},Messages.StrictLHSPostfix),isLeftHandSide(expr)||throwError({},Messages.InvalidLHSInAssignment),expr={type:Syntax.UpdateExpression,operator:lex().value,argument:expr,prefix:!1}),expr)}function parseUnaryExpression(){var token,expr;return token=lookahead(),token.type!==Token.Punctuator&&token.type!==Token.Keyword?parsePostfixExpression():match(\"++\")||match(\"--\")?(token=lex(),expr=parseUnaryExpression(),strict&&expr.type===Syntax.Identifier&&isRestrictedWord(expr.name)&&throwErrorTolerant({},Messages.StrictLHSPrefix),isLeftHandSide(expr)||throwError({},Messages.InvalidLHSInAssignment),expr={type:Syntax.UpdateExpression,operator:token.value,argument:expr,prefix:!0}):match(\"+\")||match(\"-\")||match(\"~\")||match(\"!\")?expr={type:Syntax.UnaryExpression,operator:lex().value,argument:parseUnaryExpression()}:matchKeyword(\"delete\")||matchKeyword(\"void\")||matchKeyword(\"typeof\")?(expr={type:Syntax.UnaryExpression,operator:lex().value,argument:parseUnaryExpression()},strict&&\"delete\"===expr.operator&&expr.argument.type===Syntax.Identifier&&throwErrorTolerant({},Messages.StrictDelete),expr):parsePostfixExpression()\n}function parseMultiplicativeExpression(){for(var expr=parseUnaryExpression();match(\"*\")||match(\"/\")||match(\"%\");)expr={type:Syntax.BinaryExpression,operator:lex().value,left:expr,right:parseUnaryExpression()};return expr}function parseAdditiveExpression(){for(var expr=parseMultiplicativeExpression();match(\"+\")||match(\"-\");)expr={type:Syntax.BinaryExpression,operator:lex().value,left:expr,right:parseMultiplicativeExpression()};return expr}function parseShiftExpression(){for(var expr=parseAdditiveExpression();match(\"\u003C\u003C\")||match(\">>\")||match(\">>>\");)expr={type:Syntax.BinaryExpression,operator:lex().value,left:expr,right:parseAdditiveExpression()};return expr}function parseRelationalExpression(){var expr,previousAllowIn;for(previousAllowIn=state.allowIn,state.allowIn=!0,expr=parseShiftExpression();match(\"\u003C\")||match(\">\")||match(\"\u003C=\")||match(\">=\")||previousAllowIn&&matchKeyword(\"in\")||matchKeyword(\"instanceof\");)expr={type:Syntax.BinaryExpression,operator:lex().value,left:expr,right:parseShiftExpression()};return state.allowIn=previousAllowIn,expr}function parseEqualityExpression(){for(var expr=parseRelationalExpression();match(\"==\")||match(\"!=\")||match(\"===\")||match(\"!==\");)expr={type:Syntax.BinaryExpression,operator:lex().value,left:expr,right:parseRelationalExpression()};return expr}function parseBitwiseANDExpression(){for(var expr=parseEqualityExpression();match(\"&\");)lex(),expr={type:Syntax.BinaryExpression,operator:\"&\",left:expr,right:parseEqualityExpression()};return expr}function parseBitwiseXORExpression(){for(var expr=parseBitwiseANDExpression();match(\"^\");)lex(),expr={type:Syntax.BinaryExpression,operator:\"^\",left:expr,right:parseBitwiseANDExpression()};return expr}function parseBitwiseORExpression(){for(var expr=parseBitwiseXORExpression();match(\"|\");)lex(),expr={type:Syntax.BinaryExpression,operator:\"|\",left:expr,right:parseBitwiseXORExpression()};return expr}function parseLogicalANDExpression(){for(var expr=parseBitwiseORExpression();match(\"&&\");)lex(),expr={type:Syntax.LogicalExpression,operator:\"&&\",left:expr,right:parseBitwiseORExpression()};return expr}function parseLogicalORExpression(){for(var expr=parseLogicalANDExpression();match(\"||\");)lex(),expr={type:Syntax.LogicalExpression,operator:\"||\",left:expr,right:parseLogicalANDExpression()};return expr}function parseConditionalExpression(){var expr,previousAllowIn,consequent;return expr=parseLogicalORExpression(),match(\"?\")&&(lex(),previousAllowIn=state.allowIn,state.allowIn=!0,consequent=parseAssignmentExpression(),state.allowIn=previousAllowIn,expect(\":\"),expr={type:Syntax.ConditionalExpression,test:expr,consequent:consequent,alternate:parseAssignmentExpression()}),expr}function parseAssignmentExpression(){var token,expr;return token=lookahead(),expr=parseConditionalExpression(),matchAssign()&&(isLeftHandSide(expr)||throwError({},Messages.InvalidLHSInAssignment),strict&&expr.type===Syntax.Identifier&&isRestrictedWord(expr.name)&&throwErrorTolerant(token,Messages.StrictLHSAssignment),expr={type:Syntax.AssignmentExpression,operator:lex().value,left:expr,right:parseAssignmentExpression()}),expr}function parseExpression(){var expr=parseAssignmentExpression();if(match(\",\"))for(expr={type:Syntax.SequenceExpression,expressions:[expr]};length>index&&match(\",\");)lex(),expr.expressions.push(parseAssignmentExpression());return expr}function parseStatementList(){for(var statement,list=[];length>index&&!match(\"}\")&&(statement=parseSourceElement(),void 0!==statement);)list.push(statement);return list}function parseBlock(){var block;return expect(\"{\"),block=parseStatementList(),expect(\"}\"),{type:Syntax.BlockStatement,body:block}}function parseVariableIdentifier(){var token=lex();return token.type!==Token.Identifier&&throwUnexpected(token),{type:Syntax.Identifier,name:token.value}}function parseVariableDeclaration(kind){var id=parseVariableIdentifier(),init=null;return strict&&isRestrictedWord(id.name)&&throwErrorTolerant({},Messages.StrictVarName),\"const\"===kind?(expect(\"=\"),init=parseAssignmentExpression()):match(\"=\")&&(lex(),init=parseAssignmentExpression()),{type:Syntax.VariableDeclarator,id:id,init:init}}function parseVariableDeclarationList(kind){for(var list=[];length>index&&(list.push(parseVariableDeclaration(kind)),match(\",\"));)lex();return list}function parseVariableStatement(){var declarations;return expectKeyword(\"var\"),declarations=parseVariableDeclarationList(),consumeSemicolon(),{type:Syntax.VariableDeclaration,declarations:declarations,kind:\"var\"}}function parseConstLetDeclaration(kind){var declarations;return expectKeyword(kind),declarations=parseVariableDeclarationList(kind),consumeSemicolon(),{type:Syntax.VariableDeclaration,declarations:declarations,kind:kind}}function parseEmptyStatement(){return expect(\";\"),{type:Syntax.EmptyStatement}}function parseExpressionStatement(){var expr=parseExpression();return consumeSemicolon(),{type:Syntax.ExpressionStatement,expression:expr}}function parseIfStatement(){var test,consequent,alternate;return expectKeyword(\"if\"),expect(\"(\"),test=parseExpression(),expect(\")\"),consequent=parseStatement(),matchKeyword(\"else\")?(lex(),alternate=parseStatement()):alternate=null,{type:Syntax.IfStatement,test:test,consequent:consequent,alternate:alternate}}function parseDoWhileStatement(){var body,test,oldInIteration;return expectKeyword(\"do\"),oldInIteration=state.inIteration,state.inIteration=!0,body=parseStatement(),state.inIteration=oldInIteration,expectKeyword(\"while\"),expect(\"(\"),test=parseExpression(),expect(\")\"),match(\";\")&&lex(),{type:Syntax.DoWhileStatement,body:body,test:test}}function parseWhileStatement(){var test,body,oldInIteration;return expectKeyword(\"while\"),expect(\"(\"),test=parseExpression(),expect(\")\"),oldInIteration=state.inIteration,state.inIteration=!0,body=parseStatement(),state.inIteration=oldInIteration,{type:Syntax.WhileStatement,test:test,body:body}}function parseForVariableDeclaration(){var token=lex();return{type:Syntax.VariableDeclaration,declarations:parseVariableDeclarationList(),kind:token.value}}function parseForStatement(){var init,test,update,left,right,body,oldInIteration;return init=test=update=null,expectKeyword(\"for\"),expect(\"(\"),match(\";\")?lex():(matchKeyword(\"var\")||matchKeyword(\"let\")?(state.allowIn=!1,init=parseForVariableDeclaration(),state.allowIn=!0,1===init.declarations.length&&matchKeyword(\"in\")&&(lex(),left=init,right=parseExpression(),init=null)):(state.allowIn=!1,init=parseExpression(),state.allowIn=!0,matchKeyword(\"in\")&&(isLeftHandSide(init)||throwError({},Messages.InvalidLHSInForIn),lex(),left=init,right=parseExpression(),init=null)),left===void 0&&expect(\";\")),left===void 0&&(match(\";\")||(test=parseExpression()),expect(\";\"),match(\")\")||(update=parseExpression())),expect(\")\"),oldInIteration=state.inIteration,state.inIteration=!0,body=parseStatement(),state.inIteration=oldInIteration,left===void 0?{type:Syntax.ForStatement,init:init,test:test,update:update,body:body}:{type:Syntax.ForInStatement,left:left,right:right,body:body,each:!1}}function parseContinueStatement(){var token,label=null;return expectKeyword(\"continue\"),\";\"===source[index]?(lex(),state.inIteration||throwError({},Messages.IllegalContinue),{type:Syntax.ContinueStatement,label:null}):peekLineTerminator()?(state.inIteration||throwError({},Messages.IllegalContinue),{type:Syntax.ContinueStatement,label:null}):(token=lookahead(),token.type===Token.Identifier&&(label=parseVariableIdentifier(),Object.prototype.hasOwnProperty.call(state.labelSet,label.name)||throwError({},Messages.UnknownLabel,label.name)),consumeSemicolon(),null!==label||state.inIteration||throwError({},Messages.IllegalContinue),{type:Syntax.ContinueStatement,label:label})}function parseBreakStatement(){var token,label=null;return expectKeyword(\"break\"),\";\"===source[index]?(lex(),state.inIteration||state.inSwitch||throwError({},Messages.IllegalBreak),{type:Syntax.BreakStatement,label:null}):peekLineTerminator()?(state.inIteration||state.inSwitch||throwError({},Messages.IllegalBreak),{type:Syntax.BreakStatement,label:null}):(token=lookahead(),token.type===Token.Identifier&&(label=parseVariableIdentifier(),Object.prototype.hasOwnProperty.call(state.labelSet,label.name)||throwError({},Messages.UnknownLabel,label.name)),consumeSemicolon(),null!==label||state.inIteration||state.inSwitch||throwError({},Messages.IllegalBreak),{type:Syntax.BreakStatement,label:label})}function parseReturnStatement(){var token,argument=null;return expectKeyword(\"return\"),state.inFunctionBody||throwErrorTolerant({},Messages.IllegalReturn),\" \"===source[index]&&isIdentifierStart(source[index+1])?(argument=parseExpression(),consumeSemicolon(),{type:Syntax.ReturnStatement,argument:argument}):peekLineTerminator()?{type:Syntax.ReturnStatement,argument:null}:(match(\";\")||(token=lookahead(),match(\"}\")||token.type===Token.EOF||(argument=parseExpression())),consumeSemicolon(),{type:Syntax.ReturnStatement,argument:argument})}function parseWithStatement(){var object,body;return strict&&throwErrorTolerant({},Messages.StrictModeWith),expectKeyword(\"with\"),expect(\"(\"),object=parseExpression(),expect(\")\"),body=parseStatement(),{type:Syntax.WithStatement,object:object,body:body}}function parseSwitchCase(){var test,statement,consequent=[];for(matchKeyword(\"default\")?(lex(),test=null):(expectKeyword(\"case\"),test=parseExpression()),expect(\":\");length>index&&!(match(\"}\")||matchKeyword(\"default\")||matchKeyword(\"case\"))&&(statement=parseStatement(),void 0!==statement);)consequent.push(statement);return{type:Syntax.SwitchCase,test:test,consequent:consequent}}function parseSwitchStatement(){var discriminant,cases,clause,oldInSwitch,defaultFound;if(expectKeyword(\"switch\"),expect(\"(\"),discriminant=parseExpression(),expect(\")\"),expect(\"{\"),match(\"}\"))return lex(),{type:Syntax.SwitchStatement,discriminant:discriminant};for(cases=[],oldInSwitch=state.inSwitch,state.inSwitch=!0,defaultFound=!1;length>index&&!match(\"}\");)clause=parseSwitchCase(),null===clause.test&&(defaultFound&&throwError({},Messages.MultipleDefaultsInSwitch),defaultFound=!0),cases.push(clause);return state.inSwitch=oldInSwitch,expect(\"}\"),{type:Syntax.SwitchStatement,discriminant:discriminant,cases:cases}}function parseThrowStatement(){var argument;return expectKeyword(\"throw\"),peekLineTerminator()&&throwError({},Messages.NewlineAfterThrow),argument=parseExpression(),consumeSemicolon(),{type:Syntax.ThrowStatement,argument:argument}}function parseCatchClause(){var param;return expectKeyword(\"catch\"),expect(\"(\"),match(\")\")||(param=parseExpression(),strict&¶m.type===Syntax.Identifier&&isRestrictedWord(param.name)&&throwErrorTolerant({},Messages.StrictCatchVariable)),expect(\")\"),{type:Syntax.CatchClause,param:param,body:parseBlock()}}function parseTryStatement(){var block,handlers=[],finalizer=null;return expectKeyword(\"try\"),block=parseBlock(),matchKeyword(\"catch\")&&handlers.push(parseCatchClause()),matchKeyword(\"finally\")&&(lex(),finalizer=parseBlock()),0!==handlers.length||finalizer||throwError({},Messages.NoCatchOrFinally),{type:Syntax.TryStatement,block:block,guardedHandlers:[],handlers:handlers,finalizer:finalizer}}function parseDebuggerStatement(){return expectKeyword(\"debugger\"),consumeSemicolon(),{type:Syntax.DebuggerStatement}}function parseStatement(){var expr,labeledBody,token=lookahead();if(token.type===Token.EOF&&throwUnexpected(token),token.type===Token.Punctuator)switch(token.value){case\";\":return parseEmptyStatement();case\"{\":return parseBlock();case\"(\":return parseExpressionStatement();default:}if(token.type===Token.Keyword)switch(token.value){case\"break\":return parseBreakStatement();case\"continue\":return parseContinueStatement();case\"debugger\":return parseDebuggerStatement();case\"do\":return parseDoWhileStatement();case\"for\":return parseForStatement();case\"function\":return parseFunctionDeclaration();case\"if\":return parseIfStatement();case\"return\":return parseReturnStatement();case\"switch\":return parseSwitchStatement();case\"throw\":return parseThrowStatement();case\"try\":return parseTryStatement();case\"var\":return parseVariableStatement();case\"while\":return parseWhileStatement();case\"with\":return parseWithStatement();default:}return expr=parseExpression(),expr.type===Syntax.Identifier&&match(\":\")?(lex(),Object.prototype.hasOwnProperty.call(state.labelSet,expr.name)&&throwError({},Messages.Redeclaration,\"Label\",expr.name),state.labelSet[expr.name]=!0,labeledBody=parseStatement(),delete state.labelSet[expr.name],{type:Syntax.LabeledStatement,label:expr,body:labeledBody}):(consumeSemicolon(),{type:Syntax.ExpressionStatement,expression:expr})}function parseFunctionSourceElements(){var sourceElement,token,directive,firstRestricted,oldLabelSet,oldInIteration,oldInSwitch,oldInFunctionBody,sourceElements=[];for(expect(\"{\");length>index&&(token=lookahead(),token.type===Token.StringLiteral)&&(sourceElement=parseSourceElement(),sourceElements.push(sourceElement),sourceElement.expression.type===Syntax.Literal);)directive=sliceSource(token.range[0]+1,token.range[1]-1),\"use strict\"===directive?(strict=!0,firstRestricted&&throwErrorTolerant(firstRestricted,Messages.StrictOctalLiteral)):!firstRestricted&&token.octal&&(firstRestricted=token);for(oldLabelSet=state.labelSet,oldInIteration=state.inIteration,oldInSwitch=state.inSwitch,oldInFunctionBody=state.inFunctionBody,state.labelSet={},state.inIteration=!1,state.inSwitch=!1,state.inFunctionBody=!0;length>index&&!match(\"}\")&&(sourceElement=parseSourceElement(),void 0!==sourceElement);)sourceElements.push(sourceElement);return expect(\"}\"),state.labelSet=oldLabelSet,state.inIteration=oldInIteration,state.inSwitch=oldInSwitch,state.inFunctionBody=oldInFunctionBody,{type:Syntax.BlockStatement,body:sourceElements}}function parseFunctionDeclaration(){var id,param,body,token,stricted,firstRestricted,message,previousStrict,paramSet,params=[];if(expectKeyword(\"function\"),token=lookahead(),id=parseVariableIdentifier(),strict?isRestrictedWord(token.value)&&throwErrorTolerant(token,Messages.StrictFunctionName):isRestrictedWord(token.value)?(firstRestricted=token,message=Messages.StrictFunctionName):isStrictModeReservedWord(token.value)&&(firstRestricted=token,message=Messages.StrictReservedWord),expect(\"(\"),!match(\")\"))for(paramSet={};length>index&&(token=lookahead(),param=parseVariableIdentifier(),strict?(isRestrictedWord(token.value)&&(stricted=token,message=Messages.StrictParamName),Object.prototype.hasOwnProperty.call(paramSet,token.value)&&(stricted=token,message=Messages.StrictParamDupe)):firstRestricted||(isRestrictedWord(token.value)?(firstRestricted=token,message=Messages.StrictParamName):isStrictModeReservedWord(token.value)?(firstRestricted=token,message=Messages.StrictReservedWord):Object.prototype.hasOwnProperty.call(paramSet,token.value)&&(firstRestricted=token,message=Messages.StrictParamDupe)),params.push(param),paramSet[param.name]=!0,!match(\")\"));)expect(\",\");return expect(\")\"),previousStrict=strict,body=parseFunctionSourceElements(),strict&&firstRestricted&&throwError(firstRestricted,message),strict&&stricted&&throwErrorTolerant(stricted,message),strict=previousStrict,{type:Syntax.FunctionDeclaration,id:id,params:params,defaults:[],body:body,rest:null,generator:!1,expression:!1}}function parseFunctionExpression(){var token,stricted,firstRestricted,message,param,body,previousStrict,paramSet,id=null,params=[];if(expectKeyword(\"function\"),match(\"(\")||(token=lookahead(),id=parseVariableIdentifier(),strict?isRestrictedWord(token.value)&&throwErrorTolerant(token,Messages.StrictFunctionName):isRestrictedWord(token.value)?(firstRestricted=token,message=Messages.StrictFunctionName):isStrictModeReservedWord(token.value)&&(firstRestricted=token,message=Messages.StrictReservedWord)),expect(\"(\"),!match(\")\"))for(paramSet={};length>index&&(token=lookahead(),param=parseVariableIdentifier(),strict?(isRestrictedWord(token.value)&&(stricted=token,message=Messages.StrictParamName),Object.prototype.hasOwnProperty.call(paramSet,token.value)&&(stricted=token,message=Messages.StrictParamDupe)):firstRestricted||(isRestrictedWord(token.value)?(firstRestricted=token,message=Messages.StrictParamName):isStrictModeReservedWord(token.value)?(firstRestricted=token,message=Messages.StrictReservedWord):Object.prototype.hasOwnProperty.call(paramSet,token.value)&&(firstRestricted=token,message=Messages.StrictParamDupe)),params.push(param),paramSet[param.name]=!0,!match(\")\"));)expect(\",\");return expect(\")\"),previousStrict=strict,body=parseFunctionSourceElements(),strict&&firstRestricted&&throwError(firstRestricted,message),strict&&stricted&&throwErrorTolerant(stricted,message),strict=previousStrict,{type:Syntax.FunctionExpression,id:id,params:params,defaults:[],body:body,rest:null,generator:!1,expression:!1}}function parseSourceElement(){var token=lookahead();if(token.type===Token.Keyword)switch(token.value){case\"const\":case\"let\":return parseConstLetDeclaration(token.value);case\"function\":return parseFunctionDeclaration();default:return parseStatement()}return token.type!==Token.EOF?parseStatement():void 0}function parseSourceElements(){for(var sourceElement,token,directive,firstRestricted,sourceElements=[];length>index&&(token=lookahead(),token.type===Token.StringLiteral)&&(sourceElement=parseSourceElement(),sourceElements.push(sourceElement),sourceElement.expression.type===Syntax.Literal);)directive=sliceSource(token.range[0]+1,token.range[1]-1),\"use strict\"===directive?(strict=!0,firstRestricted&&throwErrorTolerant(firstRestricted,Messages.StrictOctalLiteral)):!firstRestricted&&token.octal&&(firstRestricted=token);for(;length>index&&(sourceElement=parseSourceElement(),void 0!==sourceElement);)sourceElements.push(sourceElement);return sourceElements}function parseProgram(){var program;return strict=!1,program={type:Syntax.Program,body:parseSourceElements()}}function addComment(type,value,start,end,loc){assert(\"number\"==typeof start,\"Comment must have valid position\"),extra.comments.length>0&&extra.comments[extra.comments.length-1].range[1]>start||extra.comments.push({type:type,value:value,range:[start,end],loc:loc})}function scanComment(){var comment,ch,loc,start,blockComment,lineComment;for(comment=\"\",blockComment=!1,lineComment=!1;length>index;)if(ch=source[index],lineComment)ch=source[index++],isLineTerminator(ch)?(loc.end={line:lineNumber,column:index-lineStart-1},lineComment=!1,addComment(\"Line\",comment,start,index-1,loc),\"\\r\"===ch&&\"\\n\"===source[index]&&++index,++lineNumber,lineStart=index,comment=\"\"):index>=length?(lineComment=!1,comment+=ch,loc.end={line:lineNumber,column:length-lineStart},addComment(\"Line\",comment,start,length,loc)):comment+=ch;else if(blockComment)isLineTerminator(ch)?(\"\\r\"===ch&&\"\\n\"===source[index+1]?(++index,comment+=\"\\r\\n\"):comment+=ch,++lineNumber,++index,lineStart=index,index>=length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")):(ch=source[index++],index>=length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\"),comment+=ch,\"*\"===ch&&(ch=source[index],\"/\"===ch&&(comment=comment.substr(0,comment.length-1),blockComment=!1,++index,loc.end={line:lineNumber,column:index-lineStart},addComment(\"Block\",comment,start,index,loc),comment=\"\")));else if(\"/\"===ch)if(ch=source[index+1],\"/\"===ch)loc={start:{line:lineNumber,column:index-lineStart}},start=index,index+=2,lineComment=!0,index>=length&&(loc.end={line:lineNumber,column:index-lineStart},lineComment=!1,addComment(\"Line\",comment,start,index,loc));else{if(\"*\"!==ch)break;start=index,index+=2,blockComment=!0,loc={start:{line:lineNumber,column:index-lineStart-2}},index>=length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")}else if(isWhiteSpace(ch))++index;else{if(!isLineTerminator(ch))break;++index,\"\\r\"===ch&&\"\\n\"===source[index]&&++index,++lineNumber,lineStart=index}}function filterCommentLocation(){var i,entry,comment,comments=[];for(i=0;extra.comments.length>i;++i)entry=extra.comments[i],comment={type:entry.type,value:entry.value},extra.range&&(comment.range=entry.range),extra.loc&&(comment.loc=entry.loc),comments.push(comment);extra.comments=comments}function collectToken(){var start,loc,token,range,value;return skipComment(),start=index,loc={start:{line:lineNumber,column:index-lineStart}},token=extra.advance(),loc.end={line:lineNumber,column:index-lineStart},token.type!==Token.EOF&&(range=[token.range[0],token.range[1]],value=sliceSource(token.range[0],token.range[1]),extra.tokens.push({type:TokenName[token.type],value:value,range:range,loc:loc})),token}function collectRegex(){var pos,loc,regex,token;return skipComment(),pos=index,loc={start:{line:lineNumber,column:index-lineStart}},regex=extra.scanRegExp(),loc.end={line:lineNumber,column:index-lineStart},extra.tokens.length>0&&(token=extra.tokens[extra.tokens.length-1],token.range[0]===pos&&\"Punctuator\"===token.type&&(\"/\"===token.value||\"/=\"===token.value)&&extra.tokens.pop()),extra.tokens.push({type:\"RegularExpression\",value:regex.literal,range:[pos,index],loc:loc}),regex}function filterTokenLocation(){var i,entry,token,tokens=[];for(i=0;extra.tokens.length>i;++i)entry=extra.tokens[i],token={type:entry.type,value:entry.value},extra.range&&(token.range=entry.range),extra.loc&&(token.loc=entry.loc),tokens.push(token);extra.tokens=tokens}function createLiteral(token){return{type:Syntax.Literal,value:token.value}}function createRawLiteral(token){return{type:Syntax.Literal,value:token.value,raw:sliceSource(token.range[0],token.range[1])}}function createLocationMarker(){var marker={};return marker.range=[index,index],marker.loc={start:{line:lineNumber,column:index-lineStart},end:{line:lineNumber,column:index-lineStart}},marker.end=function(){this.range[1]=index,this.loc.end.line=lineNumber,this.loc.end.column=index-lineStart},marker.applyGroup=function(node){extra.range&&(node.groupRange=[this.range[0],this.range[1]]),extra.loc&&(node.groupLoc={start:{line:this.loc.start.line,column:this.loc.start.column},end:{line:this.loc.end.line,column:this.loc.end.column}})},marker.apply=function(node){extra.range&&(node.range=[this.range[0],this.range[1]]),extra.loc&&(node.loc={start:{line:this.loc.start.line,column:this.loc.start.column},end:{line:this.loc.end.line,column:this.loc.end.column}})},marker}function trackGroupExpression(){var marker,expr;return skipComment(),marker=createLocationMarker(),expect(\"(\"),expr=parseExpression(),expect(\")\"),marker.end(),marker.applyGroup(expr),expr}function trackLeftHandSideExpression(){var marker,expr;for(skipComment(),marker=createLocationMarker(),expr=matchKeyword(\"new\")?parseNewExpression():parsePrimaryExpression();match(\".\")||match(\"[\");)match(\"[\")?(expr={type:Syntax.MemberExpression,computed:!0,object:expr,property:parseComputedMember()},marker.end(),marker.apply(expr)):(expr={type:Syntax.MemberExpression,computed:!1,object:expr,property:parseNonComputedMember()},marker.end(),marker.apply(expr));return expr}function trackLeftHandSideExpressionAllowCall(){var marker,expr;for(skipComment(),marker=createLocationMarker(),expr=matchKeyword(\"new\")?parseNewExpression():parsePrimaryExpression();match(\".\")||match(\"[\")||match(\"(\");)match(\"(\")?(expr={type:Syntax.CallExpression,callee:expr,arguments:parseArguments()},marker.end(),marker.apply(expr)):match(\"[\")?(expr={type:Syntax.MemberExpression,computed:!0,object:expr,property:parseComputedMember()},marker.end(),marker.apply(expr)):(expr={type:Syntax.MemberExpression,computed:!1,object:expr,property:parseNonComputedMember()},marker.end(),marker.apply(expr));return expr}function filterGroup(node){var n,i,entry;n=\"[object Array]\"===Object.prototype.toString.apply(node)?[]:{};for(i in node)node.hasOwnProperty(i)&&\"groupRange\"!==i&&\"groupLoc\"!==i&&(entry=node[i],n[i]=null===entry||\"object\"!=typeof entry||entry instanceof RegExp?entry:filterGroup(entry));return n}function wrapTrackingFunction(range,loc){return function(parseFunction){function isBinary(node){return node.type===Syntax.LogicalExpression||node.type===Syntax.BinaryExpression}function visit(node){var start,end;isBinary(node.left)&&visit(node.left),isBinary(node.right)&&visit(node.right),range&&(node.left.groupRange||node.right.groupRange?(start=node.left.groupRange?node.left.groupRange[0]:node.left.range[0],end=node.right.groupRange?node.right.groupRange[1]:node.right.range[1],node.range=[start,end]):node.range===void 0&&(start=node.left.range[0],end=node.right.range[1],node.range=[start,end])),loc&&(node.left.groupLoc||node.right.groupLoc?(start=node.left.groupLoc?node.left.groupLoc.start:node.left.loc.start,end=node.right.groupLoc?node.right.groupLoc.end:node.right.loc.end,node.loc={start:start,end:end}):node.loc===void 0&&(node.loc={start:node.left.loc.start,end:node.right.loc.end}))}return function(){var marker,node;return skipComment(),marker=createLocationMarker(),node=parseFunction.apply(null,arguments),marker.end(),range&&node.range===void 0&&marker.apply(node),loc&&node.loc===void 0&&marker.apply(node),isBinary(node)&&visit(node),node}}}function patch(){var wrapTracking;extra.comments&&(extra.skipComment=skipComment,skipComment=scanComment),extra.raw&&(extra.createLiteral=createLiteral,createLiteral=createRawLiteral),(extra.range||extra.loc)&&(extra.parseGroupExpression=parseGroupExpression,extra.parseLeftHandSideExpression=parseLeftHandSideExpression,extra.parseLeftHandSideExpressionAllowCall=parseLeftHandSideExpressionAllowCall,parseGroupExpression=trackGroupExpression,parseLeftHandSideExpression=trackLeftHandSideExpression,parseLeftHandSideExpressionAllowCall=trackLeftHandSideExpressionAllowCall,wrapTracking=wrapTrackingFunction(extra.range,extra.loc),extra.parseAdditiveExpression=parseAdditiveExpression,extra.parseAssignmentExpression=parseAssignmentExpression,extra.parseBitwiseANDExpression=parseBitwiseANDExpression,extra.parseBitwiseORExpression=parseBitwiseORExpression,extra.parseBitwiseXORExpression=parseBitwiseXORExpression,extra.parseBlock=parseBlock,extra.parseFunctionSourceElements=parseFunctionSourceElements,extra.parseCatchClause=parseCatchClause,extra.parseComputedMember=parseComputedMember,extra.parseConditionalExpression=parseConditionalExpression,extra.parseConstLetDeclaration=parseConstLetDeclaration,extra.parseEqualityExpression=parseEqualityExpression,extra.parseExpression=parseExpression,extra.parseForVariableDeclaration=parseForVariableDeclaration,extra.parseFunctionDeclaration=parseFunctionDeclaration,extra.parseFunctionExpression=parseFunctionExpression,extra.parseLogicalANDExpression=parseLogicalANDExpression,extra.parseLogicalORExpression=parseLogicalORExpression,extra.parseMultiplicativeExpression=parseMultiplicativeExpression,extra.parseNewExpression=parseNewExpression,extra.parseNonComputedProperty=parseNonComputedProperty,extra.parseObjectProperty=parseObjectProperty,extra.parseObjectPropertyKey=parseObjectPropertyKey,extra.parsePostfixExpression=parsePostfixExpression,extra.parsePrimaryExpression=parsePrimaryExpression,extra.parseProgram=parseProgram,extra.parsePropertyFunction=parsePropertyFunction,extra.parseRelationalExpression=parseRelationalExpression,extra.parseStatement=parseStatement,extra.parseShiftExpression=parseShiftExpression,extra.parseSwitchCase=parseSwitchCase,extra.parseUnaryExpression=parseUnaryExpression,extra.parseVariableDeclaration=parseVariableDeclaration,extra.parseVariableIdentifier=parseVariableIdentifier,parseAdditiveExpression=wrapTracking(extra.parseAdditiveExpression),parseAssignmentExpression=wrapTracking(extra.parseAssignmentExpression),parseBitwiseANDExpression=wrapTracking(extra.parseBitwiseANDExpression),parseBitwiseORExpression=wrapTracking(extra.parseBitwiseORExpression),parseBitwiseXORExpression=wrapTracking(extra.parseBitwiseXORExpression),parseBlock=wrapTracking(extra.parseBlock),parseFunctionSourceElements=wrapTracking(extra.parseFunctionSourceElements),parseCatchClause=wrapTracking(extra.parseCatchClause),parseComputedMember=wrapTracking(extra.parseComputedMember),parseConditionalExpression=wrapTracking(extra.parseConditionalExpression),parseConstLetDeclaration=wrapTracking(extra.parseConstLetDeclaration),parseEqualityExpression=wrapTracking(extra.parseEqualityExpression),parseExpression=wrapTracking(extra.parseExpression),parseForVariableDeclaration=wrapTracking(extra.parseForVariableDeclaration),parseFunctionDeclaration=wrapTracking(extra.parseFunctionDeclaration),parseFunctionExpression=wrapTracking(extra.parseFunctionExpression),parseLeftHandSideExpression=wrapTracking(parseLeftHandSideExpression),parseLogicalANDExpression=wrapTracking(extra.parseLogicalANDExpression),parseLogicalORExpression=wrapTracking(extra.parseLogicalORExpression),parseMultiplicativeExpression=wrapTracking(extra.parseMultiplicativeExpression),parseNewExpression=wrapTracking(extra.parseNewExpression),parseNonComputedProperty=wrapTracking(extra.parseNonComputedProperty),parseObjectProperty=wrapTracking(extra.parseObjectProperty),parseObjectPropertyKey=wrapTracking(extra.parseObjectPropertyKey),parsePostfixExpression=wrapTracking(extra.parsePostfixExpression),parsePrimaryExpression=wrapTracking(extra.parsePrimaryExpression),parseProgram=wrapTracking(extra.parseProgram),parsePropertyFunction=wrapTracking(extra.parsePropertyFunction),parseRelationalExpression=wrapTracking(extra.parseRelationalExpression),parseStatement=wrapTracking(extra.parseStatement),parseShiftExpression=wrapTracking(extra.parseShiftExpression),parseSwitchCase=wrapTracking(extra.parseSwitchCase),parseUnaryExpression=wrapTracking(extra.parseUnaryExpression),parseVariableDeclaration=wrapTracking(extra.parseVariableDeclaration),parseVariableIdentifier=wrapTracking(extra.parseVariableIdentifier)),extra.tokens!==void 0&&(extra.advance=advance,extra.scanRegExp=scanRegExp,advance=collectToken,scanRegExp=collectRegex)}function unpatch(){\"function\"==typeof extra.skipComment&&(skipComment=extra.skipComment),extra.raw&&(createLiteral=extra.createLiteral),(extra.range||extra.loc)&&(parseAdditiveExpression=extra.parseAdditiveExpression,parseAssignmentExpression=extra.parseAssignmentExpression,parseBitwiseANDExpression=extra.parseBitwiseANDExpression,parseBitwiseORExpression=extra.parseBitwiseORExpression,parseBitwiseXORExpression=extra.parseBitwiseXORExpression,parseBlock=extra.parseBlock,parseFunctionSourceElements=extra.parseFunctionSourceElements,parseCatchClause=extra.parseCatchClause,parseComputedMember=extra.parseComputedMember,parseConditionalExpression=extra.parseConditionalExpression,parseConstLetDeclaration=extra.parseConstLetDeclaration,parseEqualityExpression=extra.parseEqualityExpression,parseExpression=extra.parseExpression,parseForVariableDeclaration=extra.parseForVariableDeclaration,parseFunctionDeclaration=extra.parseFunctionDeclaration,parseFunctionExpression=extra.parseFunctionExpression,parseGroupExpression=extra.parseGroupExpression,parseLeftHandSideExpression=extra.parseLeftHandSideExpression,parseLeftHandSideExpressionAllowCall=extra.parseLeftHandSideExpressionAllowCall,parseLogicalANDExpression=extra.parseLogicalANDExpression,parseLogicalORExpression=extra.parseLogicalORExpression,parseMultiplicativeExpression=extra.parseMultiplicativeExpression,parseNewExpression=extra.parseNewExpression,parseNonComputedProperty=extra.parseNonComputedProperty,parseObjectProperty=extra.parseObjectProperty,parseObjectPropertyKey=extra.parseObjectPropertyKey,parsePrimaryExpression=extra.parsePrimaryExpression,parsePostfixExpression=extra.parsePostfixExpression,parseProgram=extra.parseProgram,parsePropertyFunction=extra.parsePropertyFunction,parseRelationalExpression=extra.parseRelationalExpression,parseStatement=extra.parseStatement,parseShiftExpression=extra.parseShiftExpression,parseSwitchCase=extra.parseSwitchCase,parseUnaryExpression=extra.parseUnaryExpression,parseVariableDeclaration=extra.parseVariableDeclaration,parseVariableIdentifier=extra.parseVariableIdentifier),\"function\"==typeof extra.scanRegExp&&(advance=extra.advance,scanRegExp=extra.scanRegExp)}function stringToArray(str){var i,length=str.length,result=[];for(i=0;length>i;++i)result[i]=str.charAt(i);return result}function parse(code,options){var program,toString;\ntoString=String,\"string\"==typeof code||code instanceof String||(code=toString(code)),source=code,index=0,lineNumber=source.length>0?1:0,lineStart=0,length=source.length,buffer=null,state={allowIn:!0,labelSet:{},inFunctionBody:!1,inIteration:!1,inSwitch:!1},extra={},options!==void 0&&(extra.range=\"boolean\"==typeof options.range&&options.range,extra.loc=\"boolean\"==typeof options.loc&&options.loc,extra.raw=\"boolean\"==typeof options.raw&&options.raw,\"boolean\"==typeof options.tokens&&options.tokens&&(extra.tokens=[]),\"boolean\"==typeof options.comment&&options.comment&&(extra.comments=[]),\"boolean\"==typeof options.tolerant&&options.tolerant&&(extra.errors=[])),length>0&&source[0]===void 0&&(code instanceof String&&(source=code.valueOf()),source[0]===void 0&&(source=stringToArray(code))),patch();try{program=parseProgram(),extra.comments!==void 0&&(filterCommentLocation(),program.comments=extra.comments),extra.tokens!==void 0&&(filterTokenLocation(),program.tokens=extra.tokens),extra.errors!==void 0&&(program.errors=extra.errors),(extra.range||extra.loc)&&(program.body=filterGroup(program.body))}catch(e){throw e}finally{unpatch(),extra={}}return program}var Token,TokenName,Syntax,PropertyKind,Messages,Regex,source,strict,index,lineNumber,lineStart,length,buffer,state,extra;Token={BooleanLiteral:1,EOF:2,Identifier:3,Keyword:4,NullLiteral:5,NumericLiteral:6,Punctuator:7,StringLiteral:8},TokenName={},TokenName[Token.BooleanLiteral]=\"Boolean\",TokenName[Token.EOF]=\"\u003Cend>\",TokenName[Token.Identifier]=\"Identifier\",TokenName[Token.Keyword]=\"Keyword\",TokenName[Token.NullLiteral]=\"Null\",TokenName[Token.NumericLiteral]=\"Numeric\",TokenName[Token.Punctuator]=\"Punctuator\",TokenName[Token.StringLiteral]=\"String\",Syntax={AssignmentExpression:\"AssignmentExpression\",ArrayExpression:\"ArrayExpression\",BlockStatement:\"BlockStatement\",BinaryExpression:\"BinaryExpression\",BreakStatement:\"BreakStatement\",CallExpression:\"CallExpression\",CatchClause:\"CatchClause\",ConditionalExpression:\"ConditionalExpression\",ContinueStatement:\"ContinueStatement\",DoWhileStatement:\"DoWhileStatement\",DebuggerStatement:\"DebuggerStatement\",EmptyStatement:\"EmptyStatement\",ExpressionStatement:\"ExpressionStatement\",ForStatement:\"ForStatement\",ForInStatement:\"ForInStatement\",FunctionDeclaration:\"FunctionDeclaration\",FunctionExpression:\"FunctionExpression\",Identifier:\"Identifier\",IfStatement:\"IfStatement\",Literal:\"Literal\",LabeledStatement:\"LabeledStatement\",LogicalExpression:\"LogicalExpression\",MemberExpression:\"MemberExpression\",NewExpression:\"NewExpression\",ObjectExpression:\"ObjectExpression\",Program:\"Program\",Property:\"Property\",ReturnStatement:\"ReturnStatement\",SequenceExpression:\"SequenceExpression\",SwitchStatement:\"SwitchStatement\",SwitchCase:\"SwitchCase\",ThisExpression:\"ThisExpression\",ThrowStatement:\"ThrowStatement\",TryStatement:\"TryStatement\",UnaryExpression:\"UnaryExpression\",UpdateExpression:\"UpdateExpression\",VariableDeclaration:\"VariableDeclaration\",VariableDeclarator:\"VariableDeclarator\",WhileStatement:\"WhileStatement\",WithStatement:\"WithStatement\"},PropertyKind={Data:1,Get:2,Set:4},Messages={UnexpectedToken:\"Unexpected token %0\",UnexpectedNumber:\"Unexpected number\",UnexpectedString:\"Unexpected string\",UnexpectedIdentifier:\"Unexpected identifier\",UnexpectedReserved:\"Unexpected reserved word\",UnexpectedEOS:\"Unexpected end of input\",NewlineAfterThrow:\"Illegal newline after throw\",InvalidRegExp:\"Invalid regular expression\",UnterminatedRegExp:\"Invalid regular expression: missing /\",InvalidLHSInAssignment:\"Invalid left-hand side in assignment\",InvalidLHSInForIn:\"Invalid left-hand side in for-in\",MultipleDefaultsInSwitch:\"More than one default clause in switch statement\",NoCatchOrFinally:\"Missing catch or finally after try\",UnknownLabel:\"Undefined label '%0'\",Redeclaration:\"%0 '%1' has already been declared\",IllegalContinue:\"Illegal continue statement\",IllegalBreak:\"Illegal break statement\",IllegalReturn:\"Illegal return statement\",StrictModeWith:\"Strict mode code may not include a with statement\",StrictCatchVariable:\"Catch variable may not be eval or arguments in strict mode\",StrictVarName:\"Variable name may not be eval or arguments in strict mode\",StrictParamName:\"Parameter name eval or arguments is not allowed in strict mode\",StrictParamDupe:\"Strict mode function may not have duplicate parameter names\",StrictFunctionName:\"Function name may not be eval or arguments in strict mode\",StrictOctalLiteral:\"Octal literals are not allowed in strict mode.\",StrictDelete:\"Delete of an unqualified identifier in strict mode.\",StrictDuplicateProperty:\"Duplicate data property in object literal not allowed in strict mode\",AccessorDataProperty:\"Object literal may not have data and accessor property with the same name\",AccessorGetSet:\"Object literal may not have multiple get/set accessors with the same name\",StrictLHSAssignment:\"Assignment to eval or arguments is not allowed in strict mode\",StrictLHSPostfix:\"Postfix increment/decrement may not have eval or arguments operand in strict mode\",StrictLHSPrefix:\"Prefix increment/decrement may not have eval or arguments operand in strict mode\",StrictReservedWord:\"Use of future reserved word in strict mode\"},Regex={NonAsciiIdentifierStart:RegExp(\"[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]\"),NonAsciiIdentifierPart:RegExp(\"[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԧԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠࢢ-ࢬࣤ-ࣾऀ-ॣ०-९ॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶᴀ-ᷦ᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚗꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺꩻꪀ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︦︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]\")},\"esprima\"[0]===void 0&&(sliceSource=function(from,to){return source.slice(from,to).join(\"\")}),exports.version=\"1.0.2\",exports.parse=parse,exports.Syntax=function(){var name,types={};\"function\"==typeof Object.create&&(types=Object.create(null));for(name in Syntax)Syntax.hasOwnProperty(name)&&(types[name]=Syntax[name]);return\"function\"==typeof Object.freeze&&Object.freeze(types),types}()})})()},{}],63:[function(require,module){function isFunction(obj){return\"[object Function]\"==toString.call(obj)}var fs=require(\"fs\"),highlight=require(\"./highlight\");module.exports=function(fullPath,opts,cb){isFunction(opts)&&(cb=opts),fs.readFile(fullPath,\"utf-8\",function(err,code){if(err)return cb(err);try{cb(null,highlight(code,opts))}catch(e){cb(e)}})}},{fs:74,\"./highlight\":62}],64:[function(require,module){var fs=require(\"fs\"),highlight=require(\"./highlight\");module.exports=function(fullPath,opts){var code=fs.readFileSync(fullPath,\"utf-8\");return highlight(code,opts)}},{fs:74,\"./highlight\":62}],29:[function(require,module){\"use strict\";function fix(line,hideStrict){var fixed=line;if(commaFirstAssignment.test(line)){var idx=line.indexOf(\",\");fixed=\"var\"+fixed.slice(0,idx).trim()+\" \"+fixed.slice(idx+1).trim()}return hideStrict&&useStrict.test(line)&&(fixed=nonStrict+line),fixed}function unfix(code,hideStrict){return hideStrict&&(code=code.replace(nonStrict,\"\")),code}var parse=require(\"esprima\").parse,commaFirstAssignment=/^[\\t ]*,[\\t ]*\\S+[\\t ]*=[\\t ]*\\S+/,useStrict=/^ *['\"]use strict['\"][; ]*$/,nonStrict=\"// *** non strict snippetify fix +++***+++&&&\",snippetify=module.exports=function(script,opts){function nextChunk(code,raw){var line=(0===code.length,lines[lineno]),fixed=fix(line,opts.nonstrict);raw=line+raw,code=fixed+code;try{var ast=parse(code,opts);return code=unfix(code,opts.nonstrict),{code:code,raw:raw,ast:ast}}catch(e){if(-1===--lineno){var err=Error(\"unable to snippetify \"+code);throw err.inner=e,err}return nextChunk(\"\\n\"+code,\"\\n\"+raw)}}opts=opts||{};var snippets=[],lines=script.split(\"\\n\");if(!lines.length)return[];for(var lineno=lines.length;--lineno>-1;){var snippetEnd=lineno+1,snippet=nextChunk(\"\",\"\"),snippetStart=lineno+1;snippets.unshift({start:snippetStart,end:snippetEnd,code:snippet.code,raw:snippet.raw,ast:snippet.ast})}return snippets},code=\"function foo() {\\n\\\"use strict\\\";\\n var o = { a: 1, a: 2 };\\n}\\n\\n;function bar() {\\n'use strict';\\n var o = { a: 1, a: 2 };\\n}\";snippetify(code,{nonstrict:!0})},{esprima:70}],75:[function(require,module,exports){exports.readIEEE754=function(buffer,offset,isBE,mLen,nBytes){var e,m,eLen=8*nBytes-mLen-1,eMax=(1\u003C\u003CeLen)-1,eBias=eMax>>1,nBits=-7,i=isBE?0:nBytes-1,d=isBE?1:-1,s=buffer[offset+i];for(i+=d,e=s&(1\u003C\u003C-nBits)-1,s>>=-nBits,nBits+=eLen;nBits>0;e=256*e+buffer[offset+i],i+=d,nBits-=8);for(m=e&(1\u003C\u003C-nBits)-1,e>>=-nBits,nBits+=mLen;nBits>0;m=256*m+buffer[offset+i],i+=d,nBits-=8);if(0===e)e=1-eBias;else{if(e===eMax)return m?0/0:1/0*(s?-1:1);m+=Math.pow(2,mLen),e-=eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)},exports.writeIEEE754=function(buffer,value,offset,isBE,mLen,nBytes){var e,m,c,eLen=8*nBytes-mLen-1,eMax=(1\u003C\u003CeLen)-1,eBias=eMax>>1,rt=23===mLen?Math.pow(2,-24)-Math.pow(2,-77):0,i=isBE?nBytes-1:0,d=isBE?-1:1,s=0>value||0===value&&0>1/value?1:0;for(value=Math.abs(value),isNaN(value)||1/0===value?(m=isNaN(value)?1:0,e=eMax):(e=Math.floor(Math.log(value)/Math.LN2),1>value*(c=Math.pow(2,-e))&&(e--,c*=2),value+=e+eBias>=1?rt/c:rt*Math.pow(2,1-eBias),value*c>=2&&(e++,c/=2),e+eBias>=eMax?(m=0,e=eMax):e+eBias>=1?(m=(value*c-1)*Math.pow(2,mLen),e+=eBias):(m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen),e=0));mLen>=8;buffer[offset+i]=255&m,i+=d,m/=256,mLen-=8);for(e=e\u003C\u003CmLen|m,eLen+=mLen;eLen>0;buffer[offset+i]=255&e,i+=d,e/=256,eLen-=8);buffer[offset+i-d]|=128*s}},{}],76:[function(require,module){var colorNums={white:37,black:30,blue:34,cyan:36,green:32,magenta:35,red:31,yellow:33,brightBlack:90,brightRed:91,brightGreen:92,brightYellow:93,brightBlue:94,brightMagenta:95,brightCyan:96,brightWhite:97},colors={};Object.keys(colorNums).forEach(function(k){colors[k]=\"\u001b[\"+colorNums[k]+\"m:\u001b[39m\"}),module.exports=colors},{}],77:[function(require,module){require=function(e,t,n,r){function i(r){if(!n[r]){if(!t[r]){if(e)return e(r);throw Error(\"Cannot find module '\"+r+\"'\")}var s=n[r]={exports:{}};t[r][0](function(e){var n=t[r][1][e];return i(n?n:e)},s,s.exports)}return n[r].exports}for(var s=0;r.length>s;s++)i(r[s]);return i}(require!==void 0&&require,{1:[function(require,module,exports){exports.readIEEE754=function(buffer,offset,isBE,mLen,nBytes){var e,m,eLen=8*nBytes-mLen-1,eMax=(1\u003C\u003CeLen)-1,eBias=eMax>>1,nBits=-7,i=isBE?0:nBytes-1,d=isBE?1:-1,s=buffer[offset+i];for(i+=d,e=s&(1\u003C\u003C-nBits)-1,s>>=-nBits,nBits+=eLen;nBits>0;e=256*e+buffer[offset+i],i+=d,nBits-=8);for(m=e&(1\u003C\u003C-nBits)-1,e>>=-nBits,nBits+=mLen;nBits>0;m=256*m+buffer[offset+i],i+=d,nBits-=8);if(0===e)e=1-eBias;else{if(e===eMax)return m?0/0:1/0*(s?-1:1);m+=Math.pow(2,mLen),e-=eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)},exports.writeIEEE754=function(buffer,value,offset,isBE,mLen,nBytes){var e,m,c,eLen=8*nBytes-mLen-1,eMax=(1\u003C\u003CeLen)-1,eBias=eMax>>1,rt=23===mLen?Math.pow(2,-24)-Math.pow(2,-77):0,i=isBE?nBytes-1:0,d=isBE?-1:1,s=0>value||0===value&&0>1/value?1:0;for(value=Math.abs(value),isNaN(value)||1/0===value?(m=isNaN(value)?1:0,e=eMax):(e=Math.floor(Math.log(value)/Math.LN2),1>value*(c=Math.pow(2,-e))&&(e--,c*=2),value+=e+eBias>=1?rt/c:rt*Math.pow(2,1-eBias),value*c>=2&&(e++,c/=2),e+eBias>=eMax?(m=0,e=eMax):e+eBias>=1?(m=(value*c-1)*Math.pow(2,mLen),e+=eBias):(m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen),e=0));mLen>=8;buffer[offset+i]=255&m,i+=d,m/=256,mLen-=8);for(e=e\u003C\u003CmLen|m,eLen+=mLen;eLen>0;buffer[offset+i]=255&e,i+=d,e/=256,eLen-=8);buffer[offset+i-d]|=128*s}},{}],2:[function(require,module){(function(){function objectKeys(object){if(Object.keys)return Object.keys(object);var result=[];for(var name in object)Object.prototype.hasOwnProperty.call(object,name)&&result.push(name);return result}function replacer(key,value){return void 0===value?\"\"+value:\"number\"!=typeof value||!isNaN(value)&&isFinite(value)?\"function\"==typeof value||value instanceof RegExp?\"\"+value:value:\"\"+value}function truncate(s,n){return\"string\"==typeof s?n>s.length?s:s.slice(0,n):s}function fail(actual,expected,message,operator,stackStartFunction){throw new assert.AssertionError({message:message,actual:actual,expected:expected,operator:operator,stackStartFunction:stackStartFunction})}function ok(value,message){value||fail(value,!0,message,\"==\",assert.ok)}function _deepEqual(actual,expected){if(actual===expected)return!0;if(Buffer.isBuffer(actual)&&Buffer.isBuffer(expected)){if(actual.length!=expected.length)return!1;for(var i=0;actual.length>i;i++)if(actual[i]!==expected[i])return!1;return!0}return actual instanceof Date&&expected instanceof Date?actual.getTime()===expected.getTime():\"object\"!=typeof actual&&\"object\"!=typeof expected?actual==expected:objEquiv(actual,expected)}function isUndefinedOrNull(value){return null===value||void 0===value}function isArguments(object){return\"[object Arguments]\"==Object.prototype.toString.call(object)}function objEquiv(a,b){if(isUndefinedOrNull(a)||isUndefinedOrNull(b))return!1;if(a.prototype!==b.prototype)return!1;if(isArguments(a))return isArguments(b)?(a=pSlice.call(a),b=pSlice.call(b),_deepEqual(a,b)):!1;try{var key,i,ka=objectKeys(a),kb=objectKeys(b)}catch(e){return!1}if(ka.length!=kb.length)return!1;for(ka.sort(),kb.sort(),i=ka.length-1;i>=0;i--)if(ka[i]!=kb[i])return!1;for(i=ka.length-1;i>=0;i--)if(key=ka[i],!_deepEqual(a[key],b[key]))return!1;return!0}function expectedException(actual,expected){return actual&&expected?expected instanceof RegExp?expected.test(actual):actual instanceof expected?!0:expected.call({},actual)===!0?!0:!1:!1}function _throws(shouldThrow,block,expected,message){var actual;\"string\"==typeof expected&&(message=expected,expected=null);try{block()}catch(e){actual=e}if(message=(expected&&expected.name?\" (\"+expected.name+\").\":\".\")+(message?\" \"+message:\".\"),shouldThrow&&!actual&&fail(\"Missing expected exception\"+message),!shouldThrow&&expectedException(actual,expected)&&fail(\"Got unwanted exception\"+message),shouldThrow&&actual&&expected&&!expectedException(actual,expected)||!shouldThrow&&actual)throw actual}var util=require(\"util\"),Buffer=require(\"buffer\").Buffer,pSlice=Array.prototype.slice,assert=module.exports=ok;assert.AssertionError=function(options){this.name=\"AssertionError\",this.message=options.message,this.actual=options.actual,this.expected=options.expected,this.operator=options.operator;var stackStartFunction=options.stackStartFunction||fail;Error.captureStackTrace&&Error.captureStackTrace(this,stackStartFunction)},util.inherits(assert.AssertionError,Error),assert.AssertionError.prototype.toString=function(){return this.message?[this.name+\":\",this.message].join(\" \"):[this.name+\":\",truncate(JSON.stringify(this.actual,replacer),128),this.operator,truncate(JSON.stringify(this.expected,replacer),128)].join(\" \")},assert.AssertionError.__proto__=Error.prototype,assert.fail=fail,assert.ok=ok,assert.equal=function(actual,expected,message){actual!=expected&&fail(actual,expected,message,\"==\",assert.equal)},assert.notEqual=function(actual,expected,message){actual==expected&&fail(actual,expected,message,\"!=\",assert.notEqual)},assert.deepEqual=function(actual,expected,message){_deepEqual(actual,expected)||fail(actual,expected,message,\"deepEqual\",assert.deepEqual)},assert.notDeepEqual=function(actual,expected,message){_deepEqual(actual,expected)&&fail(actual,expected,message,\"notDeepEqual\",assert.notDeepEqual)},assert.strictEqual=function(actual,expected,message){actual!==expected&&fail(actual,expected,message,\"===\",assert.strictEqual)},assert.notStrictEqual=function(actual,expected,message){actual===expected&&fail(actual,expected,message,\"!==\",assert.notStrictEqual)},assert.throws=function(){_throws.apply(this,[!0].concat(pSlice.call(arguments)))},assert.doesNotThrow=function(){_throws.apply(this,[!1].concat(pSlice.call(arguments)))},assert.ifError=function(err){if(err)throw err}})()},{util:3,buffer:4}],\"buffer-browserify\":[function(require,module){module.exports=require(\"q9TxCC\")},{}],q9TxCC:[function(require,module,exports){(function(){function SlowBuffer(size){this.length=size}function toHex(n){return 16>n?\"0\"+n.toString(16):n.toString(16)}function utf8ToBytes(str){for(var byteArray=[],i=0;str.length>i;i++)if(127>=str.charCodeAt(i))byteArray.push(str.charCodeAt(i));else for(var h=encodeURIComponent(str.charAt(i)).substr(1).split(\"%\"),j=0;h.length>j;j++)byteArray.push(parseInt(h[j],16));return byteArray}function asciiToBytes(str){for(var byteArray=[],i=0;str.length>i;i++)byteArray.push(255&str.charCodeAt(i));return byteArray}function base64ToBytes(str){return require(\"base64-js\").toByteArray(str)}function blitBuffer(src,dst,offset,length){for(var i=0;length>i&&!(i+offset>=dst.length||i>=src.length);)dst[i+offset]=src[i],i++;return i}function decodeUtf8Char(str){try{return decodeURIComponent(str)}catch(err){return String.fromCharCode(65533)}}function coerce(length){return length=~~Math.ceil(+length),0>length?0:length}function Buffer(subject,encoding,offset){if(!(this instanceof Buffer))return new Buffer(subject,encoding,offset);var type;if(\"number\"==typeof offset)this.length=coerce(encoding),this.parent=subject,this.offset=offset;else{switch(type=typeof subject){case\"number\":this.length=coerce(subject);break;case\"string\":this.length=Buffer.byteLength(subject,encoding);break;case\"object\":this.length=coerce(subject.length);break;default:throw Error(\"First argument needs to be a number, array or string.\")}if(this.length>Buffer.poolSize?(this.parent=new SlowBuffer(this.length),this.offset=0):((!pool||pool.length-pool.used\u003Cthis.length)&&allocPool(),this.parent=pool,this.offset=pool.used,pool.used+=this.length),isArrayIsh(subject))for(var i=0;this.length>i;i++)this.parent[i+this.offset]=subject instanceof Buffer?subject.readUInt8(i):subject[i];else\"string\"==type&&(this.length=this.write(subject,0,encoding))}}function isArrayIsh(subject){return Array.isArray(subject)||Buffer.isBuffer(subject)||subject&&\"object\"==typeof subject&&\"number\"==typeof subject.length}function allocPool(){pool=new SlowBuffer(Buffer.poolSize),pool.used=0}function readUInt16(buffer,offset,isBigEndian,noAssert){var val=0;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to read beyond buffer length\")),offset>=buffer.length?0:(isBigEndian?(val=buffer.parent[buffer.offset+offset]\u003C\u003C8,buffer.length>offset+1&&(val|=buffer.parent[buffer.offset+offset+1])):(val=buffer.parent[buffer.offset+offset],buffer.length>offset+1&&(val|=buffer.parent[buffer.offset+offset+1]\u003C\u003C8)),val)}function readUInt32(buffer,offset,isBigEndian,noAssert){var val=0;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),offset>=buffer.length?0:(isBigEndian?(buffer.length>offset+1&&(val=buffer.parent[buffer.offset+offset+1]\u003C\u003C16),buffer.length>offset+2&&(val|=buffer.parent[buffer.offset+offset+2]\u003C\u003C8),buffer.length>offset+3&&(val|=buffer.parent[buffer.offset+offset+3]),val+=buffer.parent[buffer.offset+offset]\u003C\u003C24>>>0):(buffer.length>offset+2&&(val=buffer.parent[buffer.offset+offset+2]\u003C\u003C16),buffer.length>offset+1&&(val|=buffer.parent[buffer.offset+offset+1]\u003C\u003C8),val|=buffer.parent[buffer.offset+offset],buffer.length>offset+3&&(val+=buffer.parent[buffer.offset+offset+3]\u003C\u003C24>>>0)),val)}function readInt16(buffer,offset,isBigEndian,noAssert){var neg,val;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to read beyond buffer length\")),val=readUInt16(buffer,offset,isBigEndian,noAssert),neg=32768&val,neg?-1*(65535-val+1):val}function readInt32(buffer,offset,isBigEndian,noAssert){var neg,val;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),val=readUInt32(buffer,offset,isBigEndian,noAssert),neg=2147483648&val,neg?-1*(4294967295-val+1):val}function readFloat(buffer,offset,isBigEndian,noAssert){return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),require(\"./buffer_ieee754\").readIEEE754(buffer,offset,isBigEndian,23,4)}function readDouble(buffer,offset,isBigEndian,noAssert){return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(buffer.length>offset+7,\"Trying to read beyond buffer length\")),require(\"./buffer_ieee754\").readIEEE754(buffer,offset,isBigEndian,52,8)}function verifuint(value,max){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(value>=0,\"specified a negative value for writing an unsigned value\"),assert.ok(max>=value,\"value is larger than maximum value for type\"),assert.ok(Math.floor(value)===value,\"value has a fractional component\")}function writeUInt16(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"trying to write beyond buffer length\"),verifuint(value,65535));for(var i=0;Math.min(buffer.length-offset,2)>i;i++)buffer.parent[buffer.offset+offset+i]=(value&255\u003C\u003C8*(isBigEndian?1-i:i))>>>8*(isBigEndian?1-i:i)}function writeUInt32(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"trying to write beyond buffer length\"),verifuint(value,4294967295));for(var i=0;Math.min(buffer.length-offset,4)>i;i++)buffer.parent[buffer.offset+offset+i]=255&value>>>8*(isBigEndian?3-i:i)}function verifsint(value,max,min){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(max>=value,\"value larger than maximum allowed value\"),assert.ok(value>=min,\"value smaller than minimum allowed value\"),assert.ok(Math.floor(value)===value,\"value has a fractional component\")}function verifIEEE754(value,max,min){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(max>=value,\"value larger than maximum allowed value\"),assert.ok(value>=min,\"value smaller than minimum allowed value\")}function writeInt16(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to write beyond buffer length\"),verifsint(value,32767,-32768)),value>=0?writeUInt16(buffer,value,offset,isBigEndian,noAssert):writeUInt16(buffer,65535+value+1,offset,isBigEndian,noAssert)}function writeInt32(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to write beyond buffer length\"),verifsint(value,2147483647,-2147483648)),value>=0?writeUInt32(buffer,value,offset,isBigEndian,noAssert):writeUInt32(buffer,4294967295+value+1,offset,isBigEndian,noAssert)}function writeFloat(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to write beyond buffer length\"),verifIEEE754(value,3.4028234663852886e38,-3.4028234663852886e38)),require(\"./buffer_ieee754\").writeIEEE754(buffer,value,offset,isBigEndian,23,4)}function writeDouble(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+7,\"Trying to write beyond buffer length\"),verifIEEE754(value,1.7976931348623157e308,-1.7976931348623157e308)),require(\"./buffer_ieee754\").writeIEEE754(buffer,value,offset,isBigEndian,52,8)}var assert=require(\"assert\");exports.INSPECT_MAX_BYTES=50,SlowBuffer.byteLength=function(str,encoding){switch(encoding||\"utf8\"){case\"hex\":return str.length/2;case\"utf8\":case\"utf-8\":return utf8ToBytes(str).length;case\"ascii\":case\"binary\":return str.length;case\"base64\":return base64ToBytes(str).length;default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.utf8Write=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(utf8ToBytes(string),this,offset,length)},SlowBuffer.prototype.asciiWrite=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(asciiToBytes(string),this,offset,length)},SlowBuffer.prototype.binaryWrite=SlowBuffer.prototype.asciiWrite,SlowBuffer.prototype.base64Write=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(base64ToBytes(string),this,offset,length)},SlowBuffer.prototype.base64Slice=function(){var bytes=Array.prototype.slice.apply(this,arguments);return require(\"base64-js\").fromByteArray(bytes)},SlowBuffer.prototype.utf8Slice=function(){for(var bytes=Array.prototype.slice.apply(this,arguments),res=\"\",tmp=\"\",i=0;bytes.length>i;)127>=bytes[i]?(res+=decodeUtf8Char(tmp)+String.fromCharCode(bytes[i]),tmp=\"\"):tmp+=\"%\"+bytes[i].toString(16),i++;return res+decodeUtf8Char(tmp)},SlowBuffer.prototype.asciiSlice=function(){for(var bytes=Array.prototype.slice.apply(this,arguments),ret=\"\",i=0;bytes.length>i;i++)ret+=String.fromCharCode(bytes[i]);return ret},SlowBuffer.prototype.binarySlice=SlowBuffer.prototype.asciiSlice,SlowBuffer.prototype.inspect=function(){for(var out=[],len=this.length,i=0;len>i;i++)if(out[i]=toHex(this[i]),i==exports.INSPECT_MAX_BYTES){out[i+1]=\"...\";break}return\"\u003CSlowBuffer \"+out.join(\" \")+\">\"},SlowBuffer.prototype.hexSlice=function(start,end){var len=this.length;(!start||0>start)&&(start=0),(!end||0>end||end>len)&&(end=len);for(var out=\"\",i=start;end>i;i++)out+=toHex(this[i]);return out},SlowBuffer.prototype.toString=function(encoding,start,end){if(encoding=((encoding||\"utf8\")+\"\").toLowerCase(),start=+start||0,end===void 0&&(end=this.length),+end==start)return\"\";switch(encoding){case\"hex\":return this.hexSlice(start,end);case\"utf8\":case\"utf-8\":return this.utf8Slice(start,end);case\"ascii\":return this.asciiSlice(start,end);case\"binary\":return this.binarySlice(start,end);case\"base64\":return this.base64Slice(start,end);case\"ucs2\":case\"ucs-2\":return this.ucs2Slice(start,end);default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.hexWrite=function(string,offset,length){offset=+offset||0;var remaining=this.length-offset;length?(length=+length,length>remaining&&(length=remaining)):length=remaining;var strLen=string.length;if(strLen%2)throw Error(\"Invalid hex string\");length>strLen/2&&(length=strLen/2);for(var i=0;length>i;i++){var byte=parseInt(string.substr(2*i,2),16);if(isNaN(byte))throw Error(\"Invalid hex string\");this[offset+i]=byte}return SlowBuffer._charsWritten=2*i,i},SlowBuffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset))isFinite(length)||(encoding=length,length=void 0);else{var swap=encoding;encoding=offset,offset=length,length=swap}offset=+offset||0;var remaining=this.length-offset;switch(length?(length=+length,length>remaining&&(length=remaining)):length=remaining,encoding=((encoding||\"utf8\")+\"\").toLowerCase()){case\"hex\":return this.hexWrite(string,offset,length);case\"utf8\":case\"utf-8\":return this.utf8Write(string,offset,length);case\"ascii\":return this.asciiWrite(string,offset,length);case\"binary\":return this.binaryWrite(string,offset,length);case\"base64\":return this.base64Write(string,offset,length);case\"ucs2\":case\"ucs-2\":return this.ucs2Write(string,offset,length);default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.slice=function(start,end){if(void 0===end&&(end=this.length),end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");return new Buffer(this,end-start,+start)},SlowBuffer.prototype.copy=function(target,targetstart,sourcestart,sourceend){for(var temp=[],i=sourcestart;sourceend>i;i++)assert.ok(this[i]!==void 0,\"copying undefined buffer bytes!\"),temp.push(this[i]);for(var i=targetstart;targetstart+temp.length>i;i++)target[i]=temp[i-targetstart]},SlowBuffer.prototype.fill=function(value,start,end){if(end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");for(var i=start;end>i;i++)this[i]=value},exports.SlowBuffer=SlowBuffer,exports.Buffer=Buffer,Buffer.poolSize=8192;var pool;Buffer.isBuffer=function(b){return b instanceof Buffer||b instanceof SlowBuffer},Buffer.concat=function(list,totalLength){if(!Array.isArray(list))throw Error(\"Usage: Buffer.concat(list, [totalLength])\\n list should be an Array.\");if(0===list.length)return new Buffer(0);if(1===list.length)return list[0];if(\"number\"!=typeof totalLength){totalLength=0;for(var i=0;list.length>i;i++){var buf=list[i];totalLength+=buf.length}}for(var buffer=new Buffer(totalLength),pos=0,i=0;list.length>i;i++){var buf=list[i];buf.copy(buffer,pos),pos+=buf.length}return buffer},Buffer.prototype.inspect=function(){for(var out=[],len=this.length,i=0;len>i;i++)if(out[i]=toHex(this.parent[i+this.offset]),i==exports.INSPECT_MAX_BYTES){out[i+1]=\"...\";break}return\"\u003CBuffer \"+out.join(\" \")+\">\"},Buffer.prototype.get=function(i){if(0>i||i>=this.length)throw Error(\"oob\");return this.parent[this.offset+i]},Buffer.prototype.set=function(i,v){if(0>i||i>=this.length)throw Error(\"oob\");return this.parent[this.offset+i]=v},Buffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset))isFinite(length)||(encoding=length,length=void 0);else{var swap=encoding;encoding=offset,offset=length,length=swap}offset=+offset||0;var remaining=this.length-offset;length?(length=+length,length>remaining&&(length=remaining)):length=remaining,encoding=((encoding||\"utf8\")+\"\").toLowerCase();var ret;switch(encoding){case\"hex\":ret=this.parent.hexWrite(string,this.offset+offset,length);break;\ncase\"utf8\":case\"utf-8\":ret=this.parent.utf8Write(string,this.offset+offset,length);break;case\"ascii\":ret=this.parent.asciiWrite(string,this.offset+offset,length);break;case\"binary\":ret=this.parent.binaryWrite(string,this.offset+offset,length);break;case\"base64\":ret=this.parent.base64Write(string,this.offset+offset,length);break;case\"ucs2\":case\"ucs-2\":ret=this.parent.ucs2Write(string,this.offset+offset,length);break;default:throw Error(\"Unknown encoding\")}return Buffer._charsWritten=SlowBuffer._charsWritten,ret},Buffer.prototype.toString=function(encoding,start,end){switch(encoding=((encoding||\"utf8\")+\"\").toLowerCase(),start===void 0||0>start?start=0:start>this.length&&(start=this.length),end===void 0||end>this.length?end=this.length:0>end&&(end=0),start+=this.offset,end+=this.offset,encoding){case\"hex\":return this.parent.hexSlice(start,end);case\"utf8\":case\"utf-8\":return this.parent.utf8Slice(start,end);case\"ascii\":return this.parent.asciiSlice(start,end);case\"binary\":return this.parent.binarySlice(start,end);case\"base64\":return this.parent.base64Slice(start,end);case\"ucs2\":case\"ucs-2\":return this.parent.ucs2Slice(start,end);default:throw Error(\"Unknown encoding\")}},Buffer.byteLength=SlowBuffer.byteLength,Buffer.prototype.fill=function(value,start,end){if(value||(value=0),start||(start=0),end||(end=this.length),\"string\"==typeof value&&(value=value.charCodeAt(0)),\"number\"!=typeof value||isNaN(value))throw Error(\"value is not a number\");if(start>end)throw Error(\"end \u003C start\");if(end===start)return 0;if(0==this.length)return 0;if(0>start||start>=this.length)throw Error(\"start out of bounds\");if(0>end||end>this.length)throw Error(\"end out of bounds\");return this.parent.fill(value,start+this.offset,end+this.offset)},Buffer.prototype.copy=function(target,target_start,start,end){var source=this;if(start||(start=0),end||(end=this.length),target_start||(target_start=0),start>end)throw Error(\"sourceEnd \u003C sourceStart\");if(end===start)return 0;if(0==target.length||0==source.length)return 0;if(0>target_start||target_start>=target.length)throw Error(\"targetStart out of bounds\");if(0>start||start>=source.length)throw Error(\"sourceStart out of bounds\");if(0>end||end>source.length)throw Error(\"sourceEnd out of bounds\");return end>this.length&&(end=this.length),end-start>target.length-target_start&&(end=target.length-target_start+start),this.parent.copy(target.parent,target_start+target.offset,start+this.offset,end+this.offset)},Buffer.prototype.slice=function(start,end){if(void 0===end&&(end=this.length),end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");return new Buffer(this.parent,end-start,+start+this.offset)},Buffer.prototype.utf8Slice=function(start,end){return this.toString(\"utf8\",start,end)},Buffer.prototype.binarySlice=function(start,end){return this.toString(\"binary\",start,end)},Buffer.prototype.asciiSlice=function(start,end){return this.toString(\"ascii\",start,end)},Buffer.prototype.utf8Write=function(string,offset){return this.write(string,offset,\"utf8\")},Buffer.prototype.binaryWrite=function(string,offset){return this.write(string,offset,\"binary\")},Buffer.prototype.asciiWrite=function(string,offset){return this.write(string,offset,\"ascii\")},Buffer.prototype.readUInt8=function(offset,noAssert){var buffer=this;return noAssert||(assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to read beyond buffer length\")),offset>=buffer.length?void 0:buffer.parent[buffer.offset+offset]},Buffer.prototype.readUInt16LE=function(offset,noAssert){return readUInt16(this,offset,!1,noAssert)},Buffer.prototype.readUInt16BE=function(offset,noAssert){return readUInt16(this,offset,!0,noAssert)},Buffer.prototype.readUInt32LE=function(offset,noAssert){return readUInt32(this,offset,!1,noAssert)},Buffer.prototype.readUInt32BE=function(offset,noAssert){return readUInt32(this,offset,!0,noAssert)},Buffer.prototype.readInt8=function(offset,noAssert){var neg,buffer=this;return noAssert||(assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to read beyond buffer length\")),offset>=buffer.length?void 0:(neg=128&buffer.parent[buffer.offset+offset],neg?-1*(255-buffer.parent[buffer.offset+offset]+1):buffer.parent[buffer.offset+offset])},Buffer.prototype.readInt16LE=function(offset,noAssert){return readInt16(this,offset,!1,noAssert)},Buffer.prototype.readInt16BE=function(offset,noAssert){return readInt16(this,offset,!0,noAssert)},Buffer.prototype.readInt32LE=function(offset,noAssert){return readInt32(this,offset,!1,noAssert)},Buffer.prototype.readInt32BE=function(offset,noAssert){return readInt32(this,offset,!0,noAssert)},Buffer.prototype.readFloatLE=function(offset,noAssert){return readFloat(this,offset,!1,noAssert)},Buffer.prototype.readFloatBE=function(offset,noAssert){return readFloat(this,offset,!0,noAssert)},Buffer.prototype.readDoubleLE=function(offset,noAssert){return readDouble(this,offset,!1,noAssert)},Buffer.prototype.readDoubleBE=function(offset,noAssert){return readDouble(this,offset,!0,noAssert)},Buffer.prototype.writeUInt8=function(value,offset,noAssert){var buffer=this;noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"trying to write beyond buffer length\"),verifuint(value,255)),buffer.length>offset&&(buffer.parent[buffer.offset+offset]=value)},Buffer.prototype.writeUInt16LE=function(value,offset,noAssert){writeUInt16(this,value,offset,!1,noAssert)},Buffer.prototype.writeUInt16BE=function(value,offset,noAssert){writeUInt16(this,value,offset,!0,noAssert)},Buffer.prototype.writeUInt32LE=function(value,offset,noAssert){writeUInt32(this,value,offset,!1,noAssert)},Buffer.prototype.writeUInt32BE=function(value,offset,noAssert){writeUInt32(this,value,offset,!0,noAssert)},Buffer.prototype.writeInt8=function(value,offset,noAssert){var buffer=this;noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to write beyond buffer length\"),verifsint(value,127,-128)),value>=0?buffer.writeUInt8(value,offset,noAssert):buffer.writeUInt8(255+value+1,offset,noAssert)},Buffer.prototype.writeInt16LE=function(value,offset,noAssert){writeInt16(this,value,offset,!1,noAssert)},Buffer.prototype.writeInt16BE=function(value,offset,noAssert){writeInt16(this,value,offset,!0,noAssert)},Buffer.prototype.writeInt32LE=function(value,offset,noAssert){writeInt32(this,value,offset,!1,noAssert)},Buffer.prototype.writeInt32BE=function(value,offset,noAssert){writeInt32(this,value,offset,!0,noAssert)},Buffer.prototype.writeFloatLE=function(value,offset,noAssert){writeFloat(this,value,offset,!1,noAssert)},Buffer.prototype.writeFloatBE=function(value,offset,noAssert){writeFloat(this,value,offset,!0,noAssert)},Buffer.prototype.writeDoubleLE=function(value,offset,noAssert){writeDouble(this,value,offset,!1,noAssert)},Buffer.prototype.writeDoubleBE=function(value,offset,noAssert){writeDouble(this,value,offset,!0,noAssert)},SlowBuffer.prototype.readUInt8=Buffer.prototype.readUInt8,SlowBuffer.prototype.readUInt16LE=Buffer.prototype.readUInt16LE,SlowBuffer.prototype.readUInt16BE=Buffer.prototype.readUInt16BE,SlowBuffer.prototype.readUInt32LE=Buffer.prototype.readUInt32LE,SlowBuffer.prototype.readUInt32BE=Buffer.prototype.readUInt32BE,SlowBuffer.prototype.readInt8=Buffer.prototype.readInt8,SlowBuffer.prototype.readInt16LE=Buffer.prototype.readInt16LE,SlowBuffer.prototype.readInt16BE=Buffer.prototype.readInt16BE,SlowBuffer.prototype.readInt32LE=Buffer.prototype.readInt32LE,SlowBuffer.prototype.readInt32BE=Buffer.prototype.readInt32BE,SlowBuffer.prototype.readFloatLE=Buffer.prototype.readFloatLE,SlowBuffer.prototype.readFloatBE=Buffer.prototype.readFloatBE,SlowBuffer.prototype.readDoubleLE=Buffer.prototype.readDoubleLE,SlowBuffer.prototype.readDoubleBE=Buffer.prototype.readDoubleBE,SlowBuffer.prototype.writeUInt8=Buffer.prototype.writeUInt8,SlowBuffer.prototype.writeUInt16LE=Buffer.prototype.writeUInt16LE,SlowBuffer.prototype.writeUInt16BE=Buffer.prototype.writeUInt16BE,SlowBuffer.prototype.writeUInt32LE=Buffer.prototype.writeUInt32LE,SlowBuffer.prototype.writeUInt32BE=Buffer.prototype.writeUInt32BE,SlowBuffer.prototype.writeInt8=Buffer.prototype.writeInt8,SlowBuffer.prototype.writeInt16LE=Buffer.prototype.writeInt16LE,SlowBuffer.prototype.writeInt16BE=Buffer.prototype.writeInt16BE,SlowBuffer.prototype.writeInt32LE=Buffer.prototype.writeInt32LE,SlowBuffer.prototype.writeInt32BE=Buffer.prototype.writeInt32BE,SlowBuffer.prototype.writeFloatLE=Buffer.prototype.writeFloatLE,SlowBuffer.prototype.writeFloatBE=Buffer.prototype.writeFloatBE,SlowBuffer.prototype.writeDoubleLE=Buffer.prototype.writeDoubleLE,SlowBuffer.prototype.writeDoubleBE=Buffer.prototype.writeDoubleBE})()},{assert:2,\"./buffer_ieee754\":1,\"base64-js\":5}],3:[function(require,module,exports){function isArray(ar){return ar instanceof Array||Array.isArray(ar)||ar&&ar!==Object.prototype&&isArray(ar.__proto__)}function isRegExp(re){return re instanceof RegExp||\"object\"==typeof re&&\"[object RegExp]\"===Object.prototype.toString.call(re)}function isDate(d){if(d instanceof Date)return!0;if(\"object\"!=typeof d)return!1;var properties=Date.prototype&&Object_getOwnPropertyNames(Date.prototype),proto=d.__proto__&&Object_getOwnPropertyNames(d.__proto__);return JSON.stringify(proto)===JSON.stringify(properties)}require(\"events\"),exports.isArray=isArray,exports.isDate=function(obj){return\"[object Date]\"===Object.prototype.toString.call(obj)},exports.isRegExp=function(obj){return\"[object RegExp]\"===Object.prototype.toString.call(obj)},exports.print=function(){},exports.puts=function(){},exports.debug=function(){},exports.inspect=function(obj,showHidden,depth,colors){function format(value,recurseTimes){if(value&&\"function\"==typeof value.inspect&&value!==exports&&(!value.constructor||value.constructor.prototype!==value))return value.inspect(recurseTimes);switch(typeof value){case\"undefined\":return stylize(\"undefined\",\"undefined\");case\"string\":var simple=\"'\"+JSON.stringify(value).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return stylize(simple,\"string\");case\"number\":return stylize(\"\"+value,\"number\");case\"boolean\":return stylize(\"\"+value,\"boolean\")}if(null===value)return stylize(\"null\",\"null\");var visible_keys=Object_keys(value),keys=showHidden?Object_getOwnPropertyNames(value):visible_keys;if(\"function\"==typeof value&&0===keys.length){if(isRegExp(value))return stylize(\"\"+value,\"regexp\");var name=value.name?\": \"+value.name:\"\";return stylize(\"[Function\"+name+\"]\",\"special\")}if(isDate(value)&&0===keys.length)return stylize(value.toUTCString(),\"date\");var base,type,braces;if(isArray(value)?(type=\"Array\",braces=[\"[\",\"]\"]):(type=\"Object\",braces=[\"{\",\"}\"]),\"function\"==typeof value){var n=value.name?\": \"+value.name:\"\";base=isRegExp(value)?\" \"+value:\" [Function\"+n+\"]\"}else base=\"\";if(isDate(value)&&(base=\" \"+value.toUTCString()),0===keys.length)return braces[0]+base+braces[1];if(0>recurseTimes)return isRegExp(value)?stylize(\"\"+value,\"regexp\"):stylize(\"[Object]\",\"special\");seen.push(value);var output=keys.map(function(key){var name,str;if(value.__lookupGetter__&&(value.__lookupGetter__(key)?str=value.__lookupSetter__(key)?stylize(\"[Getter/Setter]\",\"special\"):stylize(\"[Getter]\",\"special\"):value.__lookupSetter__(key)&&(str=stylize(\"[Setter]\",\"special\"))),0>visible_keys.indexOf(key)&&(name=\"[\"+key+\"]\"),str||(0>seen.indexOf(value[key])?(str=null===recurseTimes?format(value[key]):format(value[key],recurseTimes-1),str.indexOf(\"\\n\")>-1&&(str=isArray(value)?str.split(\"\\n\").map(function(line){return\" \"+line}).join(\"\\n\").substr(2):\"\\n\"+str.split(\"\\n\").map(function(line){return\" \"+line}).join(\"\\n\"))):str=stylize(\"[Circular]\",\"special\")),name===void 0){if(\"Array\"===type&&key.match(/^\\d+$/))return str;name=JSON.stringify(\"\"+key),name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(name=name.substr(1,name.length-2),name=stylize(name,\"name\")):(name=name.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),name=stylize(name,\"string\"))}return name+\": \"+str});seen.pop();var numLinesEst=0,length=output.reduce(function(prev,cur){return numLinesEst++,cur.indexOf(\"\\n\")>=0&&numLinesEst++,prev+cur.length+1},0);return output=length>50?braces[0]+(\"\"===base?\"\":base+\"\\n \")+\" \"+output.join(\",\\n \")+\" \"+braces[1]:braces[0]+base+\" \"+output.join(\", \")+\" \"+braces[1]}var seen=[],stylize=function(str,styleType){var styles={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},style={special:\"cyan\",number:\"blue\",\"boolean\":\"yellow\",undefined:\"grey\",\"null\":\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"}[styleType];return style?\"\u001b[\"+styles[style][0]+\"m\"+str+\"\u001b[\"+styles[style][1]+\"m\":str};return colors||(stylize=function(str){return str}),format(obj,depth===void 0?2:depth)},exports.log=function(){},exports.pump=null;var Object_keys=Object.keys||function(obj){var res=[];for(var key in obj)res.push(key);return res},Object_getOwnPropertyNames=Object.getOwnPropertyNames||function(obj){var res=[];for(var key in obj)Object.hasOwnProperty.call(obj,key)&&res.push(key);return res},Object_create=Object.create||function(prototype,properties){var object;if(null===prototype)object={__proto__:null};else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return properties!==void 0&&Object.defineProperties&&Object.defineProperties(object,properties),object};exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object_create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})};var formatRegExp=/%[sdj%]/g;exports.format=function(f){if(\"string\"!=typeof f){for(var objects=[],i=0;arguments.length>i;i++)objects.push(exports.inspect(arguments[i]));return objects.join(\" \")}for(var i=1,args=arguments,len=args.length,str=(f+\"\").replace(formatRegExp,function(x){if(\"%%\"===x)return\"%\";if(i>=len)return x;switch(x){case\"%s\":return args[i++]+\"\";case\"%d\":return Number(args[i++]);case\"%j\":return JSON.stringify(args[i++]);default:return x}}),x=args[i];len>i;x=args[++i])str+=null===x||\"object\"!=typeof x?\" \"+x:\" \"+exports.inspect(x);return str}},{events:6}],5:[function(require,module){(function(){\"use strict\";function b64ToByteArray(b64){var i,j,l,tmp,placeHolders,arr;if(b64.length%4>0)throw\"Invalid string. Length must be a multiple of 4\";for(placeHolders=b64.indexOf(\"=\"),placeHolders=placeHolders>0?b64.length-placeHolders:0,arr=[],l=placeHolders>0?b64.length-4:b64.length,i=0,j=0;l>i;i+=4,j+=3)tmp=lookup.indexOf(b64[i])\u003C\u003C18|lookup.indexOf(b64[i+1])\u003C\u003C12|lookup.indexOf(b64[i+2])\u003C\u003C6|lookup.indexOf(b64[i+3]),arr.push((16711680&tmp)>>16),arr.push((65280&tmp)>>8),arr.push(255&tmp);return 2===placeHolders?(tmp=lookup.indexOf(b64[i])\u003C\u003C2|lookup.indexOf(b64[i+1])>>4,arr.push(255&tmp)):1===placeHolders&&(tmp=lookup.indexOf(b64[i])\u003C\u003C10|lookup.indexOf(b64[i+1])\u003C\u003C4|lookup.indexOf(b64[i+2])>>2,arr.push(255&tmp>>8),arr.push(255&tmp)),arr}function uint8ToBase64(uint8){function tripletToBase64(num){return lookup[63&num>>18]+lookup[63&num>>12]+lookup[63&num>>6]+lookup[63&num]}var i,temp,length,extraBytes=uint8.length%3,output=\"\";for(i=0,length=uint8.length-extraBytes;length>i;i+=3)temp=(uint8[i]\u003C\u003C16)+(uint8[i+1]\u003C\u003C8)+uint8[i+2],output+=tripletToBase64(temp);switch(extraBytes){case 1:temp=uint8[uint8.length-1],output+=lookup[temp>>2],output+=lookup[63&temp\u003C\u003C4],output+=\"==\";break;case 2:temp=(uint8[uint8.length-2]\u003C\u003C8)+uint8[uint8.length-1],output+=lookup[temp>>10],output+=lookup[63&temp>>4],output+=lookup[63&temp\u003C\u003C2],output+=\"=\"}return output}var lookup=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";module.exports.toByteArray=b64ToByteArray,module.exports.fromByteArray=uint8ToBase64})()},{}],7:[function(require,module,exports){exports.readIEEE754=function(buffer,offset,isBE,mLen,nBytes){var e,m,eLen=8*nBytes-mLen-1,eMax=(1\u003C\u003CeLen)-1,eBias=eMax>>1,nBits=-7,i=isBE?0:nBytes-1,d=isBE?1:-1,s=buffer[offset+i];for(i+=d,e=s&(1\u003C\u003C-nBits)-1,s>>=-nBits,nBits+=eLen;nBits>0;e=256*e+buffer[offset+i],i+=d,nBits-=8);for(m=e&(1\u003C\u003C-nBits)-1,e>>=-nBits,nBits+=mLen;nBits>0;m=256*m+buffer[offset+i],i+=d,nBits-=8);if(0===e)e=1-eBias;else{if(e===eMax)return m?0/0:1/0*(s?-1:1);m+=Math.pow(2,mLen),e-=eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)},exports.writeIEEE754=function(buffer,value,offset,isBE,mLen,nBytes){var e,m,c,eLen=8*nBytes-mLen-1,eMax=(1\u003C\u003CeLen)-1,eBias=eMax>>1,rt=23===mLen?Math.pow(2,-24)-Math.pow(2,-77):0,i=isBE?nBytes-1:0,d=isBE?-1:1,s=0>value||0===value&&0>1/value?1:0;for(value=Math.abs(value),isNaN(value)||1/0===value?(m=isNaN(value)?1:0,e=eMax):(e=Math.floor(Math.log(value)/Math.LN2),1>value*(c=Math.pow(2,-e))&&(e--,c*=2),value+=e+eBias>=1?rt/c:rt*Math.pow(2,1-eBias),value*c>=2&&(e++,c/=2),e+eBias>=eMax?(m=0,e=eMax):e+eBias>=1?(m=(value*c-1)*Math.pow(2,mLen),e+=eBias):(m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen),e=0));mLen>=8;buffer[offset+i]=255&m,i+=d,m/=256,mLen-=8);for(e=e\u003C\u003CmLen|m,eLen+=mLen;eLen>0;buffer[offset+i]=255&e,i+=d,e/=256,eLen-=8);buffer[offset+i-d]|=128*s}},{}],8:[function(require,module){var process=module.exports={};process.nextTick=function(){var canSetImmediate=\"undefined\"!=typeof window&&window.setImmediate,canPost=\"undefined\"!=typeof window&&window.postMessage&&window.addEventListener;if(canSetImmediate)return function(f){return window.setImmediate(f)};if(canPost){var queue=[];return window.addEventListener(\"message\",function(ev){if(ev.source===window&&\"process-tick\"===ev.data&&(ev.stopPropagation(),queue.length>0)){var fn=queue.shift();fn()}},!0),function(fn){queue.push(fn),window.postMessage(\"process-tick\",\"*\")}}return function(fn){setTimeout(fn,0)}}(),process.title=\"browser\",process.browser=!0,process.env={},process.argv=[],process.binding=function(){throw Error(\"process.binding is not supported\")},process.cwd=function(){return\"/\"},process.chdir=function(){throw Error(\"process.chdir is not supported\")}},{}],6:[function(require,module,exports){(function(process){function indexOf(xs,x){if(xs.indexOf)return xs.indexOf(x);for(var i=0;xs.length>i;i++)if(x===xs[i])return i;return-1}process.EventEmitter||(process.EventEmitter=function(){});var EventEmitter=exports.EventEmitter=process.EventEmitter,isArray=\"function\"==typeof Array.isArray?Array.isArray:function(xs){return\"[object Array]\"===Object.prototype.toString.call(xs)},defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){this._events||(this._events={}),this._events.maxListeners=n},EventEmitter.prototype.emit=function(type){if(\"error\"===type&&(!this._events||!this._events.error||isArray(this._events.error)&&!this._events.error.length))throw arguments[1]instanceof Error?arguments[1]:Error(\"Uncaught, unspecified 'error' event.\");if(!this._events)return!1;var handler=this._events[type];if(!handler)return!1;if(\"function\"==typeof handler){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:var args=Array.prototype.slice.call(arguments,1);handler.apply(this,args)}return!0}if(isArray(handler)){for(var args=Array.prototype.slice.call(arguments,1),listeners=handler.slice(),i=0,l=listeners.length;l>i;i++)listeners[i].apply(this,args);return!0}return!1},EventEmitter.prototype.addListener=function(type,listener){if(\"function\"!=typeof listener)throw Error(\"addListener only takes instances of Function\");if(this._events||(this._events={}),this.emit(\"newListener\",type,listener),this._events[type])if(isArray(this._events[type])){if(!this._events[type].warned){var m;m=void 0!==this._events.maxListeners?this._events.maxListeners:defaultMaxListeners,m&&m>0&&this._events[type].length>m&&(this._events[type].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[type].length),console.trace())}this._events[type].push(listener)}else this._events[type]=[this._events[type],listener];else this._events[type]=listener;return this},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.once=function(type,listener){var self=this;return self.on(type,function g(){self.removeListener(type,g),listener.apply(this,arguments)}),this},EventEmitter.prototype.removeListener=function(type,listener){if(\"function\"!=typeof listener)throw Error(\"removeListener only takes instances of Function\");if(!this._events||!this._events[type])return this;var list=this._events[type];if(isArray(list)){var i=indexOf(list,listener);if(0>i)return this;list.splice(i,1),0==list.length&&delete this._events[type]}else this._events[type]===listener&&delete this._events[type];return this},EventEmitter.prototype.removeAllListeners=function(type){return 0===arguments.length?(this._events={},this):(type&&this._events&&this._events[type]&&(this._events[type]=null),this)},EventEmitter.prototype.listeners=function(type){return this._events||(this._events={}),this._events[type]||(this._events[type]=[]),isArray(this._events[type])||(this._events[type]=[this._events[type]]),this._events[type]}})(require(\"__browserify_process\"))},{__browserify_process:8}],4:[function(require,module,exports){(function(){function SlowBuffer(size){this.length=size}function toHex(n){return 16>n?\"0\"+n.toString(16):n.toString(16)}function utf8ToBytes(str){for(var byteArray=[],i=0;str.length>i;i++)if(127>=str.charCodeAt(i))byteArray.push(str.charCodeAt(i));else for(var h=encodeURIComponent(str.charAt(i)).substr(1).split(\"%\"),j=0;h.length>j;j++)byteArray.push(parseInt(h[j],16));return byteArray}function asciiToBytes(str){for(var byteArray=[],i=0;str.length>i;i++)byteArray.push(255&str.charCodeAt(i));return byteArray}function base64ToBytes(str){return require(\"base64-js\").toByteArray(str)}function blitBuffer(src,dst,offset,length){for(var i=0;length>i&&!(i+offset>=dst.length||i>=src.length);)dst[i+offset]=src[i],i++;return i}function decodeUtf8Char(str){try{return decodeURIComponent(str)}catch(err){return String.fromCharCode(65533)}}function coerce(length){return length=~~Math.ceil(+length),0>length?0:length}function Buffer(subject,encoding,offset){if(!(this instanceof Buffer))return new Buffer(subject,encoding,offset);var type;if(\"number\"==typeof offset)this.length=coerce(encoding),this.parent=subject,this.offset=offset;else{switch(type=typeof subject){case\"number\":this.length=coerce(subject);break;case\"string\":this.length=Buffer.byteLength(subject,encoding);break;case\"object\":this.length=coerce(subject.length);break;default:throw Error(\"First argument needs to be a number, array or string.\")}if(this.length>Buffer.poolSize?(this.parent=new SlowBuffer(this.length),this.offset=0):((!pool||pool.length-pool.used\u003Cthis.length)&&allocPool(),this.parent=pool,this.offset=pool.used,pool.used+=this.length),isArrayIsh(subject))for(var i=0;this.length>i;i++)this.parent[i+this.offset]=subject[i];else\"string\"==type&&(this.length=this.write(subject,0,encoding))}}function isArrayIsh(subject){return Array.isArray(subject)||Buffer.isBuffer(subject)||subject&&\"object\"==typeof subject&&\"number\"==typeof subject.length}function allocPool(){pool=new SlowBuffer(Buffer.poolSize),pool.used=0}function readUInt16(buffer,offset,isBigEndian,noAssert){var val=0;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to read beyond buffer length\")),isBigEndian?(val=buffer.parent[buffer.offset+offset]\u003C\u003C8,val|=buffer.parent[buffer.offset+offset+1]):(val=buffer.parent[buffer.offset+offset],val|=buffer.parent[buffer.offset+offset+1]\u003C\u003C8),val}function readUInt32(buffer,offset,isBigEndian,noAssert){var val=0;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),isBigEndian?(val=buffer.parent[buffer.offset+offset+1]\u003C\u003C16,val|=buffer.parent[buffer.offset+offset+2]\u003C\u003C8,val|=buffer.parent[buffer.offset+offset+3],val+=buffer.parent[buffer.offset+offset]\u003C\u003C24>>>0):(val=buffer.parent[buffer.offset+offset+2]\u003C\u003C16,val|=buffer.parent[buffer.offset+offset+1]\u003C\u003C8,val|=buffer.parent[buffer.offset+offset],val+=buffer.parent[buffer.offset+offset+3]\u003C\u003C24>>>0),val}function readInt16(buffer,offset,isBigEndian,noAssert){var neg,val;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to read beyond buffer length\")),val=readUInt16(buffer,offset,isBigEndian,noAssert),neg=32768&val,neg?-1*(65535-val+1):val}function readInt32(buffer,offset,isBigEndian,noAssert){var neg,val;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),val=readUInt32(buffer,offset,isBigEndian,noAssert),neg=2147483648&val,neg?-1*(4294967295-val+1):val}function readFloat(buffer,offset,isBigEndian,noAssert){return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),require(\"./buffer_ieee754\").readIEEE754(buffer,offset,isBigEndian,23,4)}function readDouble(buffer,offset,isBigEndian,noAssert){return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(buffer.length>offset+7,\"Trying to read beyond buffer length\")),require(\"./buffer_ieee754\").readIEEE754(buffer,offset,isBigEndian,52,8)}function verifuint(value,max){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(value>=0,\"specified a negative value for writing an unsigned value\"),assert.ok(max>=value,\"value is larger than maximum value for type\"),assert.ok(Math.floor(value)===value,\"value has a fractional component\")}function writeUInt16(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"trying to write beyond buffer length\"),verifuint(value,65535)),isBigEndian?(buffer.parent[buffer.offset+offset]=(65280&value)>>>8,buffer.parent[buffer.offset+offset+1]=255&value):(buffer.parent[buffer.offset+offset+1]=(65280&value)>>>8,buffer.parent[buffer.offset+offset]=255&value)}function writeUInt32(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"trying to write beyond buffer length\"),verifuint(value,4294967295)),isBigEndian?(buffer.parent[buffer.offset+offset]=255&value>>>24,buffer.parent[buffer.offset+offset+1]=255&value>>>16,buffer.parent[buffer.offset+offset+2]=255&value>>>8,buffer.parent[buffer.offset+offset+3]=255&value):(buffer.parent[buffer.offset+offset+3]=255&value>>>24,buffer.parent[buffer.offset+offset+2]=255&value>>>16,buffer.parent[buffer.offset+offset+1]=255&value>>>8,buffer.parent[buffer.offset+offset]=255&value)}function verifsint(value,max,min){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(max>=value,\"value larger than maximum allowed value\"),assert.ok(value>=min,\"value smaller than minimum allowed value\"),assert.ok(Math.floor(value)===value,\"value has a fractional component\")}function verifIEEE754(value,max,min){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(max>=value,\"value larger than maximum allowed value\"),assert.ok(value>=min,\"value smaller than minimum allowed value\")}function writeInt16(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to write beyond buffer length\"),verifsint(value,32767,-32768)),value>=0?writeUInt16(buffer,value,offset,isBigEndian,noAssert):writeUInt16(buffer,65535+value+1,offset,isBigEndian,noAssert)}function writeInt32(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to write beyond buffer length\"),verifsint(value,2147483647,-2147483648)),value>=0?writeUInt32(buffer,value,offset,isBigEndian,noAssert):writeUInt32(buffer,4294967295+value+1,offset,isBigEndian,noAssert)}function writeFloat(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to write beyond buffer length\"),verifIEEE754(value,3.4028234663852886e38,-3.4028234663852886e38)),require(\"./buffer_ieee754\").writeIEEE754(buffer,value,offset,isBigEndian,23,4)}function writeDouble(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+7,\"Trying to write beyond buffer length\"),verifIEEE754(value,1.7976931348623157e308,-1.7976931348623157e308)),require(\"./buffer_ieee754\").writeIEEE754(buffer,value,offset,isBigEndian,52,8)}var assert=require(\"assert\");exports.INSPECT_MAX_BYTES=50,SlowBuffer.byteLength=function(str,encoding){switch(encoding||\"utf8\"){case\"hex\":return str.length/2;case\"utf8\":case\"utf-8\":return utf8ToBytes(str).length;case\"ascii\":return str.length;case\"base64\":return base64ToBytes(str).length;default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.utf8Write=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(utf8ToBytes(string),this,offset,length)},SlowBuffer.prototype.asciiWrite=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(asciiToBytes(string),this,offset,length)},SlowBuffer.prototype.base64Write=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(base64ToBytes(string),this,offset,length)},SlowBuffer.prototype.base64Slice=function(){var bytes=Array.prototype.slice.apply(this,arguments);return require(\"base64-js\").fromByteArray(bytes)},SlowBuffer.prototype.utf8Slice=function(){for(var bytes=Array.prototype.slice.apply(this,arguments),res=\"\",tmp=\"\",i=0;bytes.length>i;)127>=bytes[i]?(res+=decodeUtf8Char(tmp)+String.fromCharCode(bytes[i]),tmp=\"\"):tmp+=\"%\"+bytes[i].toString(16),i++;return res+decodeUtf8Char(tmp)},SlowBuffer.prototype.asciiSlice=function(){for(var bytes=Array.prototype.slice.apply(this,arguments),ret=\"\",i=0;bytes.length>i;i++)ret+=String.fromCharCode(bytes[i]);return ret},SlowBuffer.prototype.inspect=function(){for(var out=[],len=this.length,i=0;len>i;i++)if(out[i]=toHex(this[i]),i==exports.INSPECT_MAX_BYTES){out[i+1]=\"...\";break}return\"\u003CSlowBuffer \"+out.join(\" \")+\">\"},SlowBuffer.prototype.hexSlice=function(start,end){var len=this.length;(!start||0>start)&&(start=0),(!end||0>end||end>len)&&(end=len);for(var out=\"\",i=start;end>i;i++)out+=toHex(this[i]);return out},SlowBuffer.prototype.toString=function(encoding,start,end){if(encoding=((encoding||\"utf8\")+\"\").toLowerCase(),start=+start||0,end===void 0&&(end=this.length),+end==start)return\"\";\nswitch(encoding){case\"hex\":return this.hexSlice(start,end);case\"utf8\":case\"utf-8\":return this.utf8Slice(start,end);case\"ascii\":return this.asciiSlice(start,end);case\"binary\":return this.binarySlice(start,end);case\"base64\":return this.base64Slice(start,end);case\"ucs2\":case\"ucs-2\":return this.ucs2Slice(start,end);default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.hexWrite=function(string,offset,length){offset=+offset||0;var remaining=this.length-offset;length?(length=+length,length>remaining&&(length=remaining)):length=remaining;var strLen=string.length;if(strLen%2)throw Error(\"Invalid hex string\");length>strLen/2&&(length=strLen/2);for(var i=0;length>i;i++){var byte=parseInt(string.substr(2*i,2),16);if(isNaN(byte))throw Error(\"Invalid hex string\");this[offset+i]=byte}return SlowBuffer._charsWritten=2*i,i},SlowBuffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset))isFinite(length)||(encoding=length,length=void 0);else{var swap=encoding;encoding=offset,offset=length,length=swap}offset=+offset||0;var remaining=this.length-offset;switch(length?(length=+length,length>remaining&&(length=remaining)):length=remaining,encoding=((encoding||\"utf8\")+\"\").toLowerCase()){case\"hex\":return this.hexWrite(string,offset,length);case\"utf8\":case\"utf-8\":return this.utf8Write(string,offset,length);case\"ascii\":return this.asciiWrite(string,offset,length);case\"binary\":return this.binaryWrite(string,offset,length);case\"base64\":return this.base64Write(string,offset,length);case\"ucs2\":case\"ucs-2\":return this.ucs2Write(string,offset,length);default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.slice=function(start,end){if(void 0===end&&(end=this.length),end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");return new Buffer(this,end-start,+start)},SlowBuffer.prototype.copy=function(target,targetstart,sourcestart,sourceend){for(var temp=[],i=sourcestart;sourceend>i;i++)assert.ok(this[i]!==void 0,\"copying undefined buffer bytes!\"),temp.push(this[i]);for(var i=targetstart;targetstart+temp.length>i;i++)target[i]=temp[i-targetstart]},exports.SlowBuffer=SlowBuffer,exports.Buffer=Buffer,Buffer.poolSize=8192;var pool;Buffer.isBuffer=function(b){return b instanceof Buffer||b instanceof SlowBuffer},Buffer.concat=function(list,totalLength){if(!Array.isArray(list))throw Error(\"Usage: Buffer.concat(list, [totalLength])\\n list should be an Array.\");if(0===list.length)return new Buffer(0);if(1===list.length)return list[0];if(\"number\"!=typeof totalLength){totalLength=0;for(var i=0;list.length>i;i++){var buf=list[i];totalLength+=buf.length}}for(var buffer=new Buffer(totalLength),pos=0,i=0;list.length>i;i++){var buf=list[i];buf.copy(buffer,pos),pos+=buf.length}return buffer},Buffer.prototype.inspect=function(){for(var out=[],len=this.length,i=0;len>i;i++)if(out[i]=toHex(this.parent[i+this.offset]),i==exports.INSPECT_MAX_BYTES){out[i+1]=\"...\";break}return\"\u003CBuffer \"+out.join(\" \")+\">\"},Buffer.prototype.get=function(i){if(0>i||i>=this.length)throw Error(\"oob\");return this.parent[this.offset+i]},Buffer.prototype.set=function(i,v){if(0>i||i>=this.length)throw Error(\"oob\");return this.parent[this.offset+i]=v},Buffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset))isFinite(length)||(encoding=length,length=void 0);else{var swap=encoding;encoding=offset,offset=length,length=swap}offset=+offset||0;var remaining=this.length-offset;length?(length=+length,length>remaining&&(length=remaining)):length=remaining,encoding=((encoding||\"utf8\")+\"\").toLowerCase();var ret;switch(encoding){case\"hex\":ret=this.parent.hexWrite(string,this.offset+offset,length);break;case\"utf8\":case\"utf-8\":ret=this.parent.utf8Write(string,this.offset+offset,length);break;case\"ascii\":ret=this.parent.asciiWrite(string,this.offset+offset,length);break;case\"binary\":ret=this.parent.binaryWrite(string,this.offset+offset,length);break;case\"base64\":ret=this.parent.base64Write(string,this.offset+offset,length);break;case\"ucs2\":case\"ucs-2\":ret=this.parent.ucs2Write(string,this.offset+offset,length);break;default:throw Error(\"Unknown encoding\")}return Buffer._charsWritten=SlowBuffer._charsWritten,ret},Buffer.prototype.toString=function(encoding,start,end){switch(encoding=((encoding||\"utf8\")+\"\").toLowerCase(),start===void 0||0>start?start=0:start>this.length&&(start=this.length),end===void 0||end>this.length?end=this.length:0>end&&(end=0),start+=this.offset,end+=this.offset,encoding){case\"hex\":return this.parent.hexSlice(start,end);case\"utf8\":case\"utf-8\":return this.parent.utf8Slice(start,end);case\"ascii\":return this.parent.asciiSlice(start,end);case\"binary\":return this.parent.binarySlice(start,end);case\"base64\":return this.parent.base64Slice(start,end);case\"ucs2\":case\"ucs-2\":return this.parent.ucs2Slice(start,end);default:throw Error(\"Unknown encoding\")}},Buffer.byteLength=SlowBuffer.byteLength,Buffer.prototype.fill=function(value,start,end){if(value||(value=0),start||(start=0),end||(end=this.length),\"string\"==typeof value&&(value=value.charCodeAt(0)),\"number\"!=typeof value||isNaN(value))throw Error(\"value is not a number\");if(start>end)throw Error(\"end \u003C start\");if(end===start)return 0;if(0==this.length)return 0;if(0>start||start>=this.length)throw Error(\"start out of bounds\");if(0>end||end>this.length)throw Error(\"end out of bounds\");return this.parent.fill(value,start+this.offset,end+this.offset)},Buffer.prototype.copy=function(target,target_start,start,end){var source=this;if(start||(start=0),end||(end=this.length),target_start||(target_start=0),start>end)throw Error(\"sourceEnd \u003C sourceStart\");if(end===start)return 0;if(0==target.length||0==source.length)return 0;if(0>target_start||target_start>=target.length)throw Error(\"targetStart out of bounds\");if(0>start||start>=source.length)throw Error(\"sourceStart out of bounds\");if(0>end||end>source.length)throw Error(\"sourceEnd out of bounds\");return end>this.length&&(end=this.length),end-start>target.length-target_start&&(end=target.length-target_start+start),this.parent.copy(target.parent,target_start+target.offset,start+this.offset,end+this.offset)},Buffer.prototype.slice=function(start,end){if(void 0===end&&(end=this.length),end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");return new Buffer(this.parent,end-start,+start+this.offset)},Buffer.prototype.utf8Slice=function(start,end){return this.toString(\"utf8\",start,end)},Buffer.prototype.binarySlice=function(start,end){return this.toString(\"binary\",start,end)},Buffer.prototype.asciiSlice=function(start,end){return this.toString(\"ascii\",start,end)},Buffer.prototype.utf8Write=function(string,offset){return this.write(string,offset,\"utf8\")},Buffer.prototype.binaryWrite=function(string,offset){return this.write(string,offset,\"binary\")},Buffer.prototype.asciiWrite=function(string,offset){return this.write(string,offset,\"ascii\")},Buffer.prototype.readUInt8=function(offset,noAssert){var buffer=this;return noAssert||(assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to read beyond buffer length\")),buffer.parent[buffer.offset+offset]},Buffer.prototype.readUInt16LE=function(offset,noAssert){return readUInt16(this,offset,!1,noAssert)},Buffer.prototype.readUInt16BE=function(offset,noAssert){return readUInt16(this,offset,!0,noAssert)},Buffer.prototype.readUInt32LE=function(offset,noAssert){return readUInt32(this,offset,!1,noAssert)},Buffer.prototype.readUInt32BE=function(offset,noAssert){return readUInt32(this,offset,!0,noAssert)},Buffer.prototype.readInt8=function(offset,noAssert){var neg,buffer=this;return noAssert||(assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to read beyond buffer length\")),neg=128&buffer.parent[buffer.offset+offset],neg?-1*(255-buffer.parent[buffer.offset+offset]+1):buffer.parent[buffer.offset+offset]},Buffer.prototype.readInt16LE=function(offset,noAssert){return readInt16(this,offset,!1,noAssert)},Buffer.prototype.readInt16BE=function(offset,noAssert){return readInt16(this,offset,!0,noAssert)},Buffer.prototype.readInt32LE=function(offset,noAssert){return readInt32(this,offset,!1,noAssert)},Buffer.prototype.readInt32BE=function(offset,noAssert){return readInt32(this,offset,!0,noAssert)},Buffer.prototype.readFloatLE=function(offset,noAssert){return readFloat(this,offset,!1,noAssert)},Buffer.prototype.readFloatBE=function(offset,noAssert){return readFloat(this,offset,!0,noAssert)},Buffer.prototype.readDoubleLE=function(offset,noAssert){return readDouble(this,offset,!1,noAssert)},Buffer.prototype.readDoubleBE=function(offset,noAssert){return readDouble(this,offset,!0,noAssert)},Buffer.prototype.writeUInt8=function(value,offset,noAssert){var buffer=this;noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"trying to write beyond buffer length\"),verifuint(value,255)),buffer.parent[buffer.offset+offset]=value},Buffer.prototype.writeUInt16LE=function(value,offset,noAssert){writeUInt16(this,value,offset,!1,noAssert)},Buffer.prototype.writeUInt16BE=function(value,offset,noAssert){writeUInt16(this,value,offset,!0,noAssert)},Buffer.prototype.writeUInt32LE=function(value,offset,noAssert){writeUInt32(this,value,offset,!1,noAssert)},Buffer.prototype.writeUInt32BE=function(value,offset,noAssert){writeUInt32(this,value,offset,!0,noAssert)},Buffer.prototype.writeInt8=function(value,offset,noAssert){var buffer=this;noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to write beyond buffer length\"),verifsint(value,127,-128)),value>=0?buffer.writeUInt8(value,offset,noAssert):buffer.writeUInt8(255+value+1,offset,noAssert)},Buffer.prototype.writeInt16LE=function(value,offset,noAssert){writeInt16(this,value,offset,!1,noAssert)},Buffer.prototype.writeInt16BE=function(value,offset,noAssert){writeInt16(this,value,offset,!0,noAssert)},Buffer.prototype.writeInt32LE=function(value,offset,noAssert){writeInt32(this,value,offset,!1,noAssert)},Buffer.prototype.writeInt32BE=function(value,offset,noAssert){writeInt32(this,value,offset,!0,noAssert)},Buffer.prototype.writeFloatLE=function(value,offset,noAssert){writeFloat(this,value,offset,!1,noAssert)},Buffer.prototype.writeFloatBE=function(value,offset,noAssert){writeFloat(this,value,offset,!0,noAssert)},Buffer.prototype.writeDoubleLE=function(value,offset,noAssert){writeDouble(this,value,offset,!1,noAssert)},Buffer.prototype.writeDoubleBE=function(value,offset,noAssert){writeDouble(this,value,offset,!0,noAssert)},SlowBuffer.prototype.readUInt8=Buffer.prototype.readUInt8,SlowBuffer.prototype.readUInt16LE=Buffer.prototype.readUInt16LE,SlowBuffer.prototype.readUInt16BE=Buffer.prototype.readUInt16BE,SlowBuffer.prototype.readUInt32LE=Buffer.prototype.readUInt32LE,SlowBuffer.prototype.readUInt32BE=Buffer.prototype.readUInt32BE,SlowBuffer.prototype.readInt8=Buffer.prototype.readInt8,SlowBuffer.prototype.readInt16LE=Buffer.prototype.readInt16LE,SlowBuffer.prototype.readInt16BE=Buffer.prototype.readInt16BE,SlowBuffer.prototype.readInt32LE=Buffer.prototype.readInt32LE,SlowBuffer.prototype.readInt32BE=Buffer.prototype.readInt32BE,SlowBuffer.prototype.readFloatLE=Buffer.prototype.readFloatLE,SlowBuffer.prototype.readFloatBE=Buffer.prototype.readFloatBE,SlowBuffer.prototype.readDoubleLE=Buffer.prototype.readDoubleLE,SlowBuffer.prototype.readDoubleBE=Buffer.prototype.readDoubleBE,SlowBuffer.prototype.writeUInt8=Buffer.prototype.writeUInt8,SlowBuffer.prototype.writeUInt16LE=Buffer.prototype.writeUInt16LE,SlowBuffer.prototype.writeUInt16BE=Buffer.prototype.writeUInt16BE,SlowBuffer.prototype.writeUInt32LE=Buffer.prototype.writeUInt32LE,SlowBuffer.prototype.writeUInt32BE=Buffer.prototype.writeUInt32BE,SlowBuffer.prototype.writeInt8=Buffer.prototype.writeInt8,SlowBuffer.prototype.writeInt16LE=Buffer.prototype.writeInt16LE,SlowBuffer.prototype.writeInt16BE=Buffer.prototype.writeInt16BE,SlowBuffer.prototype.writeInt32LE=Buffer.prototype.writeInt32LE,SlowBuffer.prototype.writeInt32BE=Buffer.prototype.writeInt32BE,SlowBuffer.prototype.writeFloatLE=Buffer.prototype.writeFloatLE,SlowBuffer.prototype.writeFloatBE=Buffer.prototype.writeFloatBE,SlowBuffer.prototype.writeDoubleLE=Buffer.prototype.writeDoubleLE,SlowBuffer.prototype.writeDoubleBE=Buffer.prototype.writeDoubleBE})()},{assert:2,\"./buffer_ieee754\":7,\"base64-js\":9}],9:[function(require,module){(function(){\"use strict\";function b64ToByteArray(b64){var i,j,l,tmp,placeHolders,arr;if(b64.length%4>0)throw\"Invalid string. Length must be a multiple of 4\";for(placeHolders=b64.indexOf(\"=\"),placeHolders=placeHolders>0?b64.length-placeHolders:0,arr=[],l=placeHolders>0?b64.length-4:b64.length,i=0,j=0;l>i;i+=4,j+=3)tmp=lookup.indexOf(b64[i])\u003C\u003C18|lookup.indexOf(b64[i+1])\u003C\u003C12|lookup.indexOf(b64[i+2])\u003C\u003C6|lookup.indexOf(b64[i+3]),arr.push((16711680&tmp)>>16),arr.push((65280&tmp)>>8),arr.push(255&tmp);return 2===placeHolders?(tmp=lookup.indexOf(b64[i])\u003C\u003C2|lookup.indexOf(b64[i+1])>>4,arr.push(255&tmp)):1===placeHolders&&(tmp=lookup.indexOf(b64[i])\u003C\u003C10|lookup.indexOf(b64[i+1])\u003C\u003C4|lookup.indexOf(b64[i+2])>>2,arr.push(255&tmp>>8),arr.push(255&tmp)),arr}function uint8ToBase64(uint8){function tripletToBase64(num){return lookup[63&num>>18]+lookup[63&num>>12]+lookup[63&num>>6]+lookup[63&num]}var i,temp,length,extraBytes=uint8.length%3,output=\"\";for(i=0,length=uint8.length-extraBytes;length>i;i+=3)temp=(uint8[i]\u003C\u003C16)+(uint8[i+1]\u003C\u003C8)+uint8[i+2],output+=tripletToBase64(temp);switch(extraBytes){case 1:temp=uint8[uint8.length-1],output+=lookup[temp>>2],output+=lookup[63&temp\u003C\u003C4],output+=\"==\";break;case 2:temp=(uint8[uint8.length-2]\u003C\u003C8)+uint8[uint8.length-1],output+=lookup[temp>>10],output+=lookup[63&temp>>4],output+=lookup[63&temp\u003C\u003C2],output+=\"=\"}return output}var lookup=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";module.exports.toByteArray=b64ToByteArray,module.exports.fromByteArray=uint8ToBase64})()},{}]},{},[]),module.exports=require(\"buffer-browserify\")},{}],67:[function(require,module){(function(Buffer){function clone(parent,circular){function _clone(parent,context,child,cIndex){var i;if(\"object\"==typeof parent){if(null==parent)return parent;for(i in circularParent)if(circularParent[i]===parent)return circularReplace.push({resolveTo:i,child:child,i:cIndex}),null;if(circularParent[context]=parent,util.isArray(parent)){child=[];for(i in parent)child[i]=_clone(parent[i],context+\"[\"+i+\"]\",child,i)}else if(util.isDate(parent))child=new Date(parent.getTime());else if(util.isRegExp(parent))child=RegExp(parent.source);else if(useBuffer&&Buffer.isBuffer(parent))child=new Buffer(parent.length),parent.copy(child);else{child={},child.__proto__=parent.__proto__;for(i in parent)child[i]=_clone(parent[i],context+\"[\"+i+\"]\",child,i)}circularResolved[context]=child}else child=parent;return child}circular===void 0&&(circular=!0);var i,useBuffer=Buffer!==void 0;if(circular){var circularParent={},circularResolved={},circularReplace=[],cloned=_clone(parent,\"*\");for(i in circularReplace){var c=circularReplace[i];c&&c.child&&c.i in c.child&&(c.child[c.i]=circularResolved[c.resolveTo])}return cloned}var child;if(\"object\"==typeof parent){if(null==parent)return parent;if(\"Array\"===parent.constructor.name){child=[];for(i in parent)child[i]=clone(parent[i],circular)}else if(util.isDate(parent))child=new Date(parent.getTime());else if(util.isRegExp(parent))child=RegExp(parent.source);else{child={},child.__proto__=parent.__proto__;for(i in parent)child[i]=clone(parent[i],circular)}}else child=parent;return child}var util=require(\"util\");module.exports=clone,clone.clonePrototype=require(\"./clonePrototype.js\")})(require(\"__browserify_buffer\").Buffer)},{util:6,\"./clonePrototype.js\":78,__browserify_buffer:77}],71:[function(require,module,exports){(function(){function SlowBuffer(size){this.length=size}function toHex(n){return 16>n?\"0\"+n.toString(16):n.toString(16)}function utf8ToBytes(str){for(var byteArray=[],i=0;str.length>i;i++)if(127>=str.charCodeAt(i))byteArray.push(str.charCodeAt(i));else for(var h=encodeURIComponent(str.charAt(i)).substr(1).split(\"%\"),j=0;h.length>j;j++)byteArray.push(parseInt(h[j],16));return byteArray}function asciiToBytes(str){for(var byteArray=[],i=0;str.length>i;i++)byteArray.push(255&str.charCodeAt(i));return byteArray}function base64ToBytes(str){return require(\"base64-js\").toByteArray(str)}function blitBuffer(src,dst,offset,length){for(var i=0;length>i&&!(i+offset>=dst.length||i>=src.length);)dst[i+offset]=src[i],i++;return i}function decodeUtf8Char(str){try{return decodeURIComponent(str)}catch(err){return String.fromCharCode(65533)}}function coerce(length){return length=~~Math.ceil(+length),0>length?0:length}function Buffer(subject,encoding,offset){if(!(this instanceof Buffer))return new Buffer(subject,encoding,offset);var type;if(\"number\"==typeof offset)this.length=coerce(encoding),this.parent=subject,this.offset=offset;else{switch(type=typeof subject){case\"number\":this.length=coerce(subject);break;case\"string\":this.length=Buffer.byteLength(subject,encoding);break;case\"object\":this.length=coerce(subject.length);break;default:throw Error(\"First argument needs to be a number, array or string.\")}if(this.length>Buffer.poolSize?(this.parent=new SlowBuffer(this.length),this.offset=0):((!pool||pool.length-pool.used\u003Cthis.length)&&allocPool(),this.parent=pool,this.offset=pool.used,pool.used+=this.length),isArrayIsh(subject))for(var i=0;this.length>i;i++)this.parent[i+this.offset]=subject instanceof Buffer?subject.readUInt8(i):subject[i];else\"string\"==type&&(this.length=this.write(subject,0,encoding))}}function isArrayIsh(subject){return Array.isArray(subject)||Buffer.isBuffer(subject)||subject&&\"object\"==typeof subject&&\"number\"==typeof subject.length}function allocPool(){pool=new SlowBuffer(Buffer.poolSize),pool.used=0}function readUInt16(buffer,offset,isBigEndian,noAssert){var val=0;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to read beyond buffer length\")),offset>=buffer.length?0:(isBigEndian?(val=buffer.parent[buffer.offset+offset]\u003C\u003C8,buffer.length>offset+1&&(val|=buffer.parent[buffer.offset+offset+1])):(val=buffer.parent[buffer.offset+offset],buffer.length>offset+1&&(val|=buffer.parent[buffer.offset+offset+1]\u003C\u003C8)),val)}function readUInt32(buffer,offset,isBigEndian,noAssert){var val=0;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),offset>=buffer.length?0:(isBigEndian?(buffer.length>offset+1&&(val=buffer.parent[buffer.offset+offset+1]\u003C\u003C16),buffer.length>offset+2&&(val|=buffer.parent[buffer.offset+offset+2]\u003C\u003C8),buffer.length>offset+3&&(val|=buffer.parent[buffer.offset+offset+3]),val+=buffer.parent[buffer.offset+offset]\u003C\u003C24>>>0):(buffer.length>offset+2&&(val=buffer.parent[buffer.offset+offset+2]\u003C\u003C16),buffer.length>offset+1&&(val|=buffer.parent[buffer.offset+offset+1]\u003C\u003C8),val|=buffer.parent[buffer.offset+offset],buffer.length>offset+3&&(val+=buffer.parent[buffer.offset+offset+3]\u003C\u003C24>>>0)),val)}function readInt16(buffer,offset,isBigEndian,noAssert){var neg,val;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to read beyond buffer length\")),val=readUInt16(buffer,offset,isBigEndian,noAssert),neg=32768&val,neg?-1*(65535-val+1):val}function readInt32(buffer,offset,isBigEndian,noAssert){var neg,val;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),val=readUInt32(buffer,offset,isBigEndian,noAssert),neg=2147483648&val,neg?-1*(4294967295-val+1):val}function readFloat(buffer,offset,isBigEndian,noAssert){return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),require(\"./buffer_ieee754\").readIEEE754(buffer,offset,isBigEndian,23,4)}function readDouble(buffer,offset,isBigEndian,noAssert){return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(buffer.length>offset+7,\"Trying to read beyond buffer length\")),require(\"./buffer_ieee754\").readIEEE754(buffer,offset,isBigEndian,52,8)}function verifuint(value,max){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(value>=0,\"specified a negative value for writing an unsigned value\"),assert.ok(max>=value,\"value is larger than maximum value for type\"),assert.ok(Math.floor(value)===value,\"value has a fractional component\")}function writeUInt16(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"trying to write beyond buffer length\"),verifuint(value,65535));for(var i=0;Math.min(buffer.length-offset,2)>i;i++)buffer.parent[buffer.offset+offset+i]=(value&255\u003C\u003C8*(isBigEndian?1-i:i))>>>8*(isBigEndian?1-i:i)}function writeUInt32(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"trying to write beyond buffer length\"),verifuint(value,4294967295));for(var i=0;Math.min(buffer.length-offset,4)>i;i++)buffer.parent[buffer.offset+offset+i]=255&value>>>8*(isBigEndian?3-i:i)}function verifsint(value,max,min){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(max>=value,\"value larger than maximum allowed value\"),assert.ok(value>=min,\"value smaller than minimum allowed value\"),assert.ok(Math.floor(value)===value,\"value has a fractional component\")}function verifIEEE754(value,max,min){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(max>=value,\"value larger than maximum allowed value\"),assert.ok(value>=min,\"value smaller than minimum allowed value\")}function writeInt16(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to write beyond buffer length\"),verifsint(value,32767,-32768)),value>=0?writeUInt16(buffer,value,offset,isBigEndian,noAssert):writeUInt16(buffer,65535+value+1,offset,isBigEndian,noAssert)}function writeInt32(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to write beyond buffer length\"),verifsint(value,2147483647,-2147483648)),value>=0?writeUInt32(buffer,value,offset,isBigEndian,noAssert):writeUInt32(buffer,4294967295+value+1,offset,isBigEndian,noAssert)}function writeFloat(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to write beyond buffer length\"),verifIEEE754(value,3.4028234663852886e38,-3.4028234663852886e38)),require(\"./buffer_ieee754\").writeIEEE754(buffer,value,offset,isBigEndian,23,4)}function writeDouble(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+7,\"Trying to write beyond buffer length\"),verifIEEE754(value,1.7976931348623157e308,-1.7976931348623157e308)),require(\"./buffer_ieee754\").writeIEEE754(buffer,value,offset,isBigEndian,52,8)}var assert=require(\"assert\");exports.INSPECT_MAX_BYTES=50,SlowBuffer.byteLength=function(str,encoding){switch(encoding||\"utf8\"){case\"hex\":return str.length/2;case\"utf8\":case\"utf-8\":return utf8ToBytes(str).length;case\"ascii\":case\"binary\":return str.length;case\"base64\":return base64ToBytes(str).length;default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.utf8Write=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(utf8ToBytes(string),this,offset,length)},SlowBuffer.prototype.asciiWrite=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(asciiToBytes(string),this,offset,length)},SlowBuffer.prototype.binaryWrite=SlowBuffer.prototype.asciiWrite,SlowBuffer.prototype.base64Write=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(base64ToBytes(string),this,offset,length)},SlowBuffer.prototype.base64Slice=function(){var bytes=Array.prototype.slice.apply(this,arguments);return require(\"base64-js\").fromByteArray(bytes)},SlowBuffer.prototype.utf8Slice=function(){for(var bytes=Array.prototype.slice.apply(this,arguments),res=\"\",tmp=\"\",i=0;bytes.length>i;)127>=bytes[i]?(res+=decodeUtf8Char(tmp)+String.fromCharCode(bytes[i]),tmp=\"\"):tmp+=\"%\"+bytes[i].toString(16),i++;return res+decodeUtf8Char(tmp)},SlowBuffer.prototype.asciiSlice=function(){for(var bytes=Array.prototype.slice.apply(this,arguments),ret=\"\",i=0;bytes.length>i;i++)ret+=String.fromCharCode(bytes[i]);return ret},SlowBuffer.prototype.binarySlice=SlowBuffer.prototype.asciiSlice,SlowBuffer.prototype.inspect=function(){for(var out=[],len=this.length,i=0;len>i;i++)if(out[i]=toHex(this[i]),i==exports.INSPECT_MAX_BYTES){out[i+1]=\"...\";break}return\"\u003CSlowBuffer \"+out.join(\" \")+\">\"},SlowBuffer.prototype.hexSlice=function(start,end){var len=this.length;(!start||0>start)&&(start=0),(!end||0>end||end>len)&&(end=len);for(var out=\"\",i=start;end>i;i++)out+=toHex(this[i]);return out},SlowBuffer.prototype.toString=function(encoding,start,end){if(encoding=((encoding||\"utf8\")+\"\").toLowerCase(),start=+start||0,end===void 0&&(end=this.length),+end==start)return\"\";switch(encoding){case\"hex\":return this.hexSlice(start,end);case\"utf8\":case\"utf-8\":return this.utf8Slice(start,end);case\"ascii\":return this.asciiSlice(start,end);case\"binary\":return this.binarySlice(start,end);case\"base64\":return this.base64Slice(start,end);case\"ucs2\":case\"ucs-2\":return this.ucs2Slice(start,end);default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.hexWrite=function(string,offset,length){offset=+offset||0;var remaining=this.length-offset;length?(length=+length,length>remaining&&(length=remaining)):length=remaining;var strLen=string.length;if(strLen%2)throw Error(\"Invalid hex string\");length>strLen/2&&(length=strLen/2);for(var i=0;length>i;i++){var byte=parseInt(string.substr(2*i,2),16);if(isNaN(byte))throw Error(\"Invalid hex string\");this[offset+i]=byte}return SlowBuffer._charsWritten=2*i,i},SlowBuffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset))isFinite(length)||(encoding=length,length=void 0);else{var swap=encoding;encoding=offset,offset=length,length=swap}offset=+offset||0;var remaining=this.length-offset;switch(length?(length=+length,length>remaining&&(length=remaining)):length=remaining,encoding=((encoding||\"utf8\")+\"\").toLowerCase()){case\"hex\":return this.hexWrite(string,offset,length);case\"utf8\":case\"utf-8\":return this.utf8Write(string,offset,length);case\"ascii\":return this.asciiWrite(string,offset,length);case\"binary\":return this.binaryWrite(string,offset,length);case\"base64\":return this.base64Write(string,offset,length);case\"ucs2\":case\"ucs-2\":return this.ucs2Write(string,offset,length);default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.slice=function(start,end){if(void 0===end&&(end=this.length),end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");return new Buffer(this,end-start,+start)},SlowBuffer.prototype.copy=function(target,targetstart,sourcestart,sourceend){for(var temp=[],i=sourcestart;sourceend>i;i++)assert.ok(this[i]!==void 0,\"copying undefined buffer bytes!\"),temp.push(this[i]);for(var i=targetstart;targetstart+temp.length>i;i++)target[i]=temp[i-targetstart]},SlowBuffer.prototype.fill=function(value,start,end){if(end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");for(var i=start;end>i;i++)this[i]=value},exports.SlowBuffer=SlowBuffer,exports.Buffer=Buffer,Buffer.poolSize=8192;var pool;Buffer.isBuffer=function(b){return b instanceof Buffer||b instanceof SlowBuffer},Buffer.concat=function(list,totalLength){if(!Array.isArray(list))throw Error(\"Usage: Buffer.concat(list, [totalLength])\\n list should be an Array.\");if(0===list.length)return new Buffer(0);if(1===list.length)return list[0];if(\"number\"!=typeof totalLength){totalLength=0;for(var i=0;list.length>i;i++){var buf=list[i];totalLength+=buf.length}}for(var buffer=new Buffer(totalLength),pos=0,i=0;list.length>i;i++){var buf=list[i];buf.copy(buffer,pos),pos+=buf.length}return buffer},Buffer.prototype.inspect=function(){for(var out=[],len=this.length,i=0;len>i;i++)if(out[i]=toHex(this.parent[i+this.offset]),i==exports.INSPECT_MAX_BYTES){out[i+1]=\"...\";break}return\"\u003CBuffer \"+out.join(\" \")+\">\"},Buffer.prototype.get=function(i){if(0>i||i>=this.length)throw Error(\"oob\");return this.parent[this.offset+i]},Buffer.prototype.set=function(i,v){if(0>i||i>=this.length)throw Error(\"oob\");return this.parent[this.offset+i]=v},Buffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset))isFinite(length)||(encoding=length,length=void 0);else{var swap=encoding;encoding=offset,offset=length,length=swap}offset=+offset||0;var remaining=this.length-offset;length?(length=+length,length>remaining&&(length=remaining)):length=remaining,encoding=((encoding||\"utf8\")+\"\").toLowerCase();var ret;switch(encoding){case\"hex\":ret=this.parent.hexWrite(string,this.offset+offset,length);break;case\"utf8\":case\"utf-8\":ret=this.parent.utf8Write(string,this.offset+offset,length);break;case\"ascii\":ret=this.parent.asciiWrite(string,this.offset+offset,length);break;case\"binary\":ret=this.parent.binaryWrite(string,this.offset+offset,length);break;case\"base64\":ret=this.parent.base64Write(string,this.offset+offset,length);break;case\"ucs2\":case\"ucs-2\":ret=this.parent.ucs2Write(string,this.offset+offset,length);break;default:throw Error(\"Unknown encoding\")}return Buffer._charsWritten=SlowBuffer._charsWritten,ret},Buffer.prototype.toString=function(encoding,start,end){switch(encoding=((encoding||\"utf8\")+\"\").toLowerCase(),start===void 0||0>start?start=0:start>this.length&&(start=this.length),end===void 0||end>this.length?end=this.length:0>end&&(end=0),start+=this.offset,end+=this.offset,encoding){case\"hex\":return this.parent.hexSlice(start,end);case\"utf8\":case\"utf-8\":return this.parent.utf8Slice(start,end);case\"ascii\":return this.parent.asciiSlice(start,end);case\"binary\":return this.parent.binarySlice(start,end);case\"base64\":return this.parent.base64Slice(start,end);case\"ucs2\":case\"ucs-2\":return this.parent.ucs2Slice(start,end);default:throw Error(\"Unknown encoding\")}},Buffer.byteLength=SlowBuffer.byteLength,Buffer.prototype.fill=function(value,start,end){if(value||(value=0),start||(start=0),end||(end=this.length),\"string\"==typeof value&&(value=value.charCodeAt(0)),\"number\"!=typeof value||isNaN(value))throw Error(\"value is not a number\");if(start>end)throw Error(\"end \u003C start\");if(end===start)return 0;if(0==this.length)return 0;if(0>start||start>=this.length)throw Error(\"start out of bounds\");\nif(0>end||end>this.length)throw Error(\"end out of bounds\");return this.parent.fill(value,start+this.offset,end+this.offset)},Buffer.prototype.copy=function(target,target_start,start,end){var source=this;if(start||(start=0),end||(end=this.length),target_start||(target_start=0),start>end)throw Error(\"sourceEnd \u003C sourceStart\");if(end===start)return 0;if(0==target.length||0==source.length)return 0;if(0>target_start||target_start>=target.length)throw Error(\"targetStart out of bounds\");if(0>start||start>=source.length)throw Error(\"sourceStart out of bounds\");if(0>end||end>source.length)throw Error(\"sourceEnd out of bounds\");return end>this.length&&(end=this.length),end-start>target.length-target_start&&(end=target.length-target_start+start),this.parent.copy(target.parent,target_start+target.offset,start+this.offset,end+this.offset)},Buffer.prototype.slice=function(start,end){if(void 0===end&&(end=this.length),end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");return new Buffer(this.parent,end-start,+start+this.offset)},Buffer.prototype.utf8Slice=function(start,end){return this.toString(\"utf8\",start,end)},Buffer.prototype.binarySlice=function(start,end){return this.toString(\"binary\",start,end)},Buffer.prototype.asciiSlice=function(start,end){return this.toString(\"ascii\",start,end)},Buffer.prototype.utf8Write=function(string,offset){return this.write(string,offset,\"utf8\")},Buffer.prototype.binaryWrite=function(string,offset){return this.write(string,offset,\"binary\")},Buffer.prototype.asciiWrite=function(string,offset){return this.write(string,offset,\"ascii\")},Buffer.prototype.readUInt8=function(offset,noAssert){var buffer=this;return noAssert||(assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to read beyond buffer length\")),offset>=buffer.length?void 0:buffer.parent[buffer.offset+offset]},Buffer.prototype.readUInt16LE=function(offset,noAssert){return readUInt16(this,offset,!1,noAssert)},Buffer.prototype.readUInt16BE=function(offset,noAssert){return readUInt16(this,offset,!0,noAssert)},Buffer.prototype.readUInt32LE=function(offset,noAssert){return readUInt32(this,offset,!1,noAssert)},Buffer.prototype.readUInt32BE=function(offset,noAssert){return readUInt32(this,offset,!0,noAssert)},Buffer.prototype.readInt8=function(offset,noAssert){var neg,buffer=this;return noAssert||(assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to read beyond buffer length\")),offset>=buffer.length?void 0:(neg=128&buffer.parent[buffer.offset+offset],neg?-1*(255-buffer.parent[buffer.offset+offset]+1):buffer.parent[buffer.offset+offset])},Buffer.prototype.readInt16LE=function(offset,noAssert){return readInt16(this,offset,!1,noAssert)},Buffer.prototype.readInt16BE=function(offset,noAssert){return readInt16(this,offset,!0,noAssert)},Buffer.prototype.readInt32LE=function(offset,noAssert){return readInt32(this,offset,!1,noAssert)},Buffer.prototype.readInt32BE=function(offset,noAssert){return readInt32(this,offset,!0,noAssert)},Buffer.prototype.readFloatLE=function(offset,noAssert){return readFloat(this,offset,!1,noAssert)},Buffer.prototype.readFloatBE=function(offset,noAssert){return readFloat(this,offset,!0,noAssert)},Buffer.prototype.readDoubleLE=function(offset,noAssert){return readDouble(this,offset,!1,noAssert)},Buffer.prototype.readDoubleBE=function(offset,noAssert){return readDouble(this,offset,!0,noAssert)},Buffer.prototype.writeUInt8=function(value,offset,noAssert){var buffer=this;noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"trying to write beyond buffer length\"),verifuint(value,255)),buffer.length>offset&&(buffer.parent[buffer.offset+offset]=value)},Buffer.prototype.writeUInt16LE=function(value,offset,noAssert){writeUInt16(this,value,offset,!1,noAssert)},Buffer.prototype.writeUInt16BE=function(value,offset,noAssert){writeUInt16(this,value,offset,!0,noAssert)},Buffer.prototype.writeUInt32LE=function(value,offset,noAssert){writeUInt32(this,value,offset,!1,noAssert)},Buffer.prototype.writeUInt32BE=function(value,offset,noAssert){writeUInt32(this,value,offset,!0,noAssert)},Buffer.prototype.writeInt8=function(value,offset,noAssert){var buffer=this;noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to write beyond buffer length\"),verifsint(value,127,-128)),value>=0?buffer.writeUInt8(value,offset,noAssert):buffer.writeUInt8(255+value+1,offset,noAssert)},Buffer.prototype.writeInt16LE=function(value,offset,noAssert){writeInt16(this,value,offset,!1,noAssert)},Buffer.prototype.writeInt16BE=function(value,offset,noAssert){writeInt16(this,value,offset,!0,noAssert)},Buffer.prototype.writeInt32LE=function(value,offset,noAssert){writeInt32(this,value,offset,!1,noAssert)},Buffer.prototype.writeInt32BE=function(value,offset,noAssert){writeInt32(this,value,offset,!0,noAssert)},Buffer.prototype.writeFloatLE=function(value,offset,noAssert){writeFloat(this,value,offset,!1,noAssert)},Buffer.prototype.writeFloatBE=function(value,offset,noAssert){writeFloat(this,value,offset,!0,noAssert)},Buffer.prototype.writeDoubleLE=function(value,offset,noAssert){writeDouble(this,value,offset,!1,noAssert)},Buffer.prototype.writeDoubleBE=function(value,offset,noAssert){writeDouble(this,value,offset,!0,noAssert)},SlowBuffer.prototype.readUInt8=Buffer.prototype.readUInt8,SlowBuffer.prototype.readUInt16LE=Buffer.prototype.readUInt16LE,SlowBuffer.prototype.readUInt16BE=Buffer.prototype.readUInt16BE,SlowBuffer.prototype.readUInt32LE=Buffer.prototype.readUInt32LE,SlowBuffer.prototype.readUInt32BE=Buffer.prototype.readUInt32BE,SlowBuffer.prototype.readInt8=Buffer.prototype.readInt8,SlowBuffer.prototype.readInt16LE=Buffer.prototype.readInt16LE,SlowBuffer.prototype.readInt16BE=Buffer.prototype.readInt16BE,SlowBuffer.prototype.readInt32LE=Buffer.prototype.readInt32LE,SlowBuffer.prototype.readInt32BE=Buffer.prototype.readInt32BE,SlowBuffer.prototype.readFloatLE=Buffer.prototype.readFloatLE,SlowBuffer.prototype.readFloatBE=Buffer.prototype.readFloatBE,SlowBuffer.prototype.readDoubleLE=Buffer.prototype.readDoubleLE,SlowBuffer.prototype.readDoubleBE=Buffer.prototype.readDoubleBE,SlowBuffer.prototype.writeUInt8=Buffer.prototype.writeUInt8,SlowBuffer.prototype.writeUInt16LE=Buffer.prototype.writeUInt16LE,SlowBuffer.prototype.writeUInt16BE=Buffer.prototype.writeUInt16BE,SlowBuffer.prototype.writeUInt32LE=Buffer.prototype.writeUInt32LE,SlowBuffer.prototype.writeUInt32BE=Buffer.prototype.writeUInt32BE,SlowBuffer.prototype.writeInt8=Buffer.prototype.writeInt8,SlowBuffer.prototype.writeInt16LE=Buffer.prototype.writeInt16LE,SlowBuffer.prototype.writeInt16BE=Buffer.prototype.writeInt16BE,SlowBuffer.prototype.writeInt32LE=Buffer.prototype.writeInt32LE,SlowBuffer.prototype.writeInt32BE=Buffer.prototype.writeInt32BE,SlowBuffer.prototype.writeFloatLE=Buffer.prototype.writeFloatLE,SlowBuffer.prototype.writeFloatBE=Buffer.prototype.writeFloatBE,SlowBuffer.prototype.writeDoubleLE=Buffer.prototype.writeDoubleLE,SlowBuffer.prototype.writeDoubleBE=Buffer.prototype.writeDoubleBE})()},{assert:73,\"./buffer_ieee754\":75,\"base64-js\":79}],72:[function(require,module){\"use strict\";function newlinesIn(src){if(!src)return 0;var newlines=src.match(/\\n/g);return newlines?newlines.length:0}var difflet=require(\"difflet\"),prettydiff=difflet({comment:!0,indent:2}),compactdiff=difflet({comment:!0});module.exports=function(before,after,opts){opts=opts||{};var joinLinesAt=opts.joinLinesAt||20,maxLineLength=opts.maxLineLength||380,result=prettydiff.compare(before,after);return newlinesIn(result)>=joinLinesAt&&(result=compactdiff.compare(before,after)),result.split(\"\\n\").map(function(line){return line.length>=maxLineLength?line.slice(0,maxLineLength)+\"....\":line}).join(\"\\n\").replace(/\\/\\/ != undefined/g,\"\")}},{difflet:80}],78:[function(require,module){function clonePrototype(parent){if(null===parent)return null;var ctor=function(){};return ctor.prototype=parent,new ctor}module.exports=clonePrototype},{}],79:[function(require,module){(function(){\"use strict\";function b64ToByteArray(b64){var i,j,l,tmp,placeHolders,arr;if(b64.length%4>0)throw\"Invalid string. Length must be a multiple of 4\";for(placeHolders=b64.indexOf(\"=\"),placeHolders=placeHolders>0?b64.length-placeHolders:0,arr=[],l=placeHolders>0?b64.length-4:b64.length,i=0,j=0;l>i;i+=4,j+=3)tmp=lookup.indexOf(b64[i])\u003C\u003C18|lookup.indexOf(b64[i+1])\u003C\u003C12|lookup.indexOf(b64[i+2])\u003C\u003C6|lookup.indexOf(b64[i+3]),arr.push((16711680&tmp)>>16),arr.push((65280&tmp)>>8),arr.push(255&tmp);return 2===placeHolders?(tmp=lookup.indexOf(b64[i])\u003C\u003C2|lookup.indexOf(b64[i+1])>>4,arr.push(255&tmp)):1===placeHolders&&(tmp=lookup.indexOf(b64[i])\u003C\u003C10|lookup.indexOf(b64[i+1])\u003C\u003C4|lookup.indexOf(b64[i+2])>>2,arr.push(255&tmp>>8),arr.push(255&tmp)),arr}function uint8ToBase64(uint8){function tripletToBase64(num){return lookup[63&num>>18]+lookup[63&num>>12]+lookup[63&num>>6]+lookup[63&num]}var i,temp,length,extraBytes=uint8.length%3,output=\"\";for(i=0,length=uint8.length-extraBytes;length>i;i+=3)temp=(uint8[i]\u003C\u003C16)+(uint8[i+1]\u003C\u003C8)+uint8[i+2],output+=tripletToBase64(temp);switch(extraBytes){case 1:temp=uint8[uint8.length-1],output+=lookup[temp>>2],output+=lookup[63&temp\u003C\u003C4],output+=\"==\";break;case 2:temp=(uint8[uint8.length-2]\u003C\u003C8)+uint8[uint8.length-1],output+=lookup[temp>>10],output+=lookup[63&temp>>4],output+=lookup[63&temp\u003C\u003C2],output+=\"=\"}return output}var lookup=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";module.exports.toByteArray=b64ToByteArray,module.exports.fromByteArray=uint8ToBase64})()},{}],62:[function(require,module){function trimEmptyLines(lines){for(var line=lines.pop();!line||!line.length;)line=lines.pop();line&&lines.push(line)}function addLinenos(highlightedCode,firstline){function getDigits(n){return 10>n?1:100>n?2:1e3>n?3:1e4>n?4:5}function pad(n,totalDigits){var padDigits=totalDigits-getDigits(n);switch(padDigits){case 0:return\"\"+n;case 1:return\" \"+n;case 2:return\" \"+n;case 3:return\" \"+n;case 4:return\" \"+n;case 5:return\" \"+n}}var highlightedLines=highlightedCode.split(\"\\n\");trimEmptyLines(highlightedLines);var totalDigits,lineno,linesLen=highlightedLines.length,lines=[];totalDigits=getDigits(linesLen+firstline-1);for(var i=0;linesLen>i;i++)lineno=[colorSurround[0],pad(i+firstline,totalDigits),\": \",colorSurround[1]].join(\"\"),lines.push(lineno+highlightedLines[i]);return lines.join(\"\\n\")}var redeyed=require(\"redeyed\"),theme=require(\"../themes/default\"),colors=require(\"../colors\"),colorSurround=colors.brightBlack.split(\":\");module.exports=function(code,opts){opts=opts||{};try{var result=redeyed(code,opts.theme||theme),firstline=opts.firstline&&!isNaN(opts.firstline)?opts.firstline:1;return opts.linenos?addLinenos(result.code,firstline):result.code}catch(e){throw e.message=\"Unable to perform highlight. The code contained syntax errors: \"+e.message,e}}},{\"../themes/default\":81,\"../colors\":76,redeyed:82}],81:[function(require,module){var colors=require(\"../colors\");module.exports={Boolean:{\"true\":void 0,\"false\":void 0,_default:colors.brightRed},Identifier:{undefined:colors.brightBlack,self:colors.brightRed,console:colors.blue,log:colors.blue,warn:colors.red,error:colors.brightRed,_default:colors.white},Null:{_default:colors.brightBlack},Numeric:{_default:colors.blue},String:{_default:colors.brightGreen},Keyword:{\"break\":void 0,\"case\":void 0,\"catch\":colors.cyan,\"continue\":void 0,\"debugger\":void 0,\"default\":void 0,\"delete\":colors.red,\"do\":void 0,\"else\":void 0,\"finally\":colors.cyan,\"for\":void 0,\"function\":void 0,\"if\":void 0,\"in\":void 0,\"instanceof\":void 0,\"new\":colors.red,\"return\":colors.red,\"switch\":void 0,\"this\":colors.brightRed,\"throw\":void 0,\"try\":colors.cyan,\"typeof\":void 0,\"var\":colors.green,\"void\":void 0,\"while\":void 0,\"with\":void 0,_default:colors.brightBlue},Punctuator:{\";\":colors.brightBlack,\".\":colors.green,\",\":colors.green,\"{\":colors.yellow,\"}\":colors.yellow,\"(\":colors.brightBlack,\")\":colors.brightBlack,\"[\":colors.yellow,\"]\":colors.yellow,\"\u003C\":void 0,\">\":void 0,\"+\":void 0,\"-\":void 0,\"*\":void 0,\"%\":void 0,\"&\":void 0,\"|\":void 0,\"^\":void 0,\"!\":void 0,\"~\":void 0,\"?\":void 0,\":\":void 0,\"=\":void 0,\"\u003C=\":void 0,\">=\":void 0,\"==\":void 0,\"!=\":void 0,\"++\":void 0,\"--\":void 0,\"\u003C\u003C\":void 0,\">>\":void 0,\"&&\":void 0,\"||\":void 0,\"+=\":void 0,\"-=\":void 0,\"*=\":void 0,\"%=\":void 0,\"&=\":void 0,\"|=\":void 0,\"^=\":void 0,\"/=\":void 0,\"===\":void 0,\"!==\":void 0,\">>>\":void 0,\"\u003C\u003C=\":void 0,\">>=\":void 0,\">>>=\":void 0,_default:colors.brightYellow},Line:{_default:colors.brightBlack},Block:{_default:colors.brightBlack},_default:void 0}},{\"../colors\":76}],83:[function(require,module){function Traverse(obj){this.value=obj}function walk(root,cb,immutable){var path=[],parents=[],alive=!0;return function walker(node_){function updateState(){if(\"object\"==typeof state.node&&null!==state.node){state.keys&&state.node_===state.node||(state.keys=objectKeys(state.node)),state.isLeaf=0==state.keys.length;for(var i=0;parents.length>i;i++)if(parents[i].node_===node_){state.circular=parents[i];break}}else state.isLeaf=!0,state.keys=null;state.notLeaf=!state.isLeaf,state.notRoot=!state.isRoot}var node=immutable?copy(node_):node_,modifiers={},keepGoing=!0,state={node:node,node_:node_,path:[].concat(path),parent:parents[parents.length-1],parents:parents,key:path.slice(-1)[0],isRoot:0===path.length,level:path.length,circular:null,update:function(x,stopHere){state.isRoot||(state.parent.node[state.key]=x),state.node=x,stopHere&&(keepGoing=!1)},\"delete\":function(stopHere){delete state.parent.node[state.key],stopHere&&(keepGoing=!1)},remove:function(stopHere){isArray(state.parent.node)?state.parent.node.splice(state.key,1):delete state.parent.node[state.key],stopHere&&(keepGoing=!1)},keys:null,before:function(f){modifiers.before=f},after:function(f){modifiers.after=f},pre:function(f){modifiers.pre=f},post:function(f){modifiers.post=f},stop:function(){alive=!1},block:function(){keepGoing=!1}};if(!alive)return state;updateState();var ret=cb.call(state,state.node);return void 0!==ret&&state.update&&state.update(ret),modifiers.before&&modifiers.before.call(state,state.node),keepGoing?(\"object\"!=typeof state.node||null===state.node||state.circular||(parents.push(state),updateState(),forEach(state.keys,function(key,i){path.push(key),modifiers.pre&&modifiers.pre.call(state,state.node[key],key);var child=walker(state.node[key]);immutable&&Object.hasOwnProperty.call(state.node,key)&&(state.node[key]=child.node),child.isLast=i==state.keys.length-1,child.isFirst=0==i,modifiers.post&&modifiers.post.call(state,child),path.pop()}),parents.pop()),modifiers.after&&modifiers.after.call(state,state.node),state):state}(root).node}function copy(src){if(\"object\"==typeof src&&null!==src){var dst;if(isArray(src))dst=[];else if(isDate(src))dst=new Date(src);else if(isRegExp(src))dst=RegExp(src);else if(isError(src))dst={message:src.message};else if(isBoolean(src))dst=new Boolean(src);else if(isNumber(src))dst=new Number(src);else if(isString(src))dst=new String(src);else if(Object.create&&Object.getPrototypeOf)dst=Object.create(Object.getPrototypeOf(src));else if(src.constructor===Object)dst={};else{var proto=src.constructor&&src.constructor.prototype||src.__proto__||{},T=function(){};T.prototype=proto,dst=new T}return forEach(objectKeys(src),function(key){dst[key]=src[key]}),dst}return src}function toS(obj){return Object.prototype.toString.call(obj)}function isDate(obj){return\"[object Date]\"===toS(obj)}function isRegExp(obj){return\"[object RegExp]\"===toS(obj)}function isError(obj){return\"[object Error]\"===toS(obj)}function isBoolean(obj){return\"[object Boolean]\"===toS(obj)}function isNumber(obj){return\"[object Number]\"===toS(obj)}function isString(obj){return\"[object String]\"===toS(obj)}var traverse=module.exports=function(obj){return new Traverse(obj)};Traverse.prototype.get=function(ps){for(var node=this.value,i=0;ps.length>i;i++){var key=ps[i];if(!Object.hasOwnProperty.call(node,key)){node=void 0;break}node=node[key]}return node},Traverse.prototype.has=function(ps){for(var node=this.value,i=0;ps.length>i;i++){var key=ps[i];if(!Object.hasOwnProperty.call(node,key))return!1;node=node[key]}return!0},Traverse.prototype.set=function(ps,value){for(var node=this.value,i=0;ps.length-1>i;i++){var key=ps[i];Object.hasOwnProperty.call(node,key)||(node[key]={}),node=node[key]}return node[ps[i]]=value,value},Traverse.prototype.map=function(cb){return walk(this.value,cb,!0)},Traverse.prototype.forEach=function(cb){return this.value=walk(this.value,cb,!1),this.value},Traverse.prototype.reduce=function(cb,init){var skip=1===arguments.length,acc=skip?this.value:init;return this.forEach(function(x){this.isRoot&&skip||(acc=cb.call(this,acc,x))}),acc},Traverse.prototype.paths=function(){var acc=[];return this.forEach(function(){acc.push(this.path)}),acc},Traverse.prototype.nodes=function(){var acc=[];return this.forEach(function(){acc.push(this.node)}),acc},Traverse.prototype.clone=function(){var parents=[],nodes=[];return function clone(src){for(var i=0;parents.length>i;i++)if(parents[i]===src)return nodes[i];if(\"object\"==typeof src&&null!==src){var dst=copy(src);return parents.push(src),nodes.push(dst),forEach(objectKeys(src),function(key){dst[key]=clone(src[key])}),parents.pop(),nodes.pop(),dst}return src}(this.value)};var objectKeys=Object.keys||function(obj){var res=[];for(var key in obj)res.push(key);return res},isArray=Array.isArray||function isArray(xs){return\"[object Array]\"===Object.prototype.toString.call(xs)},forEach=function(xs,fn){if(xs.forEach)return xs.forEach(fn);for(var i=0;xs.length>i;i++)fn(xs[i],i,xs)};forEach(objectKeys(Traverse.prototype),function(key){traverse[key]=function(obj){var args=[].slice.call(arguments,1),t=new Traverse(obj);return t[key].apply(t,args)}})},{}],80:[function(require,module){(function(process){function difflet(opts,prev,next){function set(type){0===levels&&opts.start(type,stream),levels++}function unset(type){0===--levels&&opts.stop(type,stream)}function stringifier(insertable,node,opts){var indent=opts.indent;if(insertable)var prevNode=traverse.get(prev,this.path||[]);var indentx,inserted=insertable&&void 0===prevNode;try{indentx=indent?Array(((this.path||[]).length+1)*indent+1).join(\" \"):\"\"}catch(e){indentx=\"\"}if(commaFirst&&(indentx=indentx.slice(indent)),Array.isArray(node)){var updated=(prevNode||traverse.has(prev,this.path))&&!Array.isArray(prevNode);updated&&set(\"updated\"),opts.comment&&!Array.isArray(prevNode)&&(indent=0),this.before(function(){inserted&&set(\"inserted\"),indent&&commaFirst?0===(this.path||[]).length||Array.isArray(this.parent.node)?write(\"[ \"):write(\"\\n\"+indentx+\"[ \"):indent?write(\"[\\n\"+indentx):write(\"[\")}),this.post(function(child){child.isLast||indent&&commaFirst||write(\",\");var prev=prevNode&&prevNode[child.key];indent&&opts.comment&&child.node!==prev&&(\"object\"!=typeof child.node||\"object\"!=typeof prev)&&(set(\"comment\"),write(\" // != \"),traverse(prev).forEach(function(x){plainStringify.call(this,x,{indent:0})}),unset(\"comment\")),child.isLast||(indent&&commaFirst?write(\"\\n\"+indentx+\", \"):indent&&write(\"\\n\"+indentx))}),this.after(function(){indent&&commaFirst?write(\"\\n\"+indentx):indent&&write(\"\\n\"+indentx.slice(indent)),write(\"]\"),updated&&unset(\"updated\"),inserted&&unset(\"inserted\")})}else if(isRegExp(node))this.block(),inserted?(set(\"inserted\"),write(\"\"+node),unset(\"inserted\")):insertable&&prevNode!==node?(set(\"updated\"),write(\"\"+node),unset(\"updated\")):write(\"\"+node);else if(\"object\"==typeof node&&node&&\"function\"==typeof node.inspect)this.block(),inserted?(set(\"inserted\"),write(node.inspect()),unset(\"inserted\")):prevNode&&\"function\"==typeof prevNode.inspect&&prevNode.inspect()===node.inspect()?write(node.inspect()):(set(\"updated\"),write(node.inspect()),unset(\"updated\"));else if(\"object\"==typeof node&&null!==node){var insertedKey=!1,deleted=insertable&&\"object\"==typeof prevNode&&prevNode?Object.keys(prevNode).filter(function(key){return!Object.hasOwnProperty.call(node,key)}):[];this.before(function(){inserted&&set(\"inserted\"),write(indent&&commaFirst&&!this.isRoot?\"\\n\"+indentx+\"{ \":\"{\")}),this.pre(function(x,key){if(insertable){var obj=traverse.get(prev,this.path.concat(key));void 0===obj&&(insertedKey=!0,set(\"inserted\"))}indent&&!commaFirst&&write(\"\\n\"+indentx),plainStringify(key),write(indent?\" : \":\":\")}),this.post(function(child){child.isLast||indent&&commaFirst||write(\",\"),child.isLast&&deleted.length?(insertedKey&&unset(\"inserted\"),insertedKey=!1):insertedKey&&(unset(\"inserted\"),insertedKey=!1);var prev=prevNode&&prevNode[child.key];indent&&opts.comment&&child.node!==prev&&(\"object\"!=typeof child.node||\"object\"!=typeof prev)&&(set(\"comment\"),write(\" // != \"),traverse(prev).forEach(function(x){plainStringify.call(this,x,{indent:0})}),unset(\"comment\")),child.isLast&&deleted.length?(insertedKey&&unset(\"inserted\"),insertedKey=!1,indent&&commaFirst?write(\"\\n\"+indentx+\", \"):opts.comment&&indent?write(\"\\n\"+indentx):indent?write(\",\\n\"+indentx):write(\",\")):child.isLast||indent&&commaFirst&&write(\"\\n\"+indentx+\", \")}),this.after(function(){inserted&&unset(\"inserted\"),deleted.length&&(indent&&!commaFirst&&0===Object.keys(node).length&&write(\"\\n\"+indentx),set(\"deleted\"),deleted.forEach(function(key,ix){indent&&opts.comment&&(unset(\"deleted\"),set(\"comment\"),write(\"// \"),unset(\"comment\"),set(\"deleted\")),plainStringify(key),write(indent?\" : \":\":\"),traverse(prevNode[key]).forEach(function(x){plainStringify.call(this,x,{indent:0})});var last=ix===deleted.length-1;insertable&&!last&&(indent&&commaFirst?write(\"\\n\"+indentx+\", \"):indent?write(\",\\n\"+indentx):write(\",\"))}),unset(\"deleted\")),commaFirst&&indent?write(indentx.slice(indent)+\" }\"):indent?write(\"\\n\"+indentx.slice(indent)+\"}\"):write(\"}\")})}else{var changed=!1;inserted?set(\"inserted\"):insertable&&!deepEqual(prevNode,node)&&(changed=!0,set(\"updated\")),\"string\"==typeof node?write('\"'+(\"\"+node).replace(/\"/g,'\\\\\"')+'\"'):isRegExp(node)?write(\"\"+node):\"function\"==typeof node?write(node.name?\"[Function: \"+node.name+\"]\":\"[Function]\"):void 0===node?write(\"undefined\"):null===node?write(\"null\"):write(\"\"+node),inserted?unset(\"inserted\"):changed&&unset(\"updated\")}}var stream=opts.stream||new Stream;if(opts.stream||(stream.readable=!0,stream.writable=!0,stream.write=function(buf){this.emit(\"data\",buf)},stream.end=function(){this.emit(\"end\")}),opts||(opts={}),void 0===opts.start&&void 0===opts.stop){var c=charm(stream);opts.start=function(type){c.foreground({inserted:\"green\",updated:\"blue\",deleted:\"red\",comment:\"cyan\"}[type]),c.display(\"bright\")},opts.stop=function(){c.display(\"reset\")}}var write=function(buf){opts.write?opts.write(buf,stream):stream.write(buf)},commaFirst=\"first\"===opts.comma,stringify=function(node,params){return stringifier.call(this,!0,node,params||opts)},plainStringify=function(node,params){return stringifier.call(this,!1,node,params||opts)},levels=0;return opts.stream?traverse(next).forEach(stringify):process.nextTick(function(){traverse(next).forEach(stringify),stream.emit(\"end\")}),stream}function isRegExp(node){return node instanceof RegExp||node&&\"function\"==typeof node.test&&\"function\"==typeof node.exec&&\"function\"==typeof node.compile&&node.constructor&&\"RegExp\"===node.constructor.name}var traverse=require(\"traverse\"),Stream=require(\"stream\").Stream,charm=require(\"charm\"),deepEqual=require(\"deep-is\"),exports=module.exports=function(opts_){var fn=difflet.bind(null,opts_);return fn.compare=function(prev,next){var opts=Object.keys(opts_||{}).reduce(function(acc,key){return acc[key]=opts_[key],acc},{}),s=opts.stream=new Stream,data=\"\";return s.write=function(buf){data+=buf},s.end=function(){},s.readable=!0,s.writable=!0,difflet(opts,prev,next),data},fn};exports.compare=function(prev,next){return exports({}).compare(prev,next)}})(require(\"__browserify_process\"))},{stream:58,traverse:83,charm:84,\"deep-is\":69,__browserify_process:16}],85:[function(require,module,exports){exports.isatty=function(){},exports.setRawMode=function(){}},{}],84:[function(require,module){(function(process){var tty=require(\"tty\"),encode=require(\"./lib/encode\"),EventEmitter=require(\"events\").EventEmitter,exports=module.exports=function(){function setInput(s){if(input)throw Error(\"multiple inputs specified\");input=s}function setOutput(s){if(output)throw Error(\"multiple outputs specified\");output=s}for(var input=null,output=null,i=0;arguments.length>i;i++){var arg=arguments[i];arg&&(arg.readable?setInput(arg):(arg.stdin||arg.input)&&setInput(arg.stdin||arg.input),arg.writable?setOutput(arg):(arg.stdout||arg.output)&&setOutput(arg.stdout||arg.output))}return new Charm(input,output)},Charm=exports.Charm=function(input,output){var self=this;self.input=input,self.output=output,self.pending=[],output||self.emit(\"error\",Error(\"output stream required\")),input&&\"number\"==typeof input.fd&&tty.isatty(input.fd)&&(process.stdin.setRawMode?process.stdin.setRawMode(!0):tty.setRawMode(!0),input.resume()),input&&input.on(\"data\",function(buf){if(self.pending.length){for(var codes=extractCodes(buf),matched=!1,i=0;codes.length>i;i++)for(var j=0;self.pending.length>j;j++){var cb=self.pending[j];if(cb(codes[i])){matched=!0,self.pending.splice(j,1);break}}if(matched)return}self.emit(\"data\",buf),1===buf.length&&(3===buf[0]&&self.emit(\"^C\"),4===buf[0]&&self.emit(\"^D\"))})};Charm.prototype=new EventEmitter,Charm.prototype.destroy=function(){this.input&&this.input.destroy()},Charm.prototype.write=function(msg){return this.output.write(msg),this},Charm.prototype.reset=function(){return this.write(encode(\"c\")),this},Charm.prototype.position=function(x,y){if(\"function\"==typeof x){var cb=x;this.pending.push(function(buf){if(27===buf[0]&&buf[1]===encode.ord(\"[\")&&buf[buf.length-1]===encode.ord(\"R\")){var pos=(\"\"+buf).slice(2,-1).split(\";\").map(Number);return cb(pos[1],pos[0]),!0}}),this.write(encode(\"[6n\"))}else this.write(encode(\"[\"+Math.floor(y)+\";\"+Math.floor(x)+\"f\"));return this},Charm.prototype.move=function(x,y){return 0>y?this.up(-y):y>0&&this.down(y),x>0?this.right(x):0>x&&this.left(-x),this},Charm.prototype.up=function(y){return void 0===y&&(y=1),this.write(encode(\"[\"+Math.floor(y)+\"A\")),this},Charm.prototype.down=function(y){return void 0===y&&(y=1),this.write(encode(\"[\"+Math.floor(y)+\"B\")),this},Charm.prototype.right=function(x){return void 0===x&&(x=1),this.write(encode(\"[\"+Math.floor(x)+\"C\")),this},Charm.prototype.left=function(x){return void 0===x&&(x=1),this.write(encode(\"[\"+Math.floor(x)+\"D\")),this},Charm.prototype.column=function(x){return this.write(encode(\"[\"+Math.floor(x)+\"G\")),this},Charm.prototype.push=function(withAttributes){return this.write(encode(withAttributes?\"7\":\"[s\")),this},Charm.prototype.pop=function(withAttributes){return this.write(encode(withAttributes?\"8\":\"[u\")),this},Charm.prototype.erase=function(s){return\"end\"===s||\"$\"===s?this.write(encode(\"[K\")):\"start\"===s||\"^\"===s?this.write(encode(\"[1K\")):\"line\"===s?this.write(encode(\"[2K\")):\"down\"===s?this.write(encode(\"[J\")):\"up\"===s?this.write(encode(\"[1J\")):\"screen\"===s?this.write(encode(\"[1J\")):this.emit(\"error\",Error(\"Unknown erase type: \"+s)),this},Charm.prototype.display=function(attr){var c={reset:0,bright:1,dim:2,underscore:4,blink:5,reverse:7,hidden:8}[attr];return void 0===c&&this.emit(\"error\",Error(\"Unknown attribute: \"+attr)),this.write(encode(\"[\"+c+\"m\")),this},Charm.prototype.foreground=function(color){if(\"number\"==typeof color)(0>color||color>=256)&&this.emit(\"error\",Error(\"Color out of range: \"+color)),this.write(encode(\"[38;5;\"+color+\"m\"));else{var c={black:30,red:31,green:32,yellow:33,blue:34,magenta:35,cyan:36,white:37}[color.toLowerCase()];c||this.emit(\"error\",Error(\"Unknown color: \"+color)),this.write(encode(\"[\"+c+\"m\"))}return this},Charm.prototype.background=function(color){if(\"number\"==typeof color)(0>color||color>=256)&&this.emit(\"error\",Error(\"Color out of range: \"+color)),this.write(encode(\"[48;5;\"+color+\"m\"));else{var c={black:40,red:41,green:42,yellow:43,blue:44,magenta:45,cyan:46,white:47}[color.toLowerCase()];c||this.emit(\"error\",Error(\"Unknown color: \"+color)),this.write(encode(\"[\"+c+\"m\"))}return this},Charm.prototype.cursor=function(visible){return this.write(encode(visible?\"[?25h\":\"[?25l\")),this};var extractCodes=exports.extractCodes=function(buf){for(var codes=[],start=-1,i=0;buf.length>i;i++)27===buf[i]?(start>=0&&codes.push(buf.slice(start,i)),start=i):start>=0&&i===buf.length-1&&codes.push(buf.slice(start));return codes}})(require(\"__browserify_process\"))},{tty:85,events:15,\"./lib/encode\":86,__browserify_process:16}],82:[function(require,module){(function(){(function(){\"use strict\";function bootstrap(esprima,exportFn){function isFunction(obj){return\"[object Function]\"===toString.call(obj)}function isString(obj){return\"[object String]\"===toString.call(obj)}function isObject(obj){return\"[object Object]\"===toString.call(obj)}function surroundWith(before,after){return function(s){return before+s+after}}function isNonCircular(key){return\"_parent\"!==key}function objectizeString(value){var vals=value.split(\":\");if(0===vals.length||vals.length>2)throw Error(\"illegal string config: \"+value+'\\nShould be of format \"before:after\"');return 1===vals.length||0===vals[1].length?0>vals.indexOf(\":\")?{_before:vals[0]}:{_after:vals[0]}:{_before:vals[0],_after:vals[1]}}function objectize(node){function resolve(value,key){if(!value._parent)return void 0;if(value._parent._default&&value._parent._default[key])return value._parent._default[key];var root=value._parent._parent;return root?root._default?root._default[key]:void 0:void 0}function process(key){var value=node[key];if(value&&!isFunction(value)){if(isString(value)&&(node[key]=value=objectizeString(value)),value._parent=node,isObject(value))return value._before||value._after?(value._before=value._before||resolve(value,\"_before\"),value._after=value._after||resolve(value,\"_after\"),void 0):objectize(value);throw Error(\"nodes need to be either {String}, {Object} or {Function}.\"+value+\" is neither.\")}}node._default&&process(\"_default\"),Object.keys(node).filter(function(key){return isNonCircular(key)&&node.hasOwnProperty(key)&&\"_before\"!==key&&\"_after\"!==key&&\"_default\"!==key}).forEach(process)}function functionize(node){Object.keys(node).filter(function(key){return isNonCircular(key)&&node.hasOwnProperty(key)}).forEach(function(key){var value=node[key];if(!isFunction(value)&&isObject(value)){if(!value._before&&!value._after)return functionize(value);var before=value._before||\"\",after=value._after||\"\";return node[key]=surroundWith(before,after)}})}function normalize(root){objectize(root),functionize(root)}function mergeTokensAndComments(tokens,comments){function addToAllByRangeStart(t){all[t.range[0]]=t}var all={};return tokens.forEach(addToAllByRangeStart),comments.forEach(addToAllByRangeStart),Object.keys(all).map(function(k){return all[k]})}function redeyed(code,config,opts){function tokenIndex(tokens,tkn,start){var current,rangeStart=tkn.range[0];for(current=start;tokens.length>current;current++)if(tokens[current].range[0]===rangeStart)return current;throw Error(\"Token %s not found at or after index: %d\",tkn,start)}function process(surround){var result,currentIndex,nextIndex,splitEnd,skip=0;return result=surround(code.slice(start,end),info),isObject(result)?(splits.push(result.replacement),currentIndex=info.tokenIndex,nextIndex=tokenIndex(info.tokens,result.skipPastToken,currentIndex),skip=nextIndex-currentIndex,splitEnd=skip>0?tokens[nextIndex-1].range[1]:end):(splits.push(result),splitEnd=end),{skip:skip,splitEnd:splitEnd}}function addSplit(start,end,surround){var result,skip=0;if(!(start>=end))return surround?(result=process(surround),skip=result.skip,lastSplitEnd=result.splitEnd):(splits.push(code.slice(start,end)),lastSplitEnd=end),skip}opts=opts||{},code=code.replace(/^\\#\\!.*/,\"\");var transformedCode,all,info,ast=esprima.parse(code,{tokens:!0,comment:!0,range:!0,tolerant:!0}),tokens=ast.tokens,comments=ast.comments,lastSplitEnd=0,splits=[];\nnormalize(config),all=mergeTokensAndComments(tokens,comments);for(var tokenIdx=0;all.length>tokenIdx;tokenIdx++){var surround,start,end,token=all[tokenIdx],surroundForType=config[token.type];surroundForType&&(surround=surroundForType&&surroundForType.hasOwnProperty(token.value)&&surroundForType[token.value]&&isFunction(surroundForType[token.value])?surroundForType[token.value]:surroundForType._default,start=token.range[0],end=token.range[1],addSplit(lastSplitEnd,start),info={tokenIndex:tokenIdx,tokens:all,ast:ast,code:code},tokenIdx+=addSplit(start,end,surround,info))}return code.length>lastSplitEnd&&addSplit(lastSplitEnd,code.length),transformedCode=opts.nojoin?void 0:splits.join(\"\"),{ast:ast,tokens:tokens,comments:comments,splits:splits,code:transformedCode}}return exportFn?exportFn(redeyed):redeyed}var esprima,exportFn,toString=Object.prototype.toString;\"object\"==typeof module&&\"object\"==typeof module.exports&&\"function\"==typeof require?(esprima=require(\"esprima\"),exportFn=function(redeyed){module.exports=redeyed},bootstrap(esprima,exportFn)):\"function\"==typeof define&&define.amd?define([\"esprima\"],function(esprima){return bootstrap(esprima)}):\"object\"==typeof window&&(window.redeyed=bootstrap(window.esprima))})()})()},{esprima:70}],86:[function(require,module){(function(Buffer){var encode=module.exports=function(xs){function bytes(s){return\"string\"==typeof s?s.split(\"\").map(ord):Array.isArray(s)?s.reduce(function(acc,c){return acc.concat(bytes(c))},[]):void 0}return new Buffer([27].concat(bytes(xs)))},ord=encode.ord=function ord(c){return c.charCodeAt(0)}})(require(\"__browserify_buffer\").Buffer)},{__browserify_buffer:77}]},{},[1]);\n\n\u003C/script>","tags":"$:/tags/RawMarkup","title":"$:/webxr-notebook/scriptie-talkie-embed.js","modified":"20230427072656645"}, {"created":"20230426064319911","text":"\n\u003C!-- shader-doodle.js -->\n\u003Cscript>\n'use strict';(function(z,A){\"object\"===typeof exports&&\"undefined\"!==typeof module?A(exports):\"function\"===typeof define&&define.amd?define([\"exports\"],A):(z=z||self,A(z.ShaderDoodle={}))})(this,function(z){function A(a){function b(a){console.log(a);e.add(a.targetElement)}function d(b){e.has(b.targetElement)?e.delete(b.targetElement):(b=a.createBufferSource(),b.buffer=a.createBuffer(1,1,a.sampleRate),b.connect(a.destination),b.start(0),\"function\"===typeof a.resume&&a.resume().then(c),f())}function c(){v.forEach(a=>\n{a()})}function f(){p.forEach(a=>{a.removeEventListener(\"touchstart\",d);a.removeEventListener(\"touchmove\",b);a.removeEventListener(\"touchend\",d);a.removeEventListener(\"mouseup\",d)});p.clear();e.clear()}let e=new Set,p=new Set,v=[];return{onStart:function(b){\"running\"===a.state?(console.log(\"already\"),b()):v.push(b)},register:function(a){a.addEventListener(\"touchstart\",d);a.addEventListener(\"touchmove\",b);a.addEventListener(\"touchend\",d);a.addEventListener(\"mouseup\",d);p.add(a)},dispose:f}}function ca(){function a(a){d[0].value[0]=\na.alpha;d[0].value[1]=a.beta;d[0].value[2]=a.gamma}let b=!1,d=JSON.parse(JSON.stringify(L));return{get ustate(){return d},setup:function(){b||(b=!0,\"object\"===typeof DeviceOrientationEvent&&\"function\"===typeof DeviceOrientationEvent.requestPermission?DeviceOrientationEvent.requestPermission().then(b=>{\"granted\"===b&&window.addEventListener(\"deviceorientation\",a)}).catch(console.error):window.addEventListener(\"deviceorientation\",a))},dispose:function(){window.removeEventListener(\"deviceorientation\",\na)}}}function da(a){let b={},d=a.getExtension.bind(a);return{get:function(a){if(void 0!==b[a])return b[a];let c=d(a)||d(\"MOZ_\".concat(a))||d(\"WEBKIT_\".concat(a));null===c&&console.warn(\"\u003Cshader-doodle /> \".concat(a,\" extension not supported.\"));return b[a]=c}}}function C(){function a(a,b){if(a>n||b>h)a=Math.max(a,n),b=Math.max(b,h),a!==n&&(n=a,c.width=Math.floor(1*n)),b!==h&&(h=b,c.height=Math.floor(1*h))}function b(a){let b=l?(a-l)/1E3:0;l=a;k[0].value+=b;k[1].value=b;k[3].value++;a=new Date;k[2].value[0]=\na.getFullYear();k[2].value[1]=a.getMonth()+1;k[2].value[2]=a.getDate();k[2].value[3]=3600*a.getHours()+60*a.getMinutes()+a.getSeconds()+.001*a.getMilliseconds()}function d(f){if(m.size){b(f);var u=[...k,...e.ustate];m.forEach(b=>b.render(c,a,n,h,1,u));q=requestAnimationFrame(d)}else q=void 0}let c=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"canvas\"),f=c.getContext(\"webgl\")||c.getContext(\"experimental-webgl\"),e=ca(),p=new (window.AudioContext||window.webkitAudioContext),v=new A(p);p.onStart=\nv.onStart;f.blendFunc(f.SRC_ALPHA,f.ONE_MINUS_SRC_ALPHA);f.enable(f.BLEND);let n=0,h=0,q,l,m=new Set,k=JSON.parse(JSON.stringify(M)),w=da(f);w.get(\"OES_texture_float\");w.get(\"OES_texture_float_linear\");w.get(\"OES_texture_half_float\");w.get(\"OES_texture_half_float_linear\");f.clearColor(0,0,0,0);return Object.freeze({get gl(){return f},get wa(){return p},addSurface:function(a){v.register(a.dom);a.addClick(e.setup);m.add(a);q||(q=requestAnimationFrame(d))},removeSurface:function(a){m.delete(a)},addUniform:function(a,\nb,c){for(let d=0;d\u003Ck.length;d++)if(k[d].name===a){k[d].value=b;k[d].type=c;return}k.push({name:a,value:b,type:c,toyname:a})},setUniform:function(a,b){for(let c=0;c\u003Ck.length;c++)if(k[c].name===a){k[c].value=b;break}},dispose:function(){m.forEach(a=>a.dispose());m.clear();m=void 0;cancelAnimationFrame(q);e.dispose();v.dispose()}})}function ea(a,b){let d={},c=a.getProgramParameter(b,a.ACTIVE_ATTRIBUTES);for(let f=0;f\u003Cc;f++){let {name:c}=a.getActiveAttrib(b,f);d[c]=a.getAttribLocation(b,c)}return d}function N(a){function b(b){a.texParameteri(a.TEXTURE_2D,\na.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,b?a.NEAREST:a.LINEAR);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,b?a.NEAREST:a.LINEAR)}let d,c,f=a.createFramebuffer();a.bindFramebuffer(a.FRAMEBUFFER,f);let e=a.createTexture();if(!e)throw Error(\"createTexture returned null\");a.bindTexture(a.TEXTURE_2D,e);b(!0);a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_2D,e,0);return{get handle(){return f},\nget texture(){return e},updateTexture:b,bind:function(){a.bindFramebuffer(a.FRAMEBUFFER,f);a.viewport(0,0,d,c)},updateResolution:function(b,f){if(b!==d||f!==c)d=b,c=f,a.bindTexture(a.TEXTURE_2D,e),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,b,f,0,a.RGBA,a.FLOAT,null)},dispose:function(){a.deleteFramebuffer(f);a.deleteTexture(e)}}}function O(a,b,d){b=a.createShader(b);a.shaderSource(b,d);a.compileShader(b);if(!a.getShaderParameter(b,a.COMPILE_STATUS)){let c=a.getShaderInfoLog(b);a.deleteShader(b);console.warn(c,\n\"\\nin shader:\\n\",d)}return b}function H(a,b){if(a.length!==b.length)return!1;for(let d=0,c=a.length;d\u003Cc;d++)if(a[d]!==b[d])return!1;return!0}function I(a,b){for(let d=0,c=b.length;d\u003Cc;d++)a[d]=b[d]}function fa(a,b,d,c){a[0]!==c&&(d.uniform1f(b,c),a[0]=c)}function ha(a,b,d,c){H(a,c)||(d.uniform2fv(b,c),I(a,c))}function ia(a,b,d,c){H(a,c)||(d.uniform3fv(b,c),I(a,c))}function ja(a,b,d,c){H(a,c)||(d.uniform4fv(b,c),I(a,c))}function ka(a,b,d,c){a[0]!==c&&(d.uniform1i(b,c),a[0]=c)}function la(a){switch(a){case 5126:return fa;\ncase 35664:return ha;case 35665:return ia;case 35666:return ja;case 35678:case 36198:return ka}}function ma(a,b,d){let c=[],f=la(b.type);return{get location(){return d},get name(){return b.name},setValue:function(...b){f(c,d,a,...b)}}}function na(a,b){let d={},c=a.getProgramParameter(b,a.ACTIVE_UNIFORMS);for(let e=0;e\u003Cc;e++){var f=a.getActiveUniform(b,e);let c=a.getUniformLocation(b,f.name);f=ma(a,f,c);d[f.name]=f}return d}function oa(a,b){if(b){let b=a.match(P);a=a.replace(\"mainImage\",\"main\");a=\na.replace(P,\"()\");a=(b?\"#define \".concat(b[1],\" gl_FragColor\\n#define \").concat(b[2],\" gl_FragCoord.xy\\n\"):\"\")+a}a=pa(qa,b)+a;return\"precision highp float;\\n\"+a}function ra(a,b,d,c,f=!1){function e(a){let b=r[F(a,f,\"name\")];b&&b.setValue(F(a,f,\"value\"))}function p(b){b.forEach(e);t.forEach(a=>a.update(e));k&&r.u_prevbuffer&&(b=r.u_prevbuffer)&&(b.setValue(w),a.activeTexture(a[\"TEXTURE\".concat(w)]),a.bindTexture(a.TEXTURE_2D,k.texture),k.updateTexture());g.forEach(b=>{r[b.name].setValue(b.u);a.activeTexture(a[\"TEXTURE\".concat(b.u)]);\na.bindTexture(a.TEXTURE_2D,b.fbo.texture);b.fbo.updateTexture()})}let v=sa++,n=a.createProgram(),h=a.createBuffer();b=O(a,a.VERTEX_SHADER,b);d=O(a,a.FRAGMENT_SHADER,oa(d,f));a.attachShader(n,b);a.attachShader(n,d);a.linkProgram(n);let q,l,m,k,w,u=ea(a,n),r=na(a,n),g=new Set,t=new Set,x=0;if(!a.getProgramParameter(n,a.LINK_STATUS)){let b=a.getProgramInfoLog(n);console.warn(b)}a.detachShader(n,b);a.detachShader(n,d);a.deleteShader(b);a.deleteShader(d);b=u.position;a.bindBuffer(a.ARRAY_BUFFER,h);a.bufferData(a.ARRAY_BUFFER,\nc,a.STATIC_DRAW);a.enableVertexAttribArray(b);a.vertexAttribPointer(b,2,a.FLOAT,!1,0,0);return{get id(){return v},get nodes(){return g},get fbo(){return m},get name(){return q},get u(){return l},render:function(b,c,d){g.size&&g.forEach(a=>a.render(b,c,d));if(m){if(k){let a=m;m=k;k=a;k.bind();k.updateResolution(b,c)}m.updateResolution(b,c);m.bind()}else a.bindFramebuffer(a.FRAMEBUFFER,null),a.viewport(0,0,b,c);a.clear(a.COLOR_BUFFER_BIT);a.useProgram(n);p(d);a.drawArrays(a.TRIANGLES,0,6)},addNode:function(a,\nb,c){a.toFbo(b,x++,c);g.add(a)},removeNode:function(a){g.delete(a)},addTexture:function(a){t.add(a)},removeTexture:function(a){t.delete(a)},getTexUnit:function(){return x++},update:p,toFbo:function(b,c,d){q=b;l=c;m=N(a);d&&(k=N(a),w=x++)},dispose:function(){t.forEach(a=>a.dispose());t.clear();a.deleteProgram(n)}}}function Q(a){if(!a)return[0,0];let b=(a.tagName||\"\").toLowerCase();return\"video\"===b?[a.videoWidth,a.videoHeight]:\"img\"===b?[a.naturalWidth,a.naturalHeight]:[a.width,a.height]}function R(a,\nb,d={}){function c(){a.getParameter(a.ACTIVE_TEXTURE)!==b&&a.activeTexture(a[\"TEXTURE\".concat(b)])}function f(){h.forEach(b=>{a.texParameteri(p,b[0],b[1])})}function e(b){if(\"object\"===typeof b){Object.assign(n,b);c();a.bindTexture(p,v);var {level:d,internalFormat:e,offsetX:h,offsetY:r,width:g,height:t,border:m,format:B,type:D,flipY:z,buffer:y,pixels:A}=n;f();a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,z);if(A){let [c,d]=Q(A);if(0===c||0===d){console.warn(\"Texture size is invalid \".concat(c,\" x \").concat(d,\n\". Update is skipped;\"));return}{({pixels:b}=n);var J=a.getTexParameter(p,a.TEXTURE_WRAP_S);let c=a.getTexParameter(p,a.TEXTURE_WRAP_T),d=a.getTexParameter(p,a.TEXTURE_MIN_FILTER),f=G(b.width)&&G(b.height);(J=J!==a.CLAMP_TO_EDGE||c!==a.CLAMP_TO_EDGE||d!==a.LINEAR&&d!==a.NEAREST)&&!f&&(l||(l=document.createElement(\"canvas\"),l.width=2**Math.floor(Math.log(b.width)/Math.LN2),l.height=2**Math.floor(Math.log(b.height)/Math.LN2),console.warn(\"Texture is not power of two \".concat(b.width,\" x \").concat(b.height,\n\". Resized to \").concat(l.width,\" x \").concat(l.height,\";\"))),l.getContext(\"2d\").drawImage(b,0,0,l.width,l.height));q=J&&l||b}}\"number\"===typeof h&&\"number\"===typeof r?q?a.texSubImage2D(p,d,h,r,B,D,q):a.texSubImage2D(p,d,h,r,g,t,B,D,y):q?a.texImage2D(p,d,e,B,D,q):a.texImage2D(p,d,e,g,t,m,B,D,y);q&&G(q.width)&&G(q.height)&&(b=a.getTexParameter(p,a.TEXTURE_MIN_FILTER),b!==a.LINEAR&&b!==a.NEAREST&&a.generateMipmap(p))}}let p=a.TEXTURE_2D,v=a.createTexture(),n={},h=[],q,l;e(Object.assign({level:0,internalFormat:a.RGBA,\noffsetX:null,offsetY:null,width:1,height:1,border:0,format:a.RGBA,type:a.UNSIGNED_BYTE,flipY:!0,buffer:ta,pixels:null},\"object\"===typeof d?d:{}));return{setParameters:function(b){c();h.length=0;b.forEach(b=>{h.push(b);a.texParameteri(p,b[0],b[1])})},shallow:function(){c();a.bindTexture(p,v);f()},update:e,dispose:function(){a.deleteTexture(v)}}}function ua(a){return new Promise((b,d)=>{let c=new XMLHttpRequest;c.open(\"GET\",a,!0);c.responseType=\"arraybuffer\";c.onreadystatechange=()=>{c.readyState===\nXMLHttpRequest.DONE&&(200===c.status||206===c.status?b(c.response):(console.log(c),d(c.status)))};c.send()})}function va(a,b){return new Promise((d,c)=>{b.decodeAudioData(a,d,c)})}function wa(a,b,d,c,f,e,p,v){async function n(){g=l.createBufferSource();g.buffer=await va(await ua(c),l);g.loop=e;g.start();t=!0}function h(){let a=document.querySelector(c);a&&a instanceof HTMLAudioElement&&(r=a,g=l.createMediaElementSource(a))}function q(a,b){a.connect(m);m.connect(b)}f=a.gl;let l=a.wa,m=l.createAnalyser();\nm.fftSize=1024;let k=new Uint8Array(m.frequencyBinCount),w=new Uint8Array(m.frequencyBinCount),u=R(f,b,{internalFormat:f.LUMINANCE,width:w.length,height:2,format:f.LUMINANCE,buffer:null});u.setParameters([[f.TEXTURE_WRAP_S,f.CLAMP_TO_EDGE],[f.TEXTURE_WRAP_T,f.CLAMP_TO_EDGE],[f.TEXTURE_MIN_FILTER,f.NEAREST]]);let r,g,t=!1,x=[{name:d,value:b}];\"#\"===c[0]?h():c&&n();g&&q(g,l.destination);return{dispose:function(){u.dispose()},update:function(a){x.forEach(a);if(t||r&&2\u003Cr.readyState&&!r.paused&&!r.ended&&\nr.currentTime)m.getByteFrequencyData(k),m.getByteTimeDomainData(w),u.update({offsetX:0,offsetY:0,height:1,buffer:k}),u.update({offsetX:0,offsetY:1,height:1,buffer:w})}}}function S(a,b){var d=Object.keys(a);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(a);b&&(c=c.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable}));d.push.apply(d,c)}return d}function T(a){let b=document.createElement(\"div\");b.style.width=b.style.height=\"1px\";b.style.overflow=\"hidden\";b.style.position=\n\"absolute\";b.style.opacity=\"0\";b.style.pointerEvents=\"none\";b.style.zIndex=\"-1000\";b.appendChild(a);document.body.appendChild(b)}function xa(a,b,d,c,f,e,p,v,n,h){function q(){t=0;g=new Image;g.crossOrigin=\"anonymous\";g.onload=l;g.onerror=()=>{console.warn(\"failed loading src: \".concat(c))};g.src=c}function l(){k();r.setParameters([[u.TEXTURE_WRAP_S,e],[u.TEXTURE_WRAP_T,p],[u.TEXTURE_MIN_FILTER,v],[u.TEXTURE_MAG_FILTER,n]]);r.update({pixels:g})}function m(){t=2;let a=navigator.getUserMedia||navigator.webkitGetUserMedia||\nnavigator.mozGetUserMedia,b=a=>{g=document.createElement(\"video\");g.width=320;g.height=240;g.autoplay=!0;g.srcObject=a;T(g)},c=()=>{navigator.mediaDevices.getUserMedia({video:!0}).then(b).catch(a=>console.log(a.name+\": \"+a.message))},d=()=>{a({video:!0},b,a=>a)};navigator.mediaDevices&&navigator.mediaDevices.getUserMedia?c():a&&d()}function k(){if(g){let [a,b]=Q(g);x[1].value[0]=a;x[1].value[1]=b}}function w(){return(2===t||1===t)&&g instanceof HTMLVideoElement}let u=a.gl,r=R(u,b),g,t,x=[{name:d,\nvalue:b},{name:d+\"_resolution\",value:[0,0]}],B=!1;if(f)m();else if(ya.test(c))t=1,g=document.createElement(\"video\"),g.autoplay=!0,g.muted=!0,g.loop=!0,g.playsInline=!0,g.crossOrigin=\"anonymous\",g.src=c,T(g),g.play();else if(za.test(c))q();else{try{g=document.querySelector(c)}catch(D){console.warn(\"src: \".concat(c,\": invalid selector\"))}g?g instanceof HTMLImageElement?(t=0,g.complete?l():g.addEventListener(\"load\",l)):g instanceof HTMLVideoElement?t=1:g instanceof HTMLCanvasElement?(t=3,l()):g instanceof\nK?(g=g.surface.dom,t=3,l()):console.warn(\"src: \".concat(c,\": element is not a valid texture source\")):console.warn(\"src: \".concat(c,\": no element could be selected\"))}return{dispose:function(){r.dispose()},update:function(a){x.forEach(a);h||w()&&g.readyState===g.HAVE_ENOUGH_DATA?(w()&&(B||(B=!0,k(),r.setParameters([[u.TEXTURE_WRAP_S,u.CLAMP_TO_EDGE],[u.TEXTURE_WRAP_T,u.CLAMP_TO_EDGE],[u.TEXTURE_MIN_FILTER,u.LINEAR]]))),r.update({pixels:g})):r.shallow()}}}function Aa(a){function b(a){n.forEach(a=>\n\"function\"===typeof a&&a());k=!0;a=U(a);let {top:b,left:c,height:d}=q;h[2].value[0]=h[2].value[2]=a[0]-Math.floor(c);h[2].value[1]=h[2].value[3]=Math.floor(d)-(a[1]-Math.floor(b))}function d(a){if(!m){a=U(a);let {top:b,left:c,height:d}=q;h[1].value[0]=a[0]-Math.floor(c);h[1].value[1]=Math.floor(d)-(a[1]-Math.floor(b));k&&(h[2].value[0]=h[1].value[0],h[2].value[1]=h[1].value[1]);m=!0}}function c(a){k=!1;1===Math.sign(h[2].value[2])&&(h[2].value[2]*=-1);1===Math.sign(h[2].value[3])&&(h[2].value[3]*=\n-1)}function f(){let b=e.getBoundingClientRect();l=0\u003C=b.top+b.height&&0\u003C=b.left+b.width&&b.bottom-b.height\u003C=(window.innerHeight||document.documentElement.clientHeight)&&b.right-b.width\u003C=(window.innerWidth||document.documentElement.clientWidth);let c=0\u003Ca.height?a.height:b.height,d=0\u003Ca.width?a.width:b.width;d!==h[0].value[0]&&(e.width=h[0].value[0]=d);c!==h[0].value[1]&&(e.height=h[0].value[1]=c);q=b}let e=a.canvas instanceof HTMLCanvasElement?a.canvas:document.createElementNS(\"http://www.w3.org/1999/xhtml\",\n\"canvas\"),p=e.getContext(\"2d\"),v=a.program,n=new Set,h=JSON.parse(JSON.stringify(V)),q={},l,m,k;e.addEventListener(\"mousedown\",b);e.addEventListener(\"mousemove\",d);e.addEventListener(\"mouseup\",c);e.addEventListener(\"mouseout\",c);e.addEventListener(\"touchstart\",b);e.addEventListener(\"touchmove\",d);e.addEventListener(\"touchend\",c);f();return Object.freeze({get dom(){return e},render:function(a,b,c,d,e,k){f();m=!1;if(l&&v){var g=h[0].value[0]||0;c=h[0].value[1]||0;b(g,c);v.render(g,c,[...k,...h]);b=\ng*e;e*=c;p.clearRect(0,0,b,e);p.drawImage(a,0,d-e,b,e,0,0,b,e)}},addClick:function(a){n.add(a)},dispose:function(){n.clear();e.removeEventListener(\"mousedown\",b);e.removeEventListener(\"mousemove\",d);e.removeEventListener(\"mouseup\",c);e.removeEventListener(\"mouseout\",c);e.removeEventListener(\"touchstart\",b);e.removeEventListener(\"touchmove\",d);e.removeEventListener(\"touchend\",c)}})}var W={render(a,b){return\"\".concat(this.css(a,b),\"\\n \").concat(this.html())},map(a){return{canvas:a.querySelector(\"canvas\")}},\nhtml(a){return\"\u003Ccanvas>\u003C/canvas>\"},css(a,b){return\"\u003Cstyle>\\n :host {\\n position: relative;\\n display: inline-block;\\n width: \".concat(a||250,\"px;\\n height: \").concat(b||250,\"px;\\n }\\n :host > canvas {\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n border-radius: inherit;\\n }\\n \u003C/style>\")}};let M=[{name:\"u_time\",toyname:\"iTime\",type:\"float\",value:0},{name:\"u_delta\",toyname:\"iTimeDelta\",\ntype:\"float\",value:0},{name:\"u_date\",toyname:\"iDate\",type:\"vec4\",value:[0,0,0,0]},{name:\"u_frame\",toyname:\"iFrame\",type:\"int\",value:0}],V=[{name:\"u_resolution\",toyname:\"iResolution\",type:\"vec2\",value:[0,0]},{name:\"u_mouse\",toyname:\"iCurrentMouse\",type:\"vec2\",value:[0,0]},{name:\"u_mousedrag\",toyname:\"iMouse\",type:\"vec4\",value:[0,0,0,0]}],L=[{name:\"u_orientation\",toyname:\"iOrientation\",type:\"vec3\",value:[0,0,0]}],qa=[...M,...L,...V],P=/\\(\\s*out\\s+vec4\\s+(\\S+)\\s*,\\s*in\\s+vec2\\s+(\\S+)\\s*\\)/,y;C.singleton=\nfunction(){y||(y=C());return y};C.resetSingleton=function(){y&&y.dispose();y=C()};class E extends HTMLElement{get renderer(){return C.singleton()}get name(){return this.getAttribute(\"name\")}set name(a){this.setAttribute(\"name\",a)}}var F=(a,b,d)=>{if(!b)return a[d];b=\"toy\".concat(d);return a.hasOwnProperty(b)?a[b]:a[d]},pa=(a,b)=>Object.values(a).reduce((a,c)=>a+\"uniform \".concat(F(c,b,\"type\"),\" \").concat(F(c,b,\"name\"),\";\\n\"),\"\");let sa=0;var Ba=a=>new Promise((b,d)=>{let c=new XMLHttpRequest;c.open(\"GET\",\na);c.onreadystatechange=()=>{c.readyState===XMLHttpRequest.DONE&&(200===c.status?b(c.responseText):d(c.status))};c.send()}),X=async a=>a.src?Ba(a.src):a.text;let Y=new Float32Array([-1,1,1,1,1,-1,-1,1,1,-1,-1,-1]),Ca=0;class Z extends E{disconnectedCallback(){this.program.dispose();this.program=void 0}get shadertoy(){return this.hasAttribute(\"shadertoy\")}set shadertoy(a){a?this.setAttribute(\"shadertoy\",\"\"):this.removeAttribute(\"shadertoy\")}get prevbuffer(){return this.hasAttribute(\"prevbuffer\")}set prevbuffer(a){a?\nthis.setAttribute(\"prevbuffer\",\"\"):this.removeAttribute(\"prevbuffer\")}get vertices(){let a=this.getAttribute(\"vertices\");if(!a)return Y;a=JSON.parse(a);return Array.isArray(a)?new Float32Array(a):Y}set vertices(a){a&&Array.isArray(a)&&this.setAttribute(\"vertices\",JSON.stringify(a))}async init(a){a&&!this.name&&(this.name=\"\".concat(\"u_node\").concat(Ca++));let b=[],d,c;for(let a=0;a\u003Cthis.children.length;a++){let e=this.children[a];if(e instanceof E)b.push(e);else switch(e.getAttribute(\"type\")){case \"x-shader/x-fragment\":c=\nawait X(e);break;case \"x-shader/x-vertex\":d=await X(e)}}this.program=ra(this.renderer.gl,d||\"attribute vec2 position;\\nvoid main() {\\n gl_Position = vec4(position, 0.0, 1.0);\\n}\",c,this.vertices,this.shadertoy);b.forEach(a=>{a.init(this.program)});a&&a.addNode(this.program,this.name,this.prevbuffer)}}customElements.get(\"sd-node\")||customElements.define(\"sd-node\",Z);let ta=new Uint8Array([0,0,0,255]),G=a=>!(a&a-1)&&!!a,Da=0;class Ea extends E{disconnectedCallback(){this.program.removeTexture(this.texture);\nthis.texture.dispose()}get src(){return this.getAttribute(\"src\")}set src(a){this.setAttribute(\"src\",a)}get autoplay(){return this.hasAttribute(\"autoplay\")}set autoplay(a){a?this.setAttribute(\"autoplay\",\"\"):this.removeAttribute(\"autoplay\")}get loop(){return this.hasAttribute(\"loop\")}set loop(a){a?this.setAttribute(\"loop\",\"\"):this.removeAttribute(\"loop\")}get crossOrigin(){return this.getAttribute(\"crossorigin\")}set crossOrigin(a){this.setAttribute(\"crossorigin\",a)}get mic(){return this.hasAttribute(\"mic\")}set mic(a){a?\nthis.setAttribute(\"mic\",\"\"):this.removeAttribute(\"mic\")}init(a){this.name||(this.name=\"\".concat(\"u_audio\").concat(Da++));this.src&&(this.program=a,this.texture=wa(this.renderer,a.getTexUnit(),this.name,this.src,this.mic,this.loop,this.autoplay,this.crossOrigin),a.addTexture(this.texture))}}customElements.get(\"sd-audio\")||customElements.define(\"sd-audio\",Ea);let za=/\\w+\\.(jpg|jpeg|png|gif|bmp)(?=\\?|$)/i,ya=/\\w+\\.(mp4|3gp|webm|ogv)(?=\\?|$)/i,aa={NEAREST:9728,LINEAR:9729},Fa=function(a){for(var b=1;b\u003C\narguments.length;b++){var d=null!=arguments[b]?arguments[b]:{};b%2?S(d,!0).forEach(function(b){var c=d[b];b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(d)):S(d).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(d,b))})}return a}({},aa,{NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987}),\nba={REPEAT:10497,MIRRORED_REPEAT:33648,CLAMP_TO_EDGE:33071},Ga=0;class Ha extends E{static get observedAttributes(){return\"mag-filter min-filter name src wrap-s wrap-t\".split(\" \")}disconnectedCallback(){this.program.removeTexture(this.texture);this.texture.dispose()}get forceUpdate(){return this.hasAttribute(\"force-update\")}set forceUpdate(a){a?this.setAttribute(\"force-update\",\"\"):this.removeAttribute(\"force-update\")}get magFilter(){return aa[this.getAttribute(\"mag-filter\")]||9729}get minFilter(){return Fa[this.getAttribute(\"min-filter\")]||\n9987}get src(){return this.getAttribute(\"src\")}set src(a){this.setAttribute(\"src\",a)}get webcam(){return this.hasAttribute(\"webcam\")}set webcam(a){a?this.setAttribute(\"webcam\",\"\"):this.removeAttribute(\"webcam\")}get wrapS(){return ba[this.getAttribute(\"wrap-s\")]||10497}get wrapT(){return ba[this.getAttribute(\"wrap-t\")]||10497}init(a){this.name||(this.name=\"\".concat(\"u_texture\").concat(Ga++));if(this.src||this.webcam)this.program=a,this.texture=xa(this.renderer,a.getTexUnit(),this.name,this.src,this.webcam,\nthis.wrapS,this.wrapT,this.minFilter,this.magFilter,this.forceUpdate),a.addTexture(this.texture)}}customElements.get(\"sd-texture\")||customElements.define(\"sd-texture\",Ha);class Ia extends E{disconnectedCallback(){}get x(){return parseFloat(this.getAttribute(\"x\"))}set x(a){null!=a?this.setAttribute(\"x\",a):this.removeAttribute(\"x\")}get y(){return parseFloat(this.getAttribute(\"y\"))}set y(a){null!=a?this.setAttribute(\"y\",a):this.removeAttribute(\"y\")}get z(){return parseFloat(this.getAttribute(\"z\"))}set z(a){null!=\na?this.setAttribute(\"z\",a):this.removeAttribute(\"z\")}get w(){return parseFloat(this.getAttribute(\"w\"))}set w(a){null!=a?this.setAttribute(\"w\",a):this.removeAttribute(\"w\")}getValue(){switch(this.type){case \"vec2\":return[this.x,this.y];case \"vec3\":return[this.x,this.y,this.z];case \"vec4\":return[this.x,this.y,this.z,this.w];default:return this.x}}get type(){return this.getAttribute(\"type\")}set type(a){null!=a?this.setAttribute(\"type\",a):this.removeAttribute(\"type\")}static get observedAttributes(){return[\"x\",\n\"y\",\"z\",\"w\"]}attributeChangedCallback(a,b,d){switch(a){case \"x\":case \"y\":case \"z\":case \"w\":null!=d&&this.renderer.setUniform(this.name,this.getValue())}}init(a){this.name?(this.program=a,this.renderer.addUniform(this.name,this.getValue(),this.type)):console.warn(\"sd-uniform created without a name.\")}}customElements.get(\"sd-uniform\")||customElements.define(\"sd-uniform\",Ia);let Ja=new Set([\"touchstart\",\"touchmove\",\"touchend\"]);var U=a=>{a=Ja.has(a.type)&&\"object\"===typeof a.touches[0]?a.touches[0]:\na;return[a.clientX||0,a.clientY||0]};class K extends Z{static get observedAttributes(){return[\"height\",\"width\"]}constructor(){super();this.shadow=this.attachShadow({mode:\"open\"})}connectedCallback(){this.shadow.innerHTML=W.render(this.width,this.height);this.canvas=W.map(this.shadow).canvas;setTimeout(()=>{try{this.init()}catch(a){console.error(a&&a.message||\"Error in shader-doodle.\")}})}disconnectedCallback(){super.disconnectedCallback();this.renderer.removeSurface(this.surface);this.surface.dispose();\nthis.surface=void 0}attributeChangedCallback(a){let b=this.shadow.styleSheets;if((\"height\"===a||\"width\"===a)&&0\u003Cb.length){let d=this[a];b[0].cssRules[0].style[a]=Number.isInteger(d)?\"\".concat(d,\"px\"):\"250px\"}}get height(){let a=parseInt(this.getAttribute(\"height\"));return Number.isInteger(a)?a:void 0}set height(a){let b=parseInt(a);Number.isInteger(b)&&this.setAttribute(\"height\",a)}get width(){let a=parseInt(this.getAttribute(\"width\"));return Number.isInteger(a)?a:void 0}set width(a){a=parseInt(a);\nNumber.isInteger(a)&&this.setAttribute(\"width\",a)}async init(){await super.init();this.surface=Aa(this);this.renderer.addSurface(this.surface)}}customElements.get(\"shader-doodle\")||customElements.define(\"shader-doodle\",K);z.ShaderDoodleElement=K;Object.defineProperty(z,\"__esModule\",{value:!0})})\n\u003C/script>","tags":"$:/tags/RawMarkup","title":"$:/webxr-notebook/shader-doodle.js","modified":"20230426064515285"}, -{"created":"20230428121310382","text":"\u003Cbr>\n\u003Cbr>\n\u003Cdiv class=\"section\">\n \u003Ca href=\"#XR Fragments\" class=\"tc-btn-invisible label\" style=\"font-weight:bold;padding:0; text-decoration:none\">Home\u003C/a>\n\u003C/div>\n\u003Cbr>\n\u003Cdiv class=\"section\">\n \u003Ca href=\"#How it works\" class=\"tc-btn-invisible label\" style=\"font-weight:bold;padding:0; text-decoration:none\">How it works\u003C/a>\n\u003C/div>\n\u003Cbr>\n\u003Cdiv class=\"section\">\n \u003Ca href=\"#Getting%20started\" class=\"tc-btn-invisible label\" style=\"font-weight:bold;padding:0; text-decoration:none\">Getting started\u003C/a>\n\u003C/div>\n\u003Cbr>\n\u003Cdiv class=\"section\">\n \u003Ca href=\"/example/aframe/sandbox\" target=\"_blank\" class=\"tc-btn-invisible label\" style=\"font-weight:bold;padding:0; text-decoration:none\">Example Model Browser\u003C/a>\n\u003C/div>\n\u003Cbr>\n\u003Cdiv class=\"section\">\n \u003Ca href=\"doc/RFC_XR_Fragments.html\" target=\"_blank\" class=\"tc-btn-invisible label\" style=\"display:inline; font-weight:bold;padding:0; text-decoration:none\">Spec\u003C/a> | \u003Ca href=\"https://github.com/coderofsalvation/xrfragment\" target=\"_blank\" class=\"tc-btn-invisible label\" style=\"display:inline; font-weight:bold;padding:0; text-decoration:none\">Source\u003C/a> | \u003Ca href=\"https://mastodon.online/@lvk\" class=\"tc-btn-invisible label\" target=\"_blank\" style=\"display:inline;font-weight:bold;padding:0; text-decoration:none\">Feedback\u003C/a> | \u003Ca href=\"#Philosophy%20&%20FAQ\" class=\"tc-btn-invisible label\" style=\"font-weight:bold;padding:0; text-decoration:none; display:inline\">FAQ\u003C/a>\n\u003C/div>\n\u003Cbr>\n\u003Cdiv id=\"nlnet\">\n \u003Ca href=\"https://nlnet.nl\" target=\"_blank\">\n [img width=100 [nlnet.png]]\n\t\u003C/a>\n\u003C/div>\n\n\u003Cstyle type=\"text/css\">\n #nlnet img{\n\t\topacity:0.4;\n\t}\n\u003C/style>\n","tags":"","title":"$:/xrfragment/topmenu","modified":"20240626122716689"}, +{"created":"20230428121310382","text":"\u003Cbr>\n\u003Cbr>\n\u003Cdiv class=\"section\">\n \u003Ca href=\"#XR Fragments\" class=\"tc-btn-invisible label\" style=\"font-weight:bold;padding:0; text-decoration:none\">Home\u003C/a>\n\u003C/div>\n\u003Cbr>\n\u003Cdiv class=\"section\">\n \u003Ca href=\"#How it works\" class=\"tc-btn-invisible label\" style=\"font-weight:bold;padding:0; text-decoration:none\">How it works\u003C/a>\n\u003C/div>\n\u003Cbr>\n\u003Cdiv class=\"section\">\n \u003Ca href=\"#Getting%20started\" class=\"tc-btn-invisible label\" style=\"font-weight:bold;padding:0; text-decoration:none\">Getting started\u003C/a>\n\u003C/div>\n\u003Cbr>\n\u003Cdiv class=\"section\">\n \u003Ca href=\"/example/aframe/sandbox\" target=\"_blank\" class=\"tc-btn-invisible label\" style=\"font-weight:bold;padding:0; text-decoration:none\">Example 3D-file Browser\u003C/a>\n\u003C/div>\n\u003Cbr>\n\u003Cdiv class=\"section\">\n \u003Ca href=\"doc/RFC_XR_Fragments.html\" target=\"_blank\" class=\"tc-btn-invisible label\" style=\"display:inline; font-weight:bold;padding:0; text-decoration:none\">Spec\u003C/a> | \u003Ca href=\"https://github.com/coderofsalvation/xrfragment\" target=\"_blank\" class=\"tc-btn-invisible label\" style=\"display:inline; font-weight:bold;padding:0; text-decoration:none\">Source\u003C/a> | \u003Ca href=\"https://mastodon.online/@lvk\" class=\"tc-btn-invisible label\" target=\"_blank\" style=\"display:inline;font-weight:bold;padding:0; text-decoration:none\">Feedback\u003C/a> | \u003Ca href=\"#Philosophy%20&%20FAQ\" class=\"tc-btn-invisible label\" style=\"font-weight:bold;padding:0; text-decoration:none; display:inline\">FAQ\u003C/a>\n\u003C/div>\n\u003Cbr>\n\u003Cdiv id=\"nlnet\">\n \u003Ca href=\"https://nlnet.nl\" target=\"_blank\">\n [img width=100 [nlnet.png]]\n\t\u003C/a>\n\u003C/div>\n\n\u003Cstyle type=\"text/css\">\n #nlnet img{\n\t\topacity:0.4;\n\t}\n\u003C/style>\n","tags":"","title":"$:/xrfragment/topmenu","modified":"20240711105304116"}, {"created":"20230427155228509","text":"\u003Cscript src=\"dist/xrfragment.js\">\u003C/script>","tags":"$:/tags/RawMarkup","title":"$:/xrfragment/xrfragment.js","modified":"20230627082106120"}, {"created":"20230530121012871","text":"16:04:16 From Leon van Kammen : https://xrf.isvery.ninja/example/aframe/sandbox\n16:04:51 From Frode Hegland : https://futuretextlab.info\n16:04:54 From Leon van Kammen : https://xrf.isvery.ninja\n16:05:21 From Frode Hegland : https://futuretextlab.info/category/vr-resource/\n16:15:08 From Peter Wasilko : What is MR in the center of the diagram?\n16:15:28 From Brandel Zachernuk : “Mixed Reality”\n16:15:54 From Peter Wasilko : How is it distinguished from AR?\n16:17:09 From Brandel Zachernuk : It’s a term that people use to encompass the lot. Many people claimed that Google Glass-style AR with no ‘world registration’ as AR, which drove people to coining an additional term\n16:17:30 From Frode Hegland : Ah… thanks Brandel\n16:19:05 From Patrick Lichty : MR, XR, AR, VR, it seems these are used rather fungible, it’d be good to have a small discussion about the Venn diagram here after the talk.\n16:19:24 From Frode Hegland : Yes exactly http://community.cim3.net/wiki/PurpleNumbers.html\n16:19:39 From Frode Hegland : Doug’s paragraph level addressing made live on the web through this\n16:19:52 From Karl Hebenstreit, Jr. : Reacted to “MR, XR, AR, VR, it s…” with 👍\n16:22:14 From Peter Wasilko : I particularly loved Doug’s deep linking distinction between a location in a document whose content might change vs. content in a document whose location might change. We need anchors to both.\n16:22:43 From Frode Hegland : Reacted to “I particularly loved…” with 👍\n16:24:17 From Frode Hegland : Hi Dene\n16:24:36 From Patrick Lichty : Reacted to “I particularly loved…” with 👏\n16:25:08 From Dene Grigar To Frode Hegland(privately) : Good moring\n16:25:12 From Dene Grigar To Frode Hegland(privately) : morning\n16:25:27 From Frode Hegland To Dene Grigar(privately) : 🙂\n16:30:25 From Frode Hegland : Hi Matthias\n16:31:40 From Patrick Lichty : This is amazing, actually.\n16:31:51 From Peter Wasilko : It looked like the image on the surface of the portal object was changing with one’s relative position to it.\n16:33:09 From Dene Grigar : Is there an example of how this has been used for art?\n16:33:25 From Patrick Lichty : Yes.\n16:36:22 From Karl Hebenstreit, Jr. : Future of Interface Workshop (February 15-16), https://futureofinterface.org/info-center/accessibility/ and there’s an XR Accessibility community, https://xraccess.org/\n16:40:15 From Peter Wasilko : https://en.wikipedia.org/wiki/TouchDesigner\n16:40:47 From Peter Wasilko : https://derivative.ca\n16:45:25 From Fabien : addressability of the known universe with infinite resolution\n16:47:49 From Frode Hegland : Fabien, infinite resolution depends on stated context, so cool\n16:47:50 From Frode Hegland : Can this generate a link to a specific location and view by the user performing an action in that location and sharing it? Like a GPS coordinate maybe.\n16:50:22 From Brandel Zachernuk : This is the W3C TPAC: https://www.w3.org/2023/09/TPAC/, and the IW WG (webXR etc) is here: https://www.w3.org/immersive-web/\n16:50:28 From Fabien : Reacted to “This is the W3C TP…” with 👍\n16:51:33 From Matthias mprove : The TPAC link says ”Sorry, Insufficient Access Privileges”\n16:51:34 From Karl Hebenstreit, Jr. : I see XR accessibility as one of the most complex challenges. How can we make it accessible so people with disabilities are not excluded from virtual worlds?\n16:52:22 From Matthias mprove : Oh, the comma was playing a trick on me: https://www.w3.org/2023/09/TPAC/\n16:53:45 From Peter Wasilko : De Bruijn Indices! https://en.wikipedia.org/wiki/De_Bruijn_index\n17:01:36 From Dene Grigar : Yes, I do\n17:02:14 From Dene Grigar : VR poses a challenge for conservation\n17:02:39 From Frode Hegland : 1 second sorry\n17:02:49 From Fabien : indeed, participated to Not Time To Wait specifically for that https://mediaarea.net/NoTimeToWait6\n17:03:13 From Fabien : (for conservation, in art or not)\n17:03:28 From Daveed Benjamin : Love it Peter! Bit.ly for XR fragments\n17:03:55 From Matthias mprove : paraphrasing Jef Raskin: the beginning of a document should be usable as a filename to refer to the document itself\n17:04:43 From Leon van Kammen : Jeff Rascin\n17:04:51 From Peter Wasilko : https://en.wikipedia.org/wiki/The_Humane_Interface\n17:04:56 From Matthias mprove : /from his book The Humane Interface\n17:05:37 From Dene Grigar To Frode Hegland(privately) : I need to go to another meeting. Thanks for today!\n17:09:32 From Peter Wasilko : Just to play it safe, you might need to query IPFS for the URI phrase before using it on the extremely odd chance some else had previously generated it. In Law, we actually deal with this in naming corporations by breaking out an explicit Name Reservation step.\n17:09:37 From Fabien : for ref https://en.wikipedia.org/wiki/World_Geodetic_System\n17:12:06 From Karl Hebenstreit, Jr. : @Fabien are you talking about a universal (UTC) timestamp?\n17:13:03 From Fabien : was thinking more of the spatial aspect but timestamp could be an example too as we do have to be able to “convert” from one timezone to another or have different timescales too\n17:15:26 From Fabien : other example https://en.wikipedia.org/wiki/Web_Mercator_projection most of us might be familiar with, without being aware of it, point being that with its name and https://en.wikipedia.org/wiki/Well-known_text_representation_of_coordinate_reference_systems it’s explicited and thus can be converted from and to, basically avoiding “the one solution” that we lately notice just doesn’t cover all cases\n17:15:34 From Peter Wasilko : @Patrick, do you have any favorite Brutalist Architecture resources?\n17:17:02 From Patrick Lichty : Brutalism appreciation society on FB, sci fi movie Sankofa and Last Men,\n17:22:14 From Peter Wasilko : One can’t help contemplate Brutalism in VR.\n17:22:38 From Patrick Lichty : Book – Soviet Bus Stops\n17:26:38 From Peter Wasilko : @Brandel do you have a link to that work?\n17:29:02 From Karl Hebenstreit, Jr. : List of speakers from Future of Interface workshop: https://docs.google.com/document/d/1tUjMRyLHEtyzHotfAmQUnDsdMHuMWdBkmuG8TlRKEqs/edit\n17:29:54 From Brandel Zachernuk : https://zachernuk.neocities.org/2016/beestConfigurator/#wr=38&bl=170&ta=272&tb=157&ba=210&bb=94&fl=200&fa=1.371&\n17:30:00 From Karl Hebenstreit, Jr. : @Dene will want to view the Exploratorium: https://futureofinterface.org/exploratorium/\n17:30:15 From Karl Hebenstreit, Jr. : Thank you everyone, on to my next meeting…\n17:30:44 From Leon van Kammen : https://xrf.isvery.ninja/#List%20of%20fragments\n17:31:25 From Matthias mprove : Flashback: URLs were never meant to be seen by the end-user. This just happened some years after Berners-Lee/Cailliau have introduced their browser w/o visible links. Very insightful interview with Robert Cailliau (1999) at https://www.youtube.com/watch?v=x2GylLq59rI\n17:36:04 From Matthias mprove : related to Leons wonderful work :: my ChronoLinks contain perspective and and zoom and time and old map identifier. Example: click the 5 buttons below at EXPEDITION AUF TENERIFFA https://mprove.de/chronolab/world/humboldt/index.html#teneriffa\n(This is a 3d mapbox world)\n17:36:44 From Fabien : Reacted to “Flashback: URLs we…” with 👀\n17:43:44 From Fabien : see also https://git.benetou.fr/utopiah/text-code-xr-engine/issues/24 on “in 3D” screenshot (as glTF snapshot) from defined perspective, tried with “friends” via Immers and had a working version\n17:44:24 From Frode Hegland : Reacted to “see also https://git…” with 👍\n17:45:19 From Patrick Lichty : I have to go to another meeting soon. This was great. Thank you!\n17:46:21 From Matthias mprove : Bonus info: Chronoscope’s ChronoLinks can also contain commands that are executed once the link is loaded by a browser. Example: this animation is just one link. Video: https://twitter.com/chronohh/status/1551203958730985472\nDIY ChonoLink inside here https://twitter.com/chronohh/status/1550876398960709638\n17:47:15 From Fabien : https://wicg.github.io/scroll-to-text-fragment/\n17:48:12 From Matthias mprove : @Leon set a marker on something: This is again Jef Raskin, the distinction between focus of attention and locus of attention. /also from The Humane Interface\n17:48:22 From Fabien : https://markjs.io\n17:50:42 From Brandel Zachernuk : Just like SMS, never intended to be exposed as an end-user capability\n17:51:25 From Brandel Zachernuk : But there’s an explicit line from SMS to Twitter and many (most?) other social media platforms\n17:53:36 From Fabien : code related to federated share moment/position https://git.benetou.fr/utopiah/text-code-xr-engine/src/branch/federation/index.html#L222 that is accessible as a URL e.g https://immers.benetou.fr/s/639cb4171757b8382c120da1\n17:56:54 From Fabien : related on “pointing” at things in the real life with MR/AR/XR, this a “layer” of the “real” world https://git.benetou.fr/utopiah/text-code-xr-engine/issues/73\n18:09:04 From Matthias mprove : My sort of fun: Connecting the Colosseum with Stonehenge https://mprove.de/chrono?q=41.89018,12.49231&z=17.11&r=20&t=14&m=SZAT7400-MIII40-8&o=0.8&s=1&c=z,-5,9,vIAb28777542-16,h,z,-22,9,vIAb22010294-26,z,-7,9,9\n18:09:34 From Fabien : Reacted to “My sort of fun: Co…” with 👍\n18:15:44 From Peter Wasilko : We could exfiltrate data as a Visual Meta blipvert in VR. Rez a placard with the VM for 10th of a second. https://en.wikipedia.org/wiki/Blipvert\n\njeff rascins, phrases not urls purle-elk-mount-fuji (ipfs)\nlike that\n\nhyperbolic browsers, mindmaps\n\nfragment: highlight point of interest\n\npolitical cultural implications, who is it excluding, obligations, worst thing to apply\n\nXR Fragments,\nBrandel, url as authorisation (client decodes url, logic)\n\nvisual meta\n\nmauve: matrix, \n\nhttps://github.com/omigroup/gltf-extensions\n \nMauve (they/it) says:\nhttps://github.com/omigroup/gltf-extensions/pulls\n \nMauve (they/it) says:\nhttps://github.com/omigroup/gltf-extensions/pull/85\n \nMauve (they/it) says:\nhttps://blog.mauve.moe/slides/p2p-spatial-indexes/#1\n \nMauve (they/it) says:\nhttps://github.com/omigroup/omi-scripting-group\n \nMauve (they/it) says:\nhttps://unit.land/\n \n21:58\nme says:\nhttps://searxr.me\n \n22:06\nMT\nMauve (they/it)\nMauve (they/it) says:\nhttps://stardustxr.org/\n\n22:12\nme says:\nhttps://github.com/copy/v86\n \nMauve (they/it) says:\nhttps://webassembly.sh/\n \nMauve (they/it) says:\nhttps://matrix.to/#/#LoFirCy:mauve.moe","title":"29th May 2023 future of text presentation notes","tags":"Journal","modified":"20230530121043650","type":"text/plain"}, {"title":"4d3.jpg","text":"/9j/4AAQSkZJRgABAQEBLAEsAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/4gKwSUNDX1BST0ZJTEUAAQEAAAKgbGNtcwQwAABtbnRyUkdCIFhZWiAH5wAFABoADAAcABZhY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWxjbXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1kZXNjAAABIAAAAEBjcHJ0AAABYAAAADZ3dHB0AAABmAAAABRjaGFkAAABrAAAACxyWFlaAAAB2AAAABRiWFlaAAAB7AAAABRnWFlaAAACAAAAABRyVFJDAAACFAAAACBnVFJDAAACFAAAACBiVFJDAAACFAAAACBjaHJtAAACNAAAACRkbW5kAAACWAAAACRkbWRkAAACfAAAACRtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACQAAAAcAEcASQBNAFAAIABiAHUAaQBsAHQALQBpAG4AIABzAFIARwBCbWx1YwAAAAAAAAABAAAADGVuVVMAAAAaAAAAHABQAHUAYgBsAGkAYwAgAEQAbwBtAGEAaQBuAABYWVogAAAAAAAA9tYAAQAAAADTLXNmMzIAAAAAAAEMQgAABd7///MlAAAHkwAA/ZD///uh///9ogAAA9wAAMBuWFlaIAAAAAAAAG+gAAA49QAAA5BYWVogAAAAAAAAJJ8AAA+EAAC2xFhZWiAAAAAAAABilwAAt4cAABjZcGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT0AAACltjaHJtAAAAAAADAAAAAKPXAABUfAAATM0AAJmaAAAmZwAAD1xtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAEcASQBNAFBtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEL/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wgARCAJmBXgDAREAAhEBAxEB/8QAHQABAAEFAQEBAAAAAAAAAAAAAAcBAgQFBgMICf/EABwBAQACAwEBAQAAAAAAAAAAAAABBQMEBgIHCP/aAAwDAQACEAMQAAAB+qQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUPEqC49ACh4lQAC8vKFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUPlU+VyhefexLYBxB+cZQAAuOjJIJ4JsLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARefAB5FT6TPr8qAcOfnGAAACoJNPuA6YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoPzsOWKHcn6HmYADhz84wDamxBgmoKAHZn6Fm2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQ+ISCyhkn6EEhFQAcOfnGCp9an08ChHx8ckaFCp9KH1+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADymcT362GPwAAAAAAAANBsZ9/r4KFC4AAA1mTJs8eMAAAAAAAAAAACh8/nxaUKn1kfUBUAA4c/OMA+tj6eAKGrPzjOcBtT9OT2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOc2djw9+uq09UAAAWEfWdhIVZX3AAFDR588TXlv1mjp9XpanM7e1ItZXAADwmY+tLGSKqtAAAAAAAAAAAA40/O41wJRPv4+NDxBOhMQOHPzjAPrY+ngAD4+PmwA/R47YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGqzZeK393f62v1enqgDU5suR588PYb2ty5ZNqauNLaz8Z9dRp6nO7ezk+PPd1ugMvx40+xm4KxsNvhw9Tpasa21l0Gtr2p5rb2Zfo6fM8eMLJ70Oxscpu7e618HR6utrM2XntrZkqoq9JsbHQa+uAAAAAAAAAAAMY/PsjkobQ/RM6w/LYxQfXB9OA4c/OMA+tj6eAAPmQ+RgVP0DJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALSJ7q2kGsroQ6G+nbnKDZYsYAx5n536npJz5yh4Oy3/SIlSnqo6tLHaYcXSamtG9tZd9WV/O7WzyO9uZXjxuMGHT588pU9Tj+vW0xY4puLWTKmswsnvh7De0ezsTDRU3G7+7oNnY1ubLu9bXkyprPaIAAAAAAAAAAAFD5KPmIoVJiJpB8cniCbyXiUCh+cYB9bH08AAfHZ83gH6PnagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCOrSxxPfvvK7Q4nf3ZKqq2oBhevUQXtztcOHotXX1WbLJVVW6vLk4GysPfz57XQ0thixxva2Wpz5pSpqrx9Tp8+bkt7cyPHmTKirji2s8LJ7kSqrtHs5xqc2XJ8+eh1dfPx49fkybHFj2OPGAAAAAAAAAAAB+WZjgAAAAH2YSgfnGAfWx9PAA0x+cJogbk/TY9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYvr1wllvyLV1wAAHO7Ox0Otrxhb2ne1tfxFhvZuPx2ehpZXnz5zPpEeaaHqgAAAAAAAAAAAAAAAAflgeQAAKlAVB9lkoH5xgqfWp9PAsI0Pjsj4oD6dPrYqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADzI3trOTKmsAAAj2zsNRnzeM+pfpKcAAAAAAAAAAAAAAAAAAAAUPlgtAAMM+YihUlsk4mYzD84wDYmaDXmECgO7P0INiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwvAAAB4zI9ogAAAAAAAAAAAAAAAAAAAAAAADTn5hgH1wfTgOHPzjAAAABLB9um+KgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA05+YYKn1ufTgOHPzkKAAGedCSQT2S+XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCoAAKFQAAUKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGD79+sRk+fIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoeUz7RAAAAHhM+8QABGlrZ4/v1JtRV+0QBye5t5Pjx0etrjh7De7ev0agHhM+8QAAABQqDU5cqW2w4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhevUa29p3ddobrXwXAAAsInurbv63Q2mHDkeYAi+3tO7rdDh7HekyprKg5Dd29hjx7/WwUIJ6K+nTnaG8FhFdzbd3XaGxxYsvx5AAHEb+7zG5tYGXLMVDS+czE13b5XjxIFZX77XwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXNmiu6tsb37keqrOu0dPRbGfkt7ckGsrsP372eHFiZPcK395i+/Uk1NZ1+lp5fjyNLnzRZc20rUtRdEeXr1ps+bqtLV5Te295r4NhhxefqYbvbqb+fo6lpEV3cczubUj1VZ1+hp43v3o9nP1WlqZXnyBYQn0F5rc2WeOb5/J8xHNpY9loaXH727usGDqtPVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8JmNrazkqpq8T3khPoLzd6+v3Ffo2p4Ky39vhw99WV8fWdjKVPVWzPrEDHmYZv7vrNLTtTyG9uSbUVfGWG7vNbB0Gtrxza2W+1tfQ7OxMdFTACKri1lKnqsDJkhy+upPp6rirDdlalqvVAGJ69aXYz8jvbknVFXHlpY9hoaW3w4ojureXKWoqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADymYju7fJ8ed7ra/rEbrXw7jBgja2s9dly7TDhkqqrYmurbZ4cXQ6uv0urrARnbWclVNZ4zMS3dvutfDbLYYsY5/a2bT38+ZPqKv2iAIsuLXbYMPrEcrubW718Pj6mS6msuBzO1s6zNl2uHFxFhvdtX6PH7+5rMubNx4um1NbtdDSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHL7e1scWLYYscZ21nUyvHnotXW6bV1vFPsjTZ82H799Jq61QCwvB5Jtl7RHnM+czps+bdYMA9fMXgGsyZNRsZuo09W0smfaIqAeEzo9nPg5Mm4wYcrx4wMmTZ4cWR583gAHjM+0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQqAAAAAAAAAAAAAAAAAAAAAAADgbHf7uu0LwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADS5825wYagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFDwmciIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5Lc28PJ77mv0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy+3s87tbPe1uhm+PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFlmA/ot79E/NaH58+jXs38DSbTX8gAAAAAAAAeZpDfgAAAAAAAAAAAAAAAAAAAAAAAAHF3e52NHp3yAAAAAAAAAAAAAAAA5ra2eX29nu67R2WPGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIo66y4joN2cfn1J8qfYep+yPiPJAAAAAAAAADUESE3HoAAAAAAAACKeutuyotCLevt50+f0NwAAAAAAAAAOCv7DaamHqavV+Uvr/XzRwlBIvN141+f18jfaO2+r/jnGbrTxAAAAAAAAAAAAAAADntjPyW9udrX6O5w4gAAAAAAAAAAAAAAAAAAAAAAAAAAABBPf3Ui8xX9jT6vyl9f6edfntHxF/u+Pv1NvAUvCGEdsYxqTrzgDuThy88TvDLOGNUdedGRkbI3BzRJBzhyJtDujkTDNWdEdeaY4k9zvTAOJMw70i/rraD/oHQ9hSaHBdFZTTwlBIXMVsP8Ac3l/iJp4Ohws+SIO3u87XxTPwlHz9ns8Lf7+ksNno6vUztfxxHQb8xcPSdbU6kbdNZRx1Nr29BXyHzNZ8pfYey3WhrT9845v5z+o9X11HX+Ob3J/H1Egc/X/AD39K6Sffm/Nwj3t/na+Pl7fcl/iaPsKfUirrLXhejsurpdHLxeJZ4+pAAAAAAAAAAGlzZuN39zrdLU3+vgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgX6FdyPy1d0Fdg+QftfWfZ/wzkPj37Z1v1J8j5fjq/FQ6YjEnEhguOzOpIKJSNMao6M0B3JFhNZAp3Z1pEBNxCpKhxJ0BpjXHakWE6EJkjmGb0igk85wvO028vy99b636T+W8t82fUup+nPk/J/OH1LqupptGQebrOvpNP44+491P3zfmuWt9zm7bak7lKqBPofR/Q3zTl/nH6h1UlcrU7bSw8H0ll9D/MeX+Z/q3WfSfyzk4C+jdLL/ABVHEfa3vRVmnOnzznvmX6z1+30NbuudroE+kdL9v/AuA+Dv0T9F+6Pz387+NvuXdyTydRsNbFG/VW30P8y5f5m+rdb9G/MOWiLtLv1R9QfJeTAAAAAAAAAA1ObLxG/u9Tp6vSa2uAAAAAAAAAAAAAAAAAAAAAAAAAAAAANZs+8/W8Q/21tobDPLfGVPzP8AVul+v/i3Jw0VNuCRDgDgicS4g8n40RFR0RqDfA7ogon8xiEiXiHztAb45g3R3hAZLBEJPxYYpBR25cbQir6d0sX9bcdlR6HI3W/PnznmejqdeIu3uuHvrCcvn/O/PH03qft74DwHI3W38yfWeunT59z0c9PZ/UXyXk/kP7T2k9/Ouc22ng+XPrnXzv8AO+dgL6L0kn8rUESNytXE3Z3nZUlfM3DUnyR9m7Sb+B52QearfhP9DfRfu/8AO/zr4Q/RH0X7o/Pfzv42+5d39VfHuM9PL5O+ydp9CfM+Xhbu7763+McZBv0DoOWutz6g+S8mAAAAAAAAANbkycFZb/S6mr1WprAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfG/27rpv4Kkh/tbf6O+X87F3W2e01Mc0cPUcoRkbg2Z1RGB3hw5LBB5vDBO6OgImNwehLR88H0AYpCRPZDpQ8CXCOzdndkBk0EdmoPAk05A1RUk02/p8s/XuvnX57z0c9PaT7865353+ldJq97Y5S33PoT5nzEW9fb8rc7uDnyTdwHP+pHPT2f1F8l5P5D+09pPfzrnNtpYPlz671/178R4n5N+ydluNPDg7Hr6s+O8hEfaXMOdxfTt885uHu5v5v4DnZB5ut+E/0N9F+7/zv86+EP0R9F+6Pz387+NvuXd/Vfx7jL/L5O+ydp9nfCeD+afqnVcjebuVg8dHW631B8m5MAAAAAAAADB9++Dsd7dYMPYaWoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANRtZLvMfN/1LofqX5LzfzB9W6P6I+Z8/t9XwMYwjZmKehkmuPEhcnMsM8Hia82R6GuM8tMI2JQ1hkGYYZ6GQa4zT0Naepmg1xeZx5ms2suXh8efqdhh8eRoLLY2Wri2Wv4Gi3s2Ti87TWx4GX3j5fW31cWl3M2fq4r4arcy73Sw2HPWWxtdPFn4fA5/fz7PVxYWbJna+PK8edFYbG+r9fQ2GxvK7X0m9n22ngJ1O5m2urhgf6H0PWU+lD/a3ki8xVzhwdEAAAAAANXlyUTtcWIYnr1wVlv7nXwddp6tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGOOO6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPIjXqrTlrfc6Sq1ZP5Op9QAAAAAAcRv7vZ6Gl6HhM8FZb+zw4ux0tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY8zy25t9jpafmcHZb+dix9hpalwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAADkdzb6TV1vbz54Wx3rodxX6PoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAABQoVKgAAAAAAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAACw4/e3Ox0dPhrDexvfrv63QrEc9tbHS6uuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAFkx4y8vXm0oJisqwRIuPbzPtE1iQAAAAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAA5jb2dtgxc5tbGoz5u8rdDn9rYx/Xro9XW2mLGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAtmMeY8pmnrz6IuiQRQSuiapqIWo8vSp7+J9vPoAAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAABYcJY7+wxY+W3drcYMOV489Rp6ub48AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAKHh78Y/oQKlShQqE3IviRUqUhcmqKF0T6+fQAAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAcju7fFb+9ps+bsNLTkGrrsvz5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAADxmMXJCfN0LZixJ5AvT6xNyawqXCJIslbMD0ifTx6qjymfSF0SAAAAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAhDoLvW5cs28/R7TFjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAjE9+cb150FjX+WTzjZI8fc9HWbex18wqVKlyRdE3l8Tf5CkzZPm2ZuibvK308ZjJx+vSJAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAADX5PZOwx4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAGDk8eXrz6Hz59E5PQWWPFy+/L3lnLgrXu+eshUuABcXF0TVN8TdBBIJWp85jyRkePXv59AAACoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAGDk8+PrH6R6s9x8q/WqDXbnm179PHqevn9hIfNblIUkCKlyb4XxNU1EKl0TQp6ViLZm0snz5TGVj9+3n0AABUAAAAAAAAAFhcVNXnyekRsMPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAMX35xPfiqCfP0+TPsNNjbEZuGdnre5v4Le7vntm08/ShVFyboVhcm+JuhfAVKFsvP1FwhRPl68+csvF69I9AACpz1hm5C63dTuZpj4mmxss5WKBjZJy8ceErPU5HiMbJOXjihi5Jy8cQ3211L3FUvzT9W6v6I+Y8tn63nh7/eycMddUaXl6nLxxaY2SfTxHvCkPL2Hp5XHPWGbkLrd1O5mmDiqakqSyPDxlbLI8sf0qX+VvpWEd9JZRN2lz2dFoTfwdHzthsfP/wBI6PP1sf0d8w5jhuh3oU7y++pvkXJxie5JR4SHtDEyzmYoi7q7XuOfr9rqYrfSsI76SyibtLns6LQm/g6PiLzdiDtbvP18U5/PqD51+ndNdEfRnzDmc/D4+ePpPR6Sw2Z0+fc970+pzx1ZfuZeLvt+TeVq/P0Ea9RZxv1NpO3zyg+f/pHR5+tj+iPmnM/On03p8TP7+g/mvNb7Rw/P/wBG6DFz5ZX4umj3prLkrndl7iqTy9eom7S57Oi0Jv4OjAAAAFAAADxmMLL4seQLfT5M+yVFfUbTU97HBkl7h9vu+f2POVsroXlQVhVN8T6RN8QKAg7v+vtlQqCkx5zBPv49AASLy1F11RXQD9E6HA2fek39rqqfRwdjJJvJ1UMd3e7TTxdZTacY9bbdLVanF3u/0FbrSTy1Vw/Qb+z08WZhxRL2d5Ofz7nY96e1y9bForHYk7lavZauD56+k9P2lFod3ztbwfRWO9r8HE3+99c/GeOx/UwR9E6ITTwdBttXHAP0TocDZ96Tf2u2oa/h76w8/czRwlBDfcX3r5iVuPpYd7e8krlaroK7X4foLHqqbSiXtLn6o+P8h8p/Yew+sPjvHwP9D6GQearI76a0kXmavuaHR+UvsPW/VHx7koXOhJCPlX7H2UhczU83abeZh85WHHxN/Yd9zlZ2NJp8P0Fj1VNpRL2lz9UfH+Q+U/sPYfWHx3j4a7i812z7jfqbbvudq+qp9XwyesnF57Wgr4N+g9DOHz/n4Q+gdBLvy7l+VJEI97K3iDtrz6Q+XctFvX3Inn51znyx9g67sqHSkHmqyO+mtMjH4pLtaHQ4y9sJ1+f8/wDJ/wBh7DsaPRlviqT51+odR9S/IuR+WvrvX0mPqj4/yHyn9h7D6w+O8feAAAAUAABajAyefP15ogUKep+TvsVP4ZIyMXrOw5Jr4Pb77nti0uifSJqJgIekTfE1LoVBbL5y+n91QqICkqFJgn18zQAlfjOb7eiqvl/6x1ebhxYWfLNPB0MZdXbXx55S43voL5tzEKd70Ot28n1T8h5L5S+wdd9BfN+bizr7mN+mspQ5Ko6Gs1Yz6y4+jPl/K/PH07qfo75fyvzJ9Y6ySeVrNlq4Io7G6+gfm3NQ93F5yNvuThwFBA/0Tofrv4xxuN7mCfol8Jo4Kk2urj+X/rHV5uHFhZ8vf85XeHqcHYy67b95ev53ehr2+mu2svBdFZTTwnP8V0G/1VNqRj1lxO3zvnfnb6d0/wBA/Neb4HpLHa6WDg+jspU4+m6aq1vnL6l009fHuSxDmjoCGfr3W/VPyHkvk37D2H0l8s5X53+n9P0tVqyhyNPqtzLxHQ7/AFVNqRj1lxO3zvnfnb6d0/0D815voa3V4y+3YU7u/lPkajS72x4ZPXU1GnudHXhLvegmLiKLh+gsem+c871Jw53trsxH213NvA8/DndXYnn5zQfLH2DrpE5ety9fFwfR2UjcxVx70ln2VHoY+X33FBX3+PPLW+3zdrucN0Fh9D/M+ZhHv+g8vczt875352+ndP8AWvxvjqgAAAFAAAYvqMX34pPmhQoV9z8mfYKjBzR7efXtj9zjwO5I/NZql8eromsesDYy7DBr1TdE+kSmBdEg82elAVhSVYUlaiyWTj9Xx6AFTh73e22lgtmdVuZY96a1lDkafU7mbiugsJe4ik4HpLGVuRqYo6+27/m63l7fdztbFG/U2spchT4Oxk5a33M/XxyPy9XGXWWvSVWtk48fK3G73/N1vH3e94+3K3G5xN9v/VXyLkgABw97vbbSwWzPB9JZcjcbnT1WpMPD0kT9ncYuX3KHI1ERdteb6s1pX5KoA0O7miLtruRuWq4v662mjhaGLOuuN5X6/vj80li5vcm8hU8QZpszi+utpW5Gp4253I46m0lXjqez1Mc9RZzbwlGBod3NEXbXcjctVxf11tKHI1Ea9ZbyHy9X3NBoQ7293d5js6PQ4TorHpKrU5G73pk4Sj1eLxpjZHQkN95fSdyVR0OhgAifr7aT+SqoY7q83lfrypydVFHXW2o3s8qcdTQj39/0NZr67byzDw9Jz1lsR709pL/EUdkzEXbXcjctV9rS6QAAAAoAAWSwPfm314oihQoPfr5I+vVeHsT6ecnp49zpwOzJfMe7i4uiefsbLmba7kjmOTrEVlfE3RKfKPVU3R5s9RbKkwAL4m0tRbE5mP3SQFQAAAAAAAAAAAAAcJfb/KXO5IvL1fQ6GAAAADl7TZyMXnoNDAAAAAABptvJudTGBqtjJnYMfvAAAAAAAAAabbybnUxgADBy+qmbi8gAAAAAAAAY8zh5/e018YAAAAAAAAFAADDyecf14vLUWAoU9z8lfXNTwz5M3DlzsWWauEmQed82zGn3M+gstzlLTosbasZL5XlLPfv18R0dZTennzUuSSQeaelIikqSFYm48yxGR49+kSBUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFADzLTns2OyY9Imkx4zG0h7RNkvlL63Po2t7qZ83BnlnjNPs6TU8/ThOgvo+6TpcXzq2Rj6/R2cXPt+njxLXG8Fl4te6FU1QiLfSiKlU0RQJFqKFYnJ8ewKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoADylgZcej2dbnd3RxsjH9+e6qrDca+zWXy/8AVLf3x7+41NzNwZpM5Xnuxpqq04q+v4nv93STT4HvU3+5s5+ra2avieuP5zYYfFS6JuRHPSUWz1NrsaaztmLon0iQLZWIoWpzMfsCoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAxPfnH9+OLsq+P7ioxc3nW5PM0c1fdXob1J9fO30Tsk7uXi93+Eo8tzHZU1IRHt1vw1ea+s2tPXb+DNtI2mrtaml9fU/GRs9eLi6PVYQR9CrOrp80m8tu0Li6JughbJKxFhkePXpHoVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAGuyeaT44qzr43uqbHzR4zEyc5fdRXbyfcB993V7O8xiMcpczzfb09NU+fOqxcXeYcOww27njJ2PG21feBpevp35vubPWmsTeHqAfoWr2tJl6mos/HLvbjRrdnr61SsKQSsmLS/wA+sjz6FQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABrMni6Y5KxrYov6ivvzjkz81f9NobqfUC9t23l6jwx6ms86svc/V95WaHGWfn597vV8d/FZs4fWfGywxudKGNP/zi7zsBEEp9Qt3N/wBnSYOZsbDSWGHsef5+Tee8Vj1WBCVsxYXROT49ioAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAFprMvi+HJ2NbHN5Uc9m87zy7ehu8zV2fD36ifpOl17Xsxa3iwdfoau+19Xhez86G81/VjvnHkePGw1221cXrjwStxd91NVuVibyseoH6287KpreQutDSdDW7+p1504K/viRQpK2YsRSJzPHsVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAw/XngNzBq/ePB3tDW2Ffy2w3njztqu299bPdPqK7azwcuL09+GfzJ1Lj9smCOu5weGbW9ox++Pzk4/OTixbzT09zpaWbobvvzvX7vDl2MRm4/eLmbDxPOWmnr9ur2Ovr9JUdDTxlxvTW5PHVYMuVHqyY8pZXj0KgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAiM93V5TawZaLtjBylho3eo2fl0dVZ7nW2PSPfh7yvb3h6nR6cQH9AruYudSvnH7+MWww487XwbDBqb7R09lq61YnY03beetbaz15xkeXqPbzNxZMXzHr5ZKcqJ2Xj30evn2mP3SRGLLKiagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAj5K2cG+yeOgmN4bj1GRMU8vOXnLElgzGv9xiemD6jV5/GvvMFNvD7TjzMett8GtuMGDZYMW00/WZhy5uDc3Wh0Gx17AEEgAEEiqPE0vqOd94+Ty48mJmXW2CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQA+cM+HiPXisiPZGbKsxTJHqi/wBRdMbNOwhnmZMbLz62OP1sY9ZflleJ949e0ehWJuj0hbDHlQxoYkx4GDMa6Yw5jXz51mSNVMa6fNxWfPpKWMGeTcGcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgBYcV688N78cr68c/MeEwRUuAAABcVAESTVNZ8kJBIIEXSumCalxclMZXmeoj103j13GP30Xj3RNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAPJGrlpJ86WY1kxrpjXSwnnAPIwjwK+/NqLSgKpCYrC4uLj3j1nRPojYmfE58Tsk7KJ3UTuo97LyuSABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAULEeR5lskEghceh6F5ckACqCaAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//EADkQAAAGAQIDBQYGAgICAwAAAAECAwQFBgAHERASExQVFyA2FjE0NWBwISIwMkBQJCUjM0GQJoCg/9oACAEBAAEFAv8A8Em+2dZPOsnnWTwqhTDxEdg6yedZPOsnnWTzrJ51k8A5TfaDVq58SlExtOqeFYieN39I+YB2FrZZZkaK1cnWIwGrMRKiU4HL9mr/AG8tViFVDLKcNJqb21fyXj0h+lUr9IVdWv2FnZI/7MSso3h2FlsC9ml+FPrCtqmGjRJi28l49IcWcU9kQ9mJjPZiYxzDv2ZPJVbO5q0pFyTeYYfZfU+6d/SHBu3UdL0iqp1SG8t49IcdD/hOG2+TtEhp8lxozypLcdHLKLd99OKHBMrR6k9J/CCXSF/wAd/0EpBFdz/K1Uufc7LjpJTemTzXj0hx0O+E8knGN5dhYYZSvzHCLfnipJFQqyf03Pq9KLriXTi/0B9yM0s3lAHcPMvMtW4rShCTYWw6gprKvmEMq/bOfMsOyVYDrr/ybXZEavDyD9aUe8KBUDWqXImVMi2s02mr40zmeNM5mnFweW5vwvHpDjod8J5dbWJUpPjSV+0VL6UfyCUekWwvnAxc0Dw/kk2fbmjNv2RtNWbsijO0rp4g5I5SlJly6eE75aY2siBkFbQ4crFsTxqLJ8k+SdN26hUjFMSWlSRiIHlpIIKXXM5lJNONQ7VLSWQUqs4VGolUcDGJM7ARmimHuBF4kupKWBGPxKfk3OMrKBlZKQ7C0Xnk0Y+Isyjl4cOdOHjO7Ef5Dhwm1QvNsPa5jhGxy8q/rFdQrERjr4nhof8ABcLx6Q46HfCeXW/bsHHTPm9h/pMfwDl74n3ThCNbCsuR0xdkeN/IuOyKIg7knDBBZjXnBkQqZCnce/LgiQrGuMUUWTkiQpV0dpaVT6sfVnAmYuiLT0n22YbFgIdZNeyG55lsVMiJI5BN1kp+W0KLAgiwfkkUYtToWJ42K4sSKBEU7QRuDJ2qp7NQMWeUUsbQrRdIeZP+TqzdOspxoFqiaobxric8bInFj9RXhp5emdQb+NkTlUtba3M7x6Q46HfCeXWyQKtLcaWh2ap/SkrX1ju29ddOVVI5E7VnEv4155Hfw0NClko8I+Z6bCC7E0rLJZs4yQZFftkoqVj87oknwx8enHIqE6hK0bkfIqmgZZF43cFXlWrbHrFvPtgbS0ViNjeJGQU6yNpbKpujyL6XSimPYGhYc5ZmaghfKA3nSg1rqiqsrFFkGjBmVi2mo8ZBswSOi0/krmE636eifp+8ekOOh3wnkl5VvCx05LKzsrwho08vKpkBIn046DdvTjbNfOM43B7jH/gsb2PRfkUpyfM3qTZPEECNk8EhR4GIBwKQqYf0Sv8A2fp6J+n7x6Q46H/CcDHAgTuosJBltt0e21xx0brQqufp05eYkSgswmfPMV0V1Upx9GBDnUkJv+rNodzG8DM8DM8DM8DM8DMeaKdkacaRQfbNDwMyk1H2Pj7x6Q4tpF0yDv8Ak87/AJPHD5w78tQqji1ycewQi2X09yhv+gZIh8IkRP8Aspn5Rx0P+B4Xj0h+lUdO5CzHhYNnAMfs3M/KOOh/wXC7+kfMiwcuMaU+bfGitHZl5kBpdDQhgDb/AN7Tt2Rmi3XK5S+y3uwihVA/R6pRP5bBMLkcsZ1yxUTUKqTjZfllf+VcF50ycyH4hx6pef8AR34vpFKPK3k2zr7AuTgDesSJUihMtBEB3DzcwBibzo2QZpmXEViLk4olBa1Po9J+jGrrRMjxs3y2DDaM4CqKthL+3gIgGSjvoWMZloXG7lNyTzTaD90oMDIp4WbfRi7ZXrou2ab1KXhO68byUjGBHy6EgX69lhXBl2CVdpwkMEko3rLVEQDYJKYQjSlt/wCds4I6SeSaDExTAcHbkrdEHb+VdpRaqkojVGyeN2xGqXCUkO7mzCXT78RlWy+GbN3K72VbMATtTFQyK5HBbSOzCJDlYHWIlnWIonFoCvYOA+56nKuXq8auR+hU25AaM0mSbyUbsCp2picyLhNwTib3TMg+7VDi17Sich08t37GZCqMZSCFAYSW7el9er/9NX+OUVKkD10Vo1TcAo8lZhk6b1xsdtGz0T3i3Y2NZgg1h3MwLSOQZFc/ha99ikUKqHBVEi5HcYj34rT2wgnDLRaUVGHmXZq+zMkYp69JWk+7BNYGkagzcWNfu8IBGquAGS8k9+E0H7XC4C1jI480+GvsxSWTPXJAh+oXio2SWxzX2bkpevXHRDgoW4APRilQVYYc5W9j+vVA5iRr0kVMy8l3wtY0zhEwXZn0YjDNUDCIJlk7CZwc9UW7PDzipVMnT9knZSxIqNYBsdtH8ZluZKaDF0+sk2XXrrk1tBUGUa4kndqSEY9Q3bK5DWFBi0E7iyupVl3Q8SP1E+NqAUXTqzNwaV5mp3YiovXXprcVUGka5lXYByhwmZUYsja1tVgGwMQCZlyypu1kiGMtPM5FpH2IzNudzLygxFfBif6+fwDd+qzjG7EFkirpuIB0xW7ROnxrDPVlY+DRYKZ0ib5IxiMkmzgWrMfIJQHiJCmwEUw4KJlVImgRJM8CyUUSRIgVVEi5Cl5Q4vmCUgk0rjRqIBsAkKbOinnu8iiJViqwDJbPZVhu1iWzLHTNJ6mnCNEsI2SJgFAPN1C9T7XWJczR6Udy/a11Gpu3f/0q92JrEW+10g9MspHGMK/2skZAQMmkKxmrUjRH+7dOCM20VepaUlMndQHjKWjzrqMf4ZjAQqc2yVV/sz2+ITcgIGD+hkpEUsKmYVGTMjJL+81Ek+xwumcb1XszIBFRdXYDMWD+JKtzumCcU7UVIXlJ/CutmdQKkA6Wfw9iuchHTge7+JOW9pAO4KfQsCOXV0snZqGcylc4PkTOWZ6xKkdQ7U7CL/oJOR7KXY6Ro5gVij/dWLUFZhI1mfLYY/NQJLt09To3uyA1Nkum00yjeVFVUiCbm1bGTta4DHyqMiWXkF44kdY+1OXC5GyJbQsooosoiyStRzKurUPMha1AM0eJPUjGAhXlpImYtrcbxs0jI8PaxXHtnIkZpInWiUrSqopkjNIx2GtbjdnaSKGKYDll5s8a5TtBOzGtbjmjbCm9Pj+URjyq2tYRb2s3M3cJukpCVRjiqWtcRbWrcySpF07TcVa/IWGwKWFyw1DXYMnUsZ3Mwd9XlpWbsDSBQc6muhFvqc4DIeTJMMJuxM4FJzqa6MLHU38zCQQk21onjV5hG6jkWUdamuRPC6iIvV52/NoxZPU16CkBY21gQyfuzSFUNqa+6kLqA1kVZN73dH2edCwv6vbi11tXZwJ9hefVMHcW0DXvE191a7b20/w8UF8RP1EpDUVZk/e6jIINk9TXoKQFla2BLJy+tYtUNTXvVHUVA8XWbopPyP8AGkZArJMxjNzRkb2Mn93YtP13slV4D2ejpF4WPYwrM87PgG2W6QGVsMFHBFRFneidzBRSDlN1CsV0kFjsHYlI6Qk480a5eyyz5CuxPSLJfLvfjKtNyJTUERojX3gtpC0vBIWDjE3p1YePVTWTOwds3HammRdcBygq0Ixh23xD9z2NmkQ750jDx6Kc5GJMjVZ4J0rV8xh4vvNZesNjJfimdFzuwcuDvHDGtIERkKyA5HR4QzVdZR85aQrJulOxKDdOrvBKu6iWT5SzNUxtHs7FFLVWyclZkIOPbK35RQ9lp6NfPHuqdCySZSoxTCSfrTD+I0+YotLdSkI9nRZc8fM6mfIoWLPMyXh5Fdnk2B4x/TqelMt7ZSmrCNpjszSx2yVNEQkBFd+yqdXhE0bfApwb6oOvaGtXSHbQkpSa0xnGUVEN4ZtefVNOqRJws3QGXYY54aPfe8Ma/Cz3z2pUpGTZ2mjtWcbU3pmNgucoaKgoSJUmpFGgw6aVxqhIIdOPUP8AFfvyMUjHMkeLjOy/3rqRascKYDl1KkuhF6Yxu57FI91QtLje87DlhIJJaOhTSSPsmrnsmtjdPot7O/IfCG5DR70j9tJfLkT9NUhwOWeWKlGRpBPIWogg+jIoZPPZNXPZNbI9qLJljb8G8l8ubfET5BPFIJ9Zb2TVz2TWyHhTxri1fMan8Pjz4tMgqV9E/TVIcDlVWIgD8oqsQ/ES1VUweya2RlfUYPJq7SjGWUkV1ZE9+l1CRUqvDuqTY3s44sdUbWEHGm0imLplI1x1CS69kqrFYG71NQqydvdJta7XUTLzupnyLTr1Fl09T0P0vavTtb9QajomUgYWM74f+GC+eGC+VStnriepfz3TH5bl59U6f+mlv+nC/sxr8LPfPav6esnp+D+daiNTOICnyicTNkOChdSJVA7fTj1D/EfPSMUVFTc0XHCmP97bu0e0WmwrDBXiS7xsFZje6oPU6S/DTSN6Mdk5E94JprOI1c9jemLXV3h3MzKBHIMGSkm7mYUp2kVImjnL5QqsWUomMhKPY3HT1d+evRBkDS8aEk2EriMce0j3lh3T1WQ4N/8Aokvlzb4g5QOWUh1WCjeeeNiLyjt6dgdY7S1fMan8Pjz4uL+XTUIdso0l3TIjl64kDwLNdq1mYQ7ZVpMumZHUy7eFhjuTslOUhKOmLu03JQG9b0xR3OBQDLnNybKdT1HlSFlZl9ZXVKglISMt9PWZOIu2yUQlIzD+fXpNTPF5qZ8i069Q5dPU9D9L2r07W/UD1mnINJuuvK85bX+XbpFsMzKybUyp2+okKq8RhbC8gT0myLzmXn1Tp/6ZW/6cL+zGvws989rHp6yen4P50uiRyjPUN4wVRazCQSNZdxUZpx6g/hunSbNE6grDGRxjqf3zuLZvxdc7VhDU6SUmcscBNS8zFsSxsfwVbprgEW0ASgBQUaILGSbpN+Ax7URepkSjG3xCzRFziLFugPBRIixe6me5CFTLndzTADYDFA5Qj2oDwPGNVBRaIt+CrRFcySCaAYMe1MJSgQuKx7ZUUWaDfipHtlhSYt0BwxQOVvFs2ajhsk7TasW7IMOQqhTV2LOLWPasQ4OISPdnaRrRjwcs0HhG8WyZqYtDsHKjduk1SVSIumnCx6KmGKBgPXYs5mzJuyLwWgo5wds0RZkWiGLlVu2SaJiG+dwRnDuCMwAAoHhI5Q6SREE1EiLJkhI5M66xGyLTUsxXPiPFdO1Wg1hV04hzop/rSDwGLaNWUXacHDgjVI6nbDMWZ3Sv0c4S66CdWTTP9CnKByyGn8W8MOl4c0fp5HMzlKBC/rSwi8fFKBC4qqVFNRQZNRmzF6r9qFlQRShUhXUw5wTKssMuo1Q7ecA2+1M6qKmN0QQRMYCg6cDLKN0hlDlKBC/S++bh9IGMBQjgF8/EeUHrs0iq3Q7zOQgJlMcCAaaSFx9IicAzq4JjDm2bZtnLm2bZsOAcwYCoYBgH6KnHIkQZNwatpB2Z2oij28xQSZIuJ3mMWLdP8aRyDMPo4R2wyucwjm2bZt5ds2zbNsEmcmcwhgKfQ5jcpWRu85eRkROfqEMKcmBCJw6zsW7VJsX6O32wVM33482c2c2b+bcc3zfObPwHOTCht9DWOQ7GyTlCRUaR6u9CNq3KCDZNuX6POpy5zb8d/MHDbNuO2cubcAHPfwEdsAd/oO2IPV5FhXlXbhlHosEfpBRXh342KY1lZkw1rZZ7WMsZvU3yXl3zfN83zfjtm3HfB/HP24U+/wBBO0BXSZtCM0vo/wB2HU5uH/h695Vzud8FfOrlRNzRv8EcHPdhD7/ZJQ/NwDDm/B4r/lc+c2BlLD/W7Zt5duO2bZt+gPAht/5nMAcX0g2jUWb1B+h9Xqn474b9rz4sPxxNETYRvtlRDZhg/rD5NsEOBDcweeYflZxlHlF30XWpp0+shRAwGdoFMA7gI7ARyiqbBVIAqOEkhAd87Sjz8CukTmy1XJ3BSiY86epPz9usmiyIcqhbZXyz7arwZYGOKqQ+dpR58EdsI5SVHqk5uHVJnVJgDvwmH5WcZR5Rd9F1qadPrJ1SAXqkAia6awYdQqQJrJrBiiyaIJrEVATlLnVJgHKbLdae4EUhtUilUbms7dZOS6UHHllLHZlI63ycFIJnKqS2FljN/aGcayhjcoFfvph03kHkfIYKpAEVSFNgOkTHy4WlzXlYl2Z/GCcpc6pMA5TZbrT3AikNqkUqjc1nbrLTYAr7BkWz2QkfbZOCknz9GPZKWGes7tGyTlZeMnab9rk7dHr+QVd2avZWp8lgYTUkdiQxZJNtEPTPm0w8PHxdOtDmxKCO2dUmdUmWws4ZxBWGWVsM5LpQceWUsdmUjrfJwUgZymVu+tstPvxl7FWFoaVSmo/LnPyDKd6dzyrhIljbZdF0XixrTFJ1KzhYG9utPcCKQ2qRSqNzWduv4Kh9vKPud/FkJ+CJgDAyo/A74P63ibniXniXniZniZg6l754kYGpOw+JueJueJueJueJuVyc9oGWXGpt2jaEoyElC1KqJ2FK6Ol4KPiaG1lI+r181cbvZB9dZiR08cx7ShWVaRy3qHStyun0i4bRL+UcFm6K4ho/T6ZWkmFhl3dlnXOmhkmtKnl5NKwQxoJ/V6erCPtSfn7SkyE81gnjus2LUz5NQvS0IR4u+mKC5i2Gnkys/bWKXeWSb8NnSCcIourbsWT6qPhefPC8+RjPu+Py41Nu0bQlGQkoWpVROwpXpkEdWK/XHtlaTEE+pzhK1FGqxsVIXd3M1l7UcYWhR7VIKLC1PY6gd3StpqZrGt4Xnyt0s0BIW8TPbammVJO3F7uthR5i6nrGylNitq3qe3KB6WuZxWssfrY4lAhXPdz6GZjJOUXKTjLeqZvba7UZAknZpx5PzC2mbgjajWRx222wJ4V7U6eqkraamaxreF58rdLNASFvEz22pplSTtxe7rYUeYupMcq5Z1e7MmMVapok7KWN0oNF04bFSg9Sm4HiNOFzKwM+sZvCaatiqS9ibg6g9M1zFl7IVIUweLuUWiSMUhe4I8i2rVbUsRxhTGrnhefPC8+Jl5CRfrrU9Y2UpsVtW9T25QOo9UHTPTBsXkvbcq9a0vXMKWWxz07glqefnjZtvLx9JS7daF0SuEaMqZtabeJnttTTKknbi93Wwo8xf1xHYBHfyj7nn4PANhDYC2Uw/Ow3/QDjv5PDmSzw5ks8OZLPDmSzw5ks8OZLPDqSzw7kc8PJHPDiSzw4ks8OJLPDiSypwq8FHG/bZRsKLDpWdjCVtrYewWJjGP0H2nqaCNFlncgeoPiQNhl55lHR+m7Q6kxZPXOUcP8A5XavTul3/Y7Ypt7H7Cw3Qq9ajmq2owbWFm8RcN9Sfn7L4OxeudTPk1C9Lad+orH8g0w+LVMerW5S9w5W8G57bb8XAxke47bncdtyLTXSjjftso2FFh0rOxhK21sPYNSd+5NPppsEbqLLtl2qMUsOnWnUw2bIX+aa91UJoCNdPRYqTKqq8psxaGMy9V7jtuVuNnWsjfWajGwsbKweMHZvaq2TFrYwS2oTcJCLo0+2PEX+ZRlHzN0hUKzDzLaca2P1taFDFZQLdouwdpmh3lVSJlkDe8Ygp7PXJecYoNKqQ8nb9UA/yKw7QUgbSwmHi3cdtytxs61kb6zUY2FjZWDxg7N7VWyYtbGCW7a3OxVgq2rlldoy8pbIQxahp5Ot0Guoc43dIVbp1yqNphpboumyZYKdtdhZtYXTOPN1uYq8vLxyCyXWO5GxEAta00cJpOZMFnUX3Hbc7jtuJgIJxfrrUuPMqyo0+2PEX+ZRlHysAp7C6fTaEc5vs817p0/bhGw0Na2M4unYold1dV4k0PpkQ5si1Rq1qkrKwYR+nkeZzOX1moxsLGysHjB2b2qtn8BU3kHh/wCH3xuFNnNlHH/X8A4f+Gbwr0n6e/DfyDhR3Dy2euDY0ZWLGRiIGJ7kjLDVW9hENL/zQVdawCM7TWU4ojpgUFI2MbRDaRo/eE5kHRu5pWVY95R1Xqvs2adrDOfDwv8AzwcC3gG1hrDaxEgqH3PJWSl+0D9FPooyNH7wnLNX/aJnAwvckZXaR3DIyLPt7CsVL2cWsTuCcPCwtTYZV0hlLf5rPXBsaMrFjIxEDE9yRmpnyaBpjeegY7TZs3WKQpSSunTN4rH6atkFHUai7j19MCCeG0/aRq/GWiG001U0v/5ICrNK+Go7EhpBlGJt4l9pmkorB0NrFL39qitAUCOFlBSVF7fNuWybpFWqfma1hFI0fDJR68jR+8JzJ6rs58C6Xh1IaCaQSE7BN59qw057E+4y0Q2mmqml/wDyQFWaV8NR2JDSC9cK6r/hefeCqDKCMIAYJTThs6WitOWrRa1NUXMBprHCkzn6U0nFGumJSqsmaMe2fwiT05awO6lebmSBumCDzTJFRaEi+5o7i1ovZp1dEjlJ9pmkorB0NrFL5N0FrJrsNNEElXbBBaM04jeq9f6atVzoaYAB42NbxLWwVVpP4lph/wAkXFN4drLRDaaaqaX/APJAVZpXw/XMOwCPkHgP7X3xuAGbZRvl/km3nZWlecdJx/BHCjym/oJinR0yqGmTLmiYRpCo/oz0CjYGsLEJwjH9VeKaOnfF9HN5NFNMqKf8JeKaOnfmdtEnzdq1SZIfw1kirpMY9vGo/wAhUc9+beUfc9D/ADSk3wiGFab5TEOmw24SMmnGphakckn4v3DdUSKKTRUiBYE8CdSwpgOXz7eccIO5fsMI7CB9yHkSgcXw4aSLt28BAr/mFM3OQMOH4Oyf5aCW+ESwiOVcNmeCGWgv5TCBcFUAwHIAZusDhqBs58afDeffht5k/wB32HUHYuS0gpHIjZlOVxaF0cJbhPka7F80DDB+Vyn/AJSSeJ/hhcrXwnCyhuRwb8yyu2dbI9+KRlHfIftuMDbss34v55Zu4gZRSRP5x4e4fsOsP45aeYjcptsV3DBFIw1sCliQw37XBP8AJITPdnNlZH/E4W9botzLYubfgmbYVB6ifUHIwf8AXeSWN/sKh+/zjxTHcv2GMO5stKnSbjujggRYTHUTyuCU0Vg+5cv+SQuGwxsqw8zMM3yxSfeL85sMO+bYQMSLuC6HIMX8t8kp+MlUP3KTqCSqs6njR8k8Dzp+/wCww+8MshAUblOLYyjYqmAoogNfEBiwwfc4+I6u2HWwym40/wDFjlqlO747nz35thE98SQxJPbF0+Ysd8v8j5H/AGFaIBRk1SpvlH2xKcuKhvOT932FH3YGWMdkniIHAFDIils5JEyzePjhtSIYa1b45dcyguM62+GUyHkF0EDS7vJF6q+VwgZy4Qu2Je8ucnMFfW7Uz6A50BzoDnRyYd9GSpyvXyfbKJSvREQhjmYvS/nDlzbyl/f9hXS6bdFxamyQjbFDC6kjyGOD7FWHfGAcpUHDTk544c/1uzg/5+pgHzfK1CKSDOdjTRKGbYUMAmATEyYkjvhG34IqrMMSuipBRubM+JWqOVz2gjs3h3B0Cx7cZCKQfuSwaRcJHIEBJ62bp98s8PYGZMVsyQY2cFcJCGcmcogb7CvgbzyZY5sUSMGo45QRblWBVUyUeoYVUVU0oyJSMzCFaDgQjPPZeNNnspF4FVjMCrReIEbsELFKd6SWAGFJhUsKhiaGIp/gAYJcbQbORSVpqRjKUtTcaY5DC1d2XPZt3ns48z2beYFceBns+7wlbcjhawrunWSFFpHpMvILhMF/sI7UMnINrEcgIz7A2JSDJfE9hzYwZ1ADBeJEzvduXD2FAuGs+2HszgcNOvD4pIOVMMYT4LUN+yjhG+2FRxFqYQTYKiBItxicU4wsQsOFhhxqyI1/VOqRMF51i2xe5tSY9tjtzlUVOtL/AGEssAtHPeIGEMJIOE8GRcmztimA+NnbsB4UcTVZDhRjBwoRA4RKGwiUPuTukuEVYFwHDXCukcB0mOdcuC6IXO3IhhXqBg7e3DBlGgYM2wDO/I/Y1jjSD7XReHuMaXBvDIMPfCbqXtUcNdn5gUtEkoCks8VzqHNxAN8qcWdEfsIJeYJGosH+OqCuTHVYkmmKIqID/G28geQOKDdVYW9akHGN6UbGMEzYh9iTJlPikOxWxSnxamKUJoIDp/h6G83VpcknhqnJlw0BIlEYV+XDsnCedFTOkfOQc28/KbOmfOiphGThTAhH44EDIjidWkjYlTZE+FozvctCxOjtAxKqxqeJRjRAQKAfZjbBTKOC2SHOxNxzu9tnYG2d3ts7vbZ2BtnYkMBskGdIgZsH/qc//8QAQxEAAQMCAwMGCQsFAAIDAAAAAQACAwQRBRIxEBMhFCAiMkGhFTAzUVJhcHHRIzRAQlBgY4GRseEWJGLB8HKgJYCQ/9oACAEDAQE/Af8A3UgLpzCzX6HuTkz+LMbg3MfYhTi8gVSbyHxRha6PMzxDYXu0QiJhyFckA1KIax6mEThmZzxqqrogN9hMcZkNguTxt6zlLDk6TdObG/I66e7O66gpc4zOT6Rp6pTmlpsVFCxrc8iPJ3cE6mdfooUrWi7yuTxv6hT2GM2Ka5w6qN+1RRGUq0EfRKnhblzsUURkNgssEfBynia0bxi5YQ2wW9c+AuRe49uwsIFyoqd0iNPC3g5yfS8LsUUed2VNpy5+VTUoa27Voppd6b+wnyMNwmtdI6ys3Lu09hY6x5o1TuhHwTXuD7qobfKVVmzQNlGTnVS9zn2TSb8FU+TGbVRGzwqtvTumltPHxWSB3SuqiZpGRipuERI1Tr34oyOLcuyLjTlAXNk+MxmxUozQNKY8tguESSeKpC7OmAco4KolEXBuqpnlwc0o+wqKoaG5Xp1Sxo+TCEjg7Mnyxyt6WvNbqp5zHJbsW8p75lJPncFVPa4C2yN5jdcIywycXrfRM6gUkhkNygbFVPFjSiBURcEWObwKbE92gTJHU7rFZoJdUaaM9UpwsbKlc0tLChHHCcxKlfvHXW+G6yKGfIMrtFmptU6oAFmBRS7t2ZSPL3XKhk3buKeQXXHsSbqq3rX8RuH5M+yTjBdMkdGbhCtPaE6sedE5xcbnZfZeyvf2OSubJED4iGpyjK7RGCOXiwqYCOLJ7LrlXJ/9M1jS82Cc3KbH2MEEa+KsdedTwtLc71JAx4vGiLcym8oFUeUO1sF4s/NsdfGsjMmidE9uo9gLdVVRk6Bbl/m8SWXg4Lcv8yILeB5h4UwTJDGbhSNbMzeN5lL11P5Q7bWg5sTM0C3L/MnNLeB58Do2i7lv4j2LcRyi7U4WNkx5YbhQz73g4J0cUvV1UkLo9fv9FlzdJbyBinn3Y4J1U92yOF0ui5H5inNLTYpkTpNNjG5iskUTblGUCPO1Oq3lOcXG52xR7x1lJCdyGBGJzdVmc0ZUyJ8miNJIEWluqpeupeuUASrEFSuywcxhhay5TZWlmZidVuOie8vNymROk0RpJAi0t15sEcWUFTZ8vyaIIPHZR6lPNnlRT5uhIp4t2eGn3+GqquoEATomNzusi2zMkaihkabvKqXB0lwqeXdlPpmyHME6ZsPRjT5HP1Tfm2wi2u0Et4hMlducyFY/tRmbKQCFLKIW2auUSXvdfOWEnVUo6ZRGd9k57aYWGq3nKCBZVbfkxzafyR2NHSF1LIIGdFcokve6aRUsN9QiLcwOI0Tah7e1HLUt9aIsqLVSizzsAzQdL7/BSMMsQyqGLcgveqYjeKfMyQlGZ7lqoqfKM8iFWL27FNALbxp2U4zwlqipnB13KocHP4cyF14nDYDY3TmtqWix4rkdusU+VsbckapD00OhPxU1O6R1wrNpW+tRP3zCwo8DzKXi0tTaV+biqh43nBENqWDjxXIyOsU+RkTckfMhi3psnUjxouTyeZQwmLpvWQzP6Khp5I3XUlMHuzEoNgi1KmqM/RGn3/jqHxiwT5XP1TTY3CbUMeLSLLTDinTRgWYFJO6QW2XOyOV0ZuE+oe/XxF1c7AbIuJN0J5ALXRJOqBLeI5rHmM3CfUvfsurnmgkaIVEg0K5VL506V79U15YbhGd57UXE8+3C/svpmh7XNPsvbIWNLR2//SwgjX2XRsAGZykta79fZbHH9Z2iJt03Jzi83P241pcbBTUMMUZeSdlPQMkjD33uU/LmOXT7kijqC3OG8PsOOO/Sdor8M7tE95ebn7dw+LPLm8yxOXgI1EzevDB2qreIYDb3fZVBSMqc2fsVQxscrmN0CpqCKWASyH6NT0UlS3O0hVFM6mdlfsoI2Opmkt/66xABtQ4Daw5XAlCsgLc+ZTPEkjnjt+wYo83E6LgeJ6oUkmc/bdNh4kZnkOqqIDTvynZh8eSLN51Vy72YlYbHd5k8yxKW7hGOz7JpKEVLM+aypaUUrSAb3UmFiR5fn1TKfJBubqow4QRGTNooKeSoNmJmEt+u5OwgfVepojC8sKp6aSoNmJmEt+u5SYSbfJuUkbonZXjiqSn5U/JeylwtzQMhumYS367lUYY+JuZhuqfDnzDM7gE7CWW4OVRTPpnWdspqCSo6WgXgmO3WN1UYbJCMzeIUbN48M86o6c00ZYTdVlCal4cDZVMBp35CVh3zZv5/uqihkqKhztAvBLLdbiqqifTcTxGzwQPT7tkeFiRjX59fUo8Le5xzGwTsJZbg5VFK+mNnbKfDpJhmdwC8Est1uK8GPEgYTwPaqug5KzPmv9Hjjzldb/xClkz8Bp9uU1e2OPJINFUz8ofmTG53Bo7VO4U8Bt2bKNm6gF/eppN7IX/ZLJpIxZjiFSSEUu8dx1XKZ/TP6qscYaXgePBOnleLOcVhoaKcWVcasSdC+X1JldURHrfqulI71lRRNp48o7FNicrnfJ8AqKvfI/dy9qxGDeRZ+0LCfLn3fBVEwp4zIV4SqM17qGUTRiQdqrq50Lt3HqqPEJJJBHL2rEGB9O71Kjh38wadFVT8mizAI1dQTfOVQVLqhhz6hVrOTVGZnvWHzPniLpPOsQq5YJA2M9illfM7M/VYd82b+f7qvrTAd3HqoMSlDxveIU0e9jLPPtOqpvIM9wVbXujfu4lR4hI+QMl43VdHvKd3q4qhhE0wB0VTOKeMvKOI1JN8yoKw1F2P1CxXyA9/0aOMvK16I0UsubojT7daxz+qL7MOjzS5/MsTk6sf5qCPeyBirZN3CfXw+yqfD4ZYmvd2oQtbFuhovBcHrU8DZ25HqvpY6YNydqpax9NpxCbi0R6wKY+Crbw4qohbSVTSNOBUrS+NzR2hEW4KjYXzssqtwbA8nzLCfLn3fBYr5Ae/Zh/zVv8A3asR+cu/L9lSeXZ71WfN3+5YW4Ce3nCqZuTx7y114XHod68Lj0O9VlVypwNrLCfIn3/BYt5Ye7Zh3zZv5/usR+cu/wC7OadVTeQZ7gqry7/eVTeXZ7wqjyL/AHFYY8Mnse1V8LpobN1GzConZjL2LFfID3/RWMLzYID6jdFLJfot0+3qPLuG5FiOXfcFQR7uEHzqok3spesMj4mRYlJmkDPN9l4gRHS5R6gqJueoYFi56g9+ygggkh6fErwVB5yoaeKjabd6rqgVEt26BUVc1zRHKeKmoYZzmI4qOCGlHR4etV9YJ/k49FhPlz7vgsV8gPfsw/5s3/u1Yj86d+X7Kk8uz3qs+bv9yY8xuDm9ip6qOqbbt8ydhlO430RpKWGMh2ida/RWGVDY3Fj+1VFLHU2zqvpW02XJosO+bN/P91iPzl3/AHZzTqqbyDPcFVeXf7yqby7PeFUeRf7ig4tNwqbEmPGWXgU59K45nFvcoquOaTdx+ZYr5Ae/6I1pebBAW+TZ+akk4ZG/b7ZHs6psm2c7pFTVkO6LYzx2U1RTwxBuZSPMji49v2W6aR4s9xKDnMN2mye90nF5vt5TMPrn9U6R8nXN9rZ5WCzXEJ0j5Oub7Gvcw3YbJ00jxZzidgnlYLNcf1TnF5u43QJBuEZ5XCxef12iomHAPP6pz3P4uN9raiVos1xTnOebuN02aVgs1xH5pznPN3G+zlM/pn9dnKZ/TP67BUTAWDz+qJJ4lAkG4RqJiLF5/VAFxsE/CeiMjuK8GVF7Kio+TC51KxScOcIm9nj42Z3WUgDXWG1rS42Ctk6DNU94aMjfYvHiU8fA8fehi5txZ3qXEp3iw4fQIugwvWuwC5sEBuhlGqe/IMrfZSBc2UxygMGzVAbof5Jxye/2VQC3TKccxvsa3dC/1k47r/y9lcnQYGbGM3YzHVOO74nrIm+zcm2Y/dO/ibq/3Lgbc5j2J7szrqNgYMzkTu+k7VG7ymwdryt6yPqBPkc/X7oX+gX+5D/k47edRx/XcrHrlGL60pRmazgwJzi7X7oX8fdX+5NNHncjEZZLnRGNrOlIVLVegnOLtfvPf7iUjo2sUlSGNuE+Rzzc/dEnYa6NpsuXxLl8S5bGopmy9XxN/uax2Up7y83P3RvsOikb0isiEayKiba/0W/sSO0pzeKyqysqYWB8Vb7LZG+Q2YLp7HMOVwt98Cea7VWVllUGniR46/iIWZ5GtPaVXxMilyxjsVVBHHTxlo6R+Gyx22O2xOyx22OyjoWVMedx2YV5A+/4IjjspKnkzi611V1BqZM9rbLHbY+IhZnka09pVfEyKXLGOxVUEcdPGWjpH4bbbbbLc2io+Um56oTuQRHdm3/etVtC2Nu9h02QQuqHhjVuaKksJNfXxUtFBUR56bZSbjMeUaI0tK6EyRt7PX4ix2UVI2qzZjopWbuRzB2cyio+Um56oTuQRHdm3/etVtC2Nu9h02UlNymTL2KQ0NJ0C25/VSUUNRFvKZMjdI4MbqhS0tI0GbX/ALsRpaWraXQa/wDdie0scWu7NlPQxxx72oQZQ1XQZr+iqqc0z8p5kLN5I1h7VW0jaXLlOvMo+S2PKP8AaqaWnbTmSNqghdUPDGrc0VJYSa+vipaKCojz0yyknKo6KCmZnqFuKOsB3evqU0ToHljtlDTQyQl8oX/xv/XVVud58hoqOga5m9m0Q5BMd22yrKTkzuGhVFR8pNz1QncgiO7Nv+9araFsbd7Dp9DPNdrzIPoHgD8Xu/lf0/8Ai938r+n/AMXu/lf0/wDi938r+n/xe7+V/T/4vd/K/p78Xu/lf0/+L3fyvAH4vd/K8Afi938rwB+L3fyvAH4vd/K8Afi938qupORSCPNfhfZQVj3ObBbgqjEXxSmNgHBVta6mcGtCoGNqJHzSBTYlJFIW5NFV1IqnAhtlHFFh8O8f1lHijJHZHtsCsRpGw/KM0KogHUgDtOKbicTDka3oqeKnZ/cSDRU+Itnk3Zba6xKnbDIHM0KpoI6WDlEg4puLXdZ7eCxCmbFaaPQqlqOUszgWVXWioZkDbLCvIH3/AATq+Kmdu4mcFUsjq6fejzLCfLH3fBYj85P5KpMTWZphwCgxJsrwwttdYnA2J4eztVLDHSw7+TVeFWO6LmcFUBjaMiPS2wLwv/h3/wALwv8A4d/8KV+8eX+fZQVj3ObBbgqjEXxSmNgHBVta6mcGtCw15kqXvPaP9qpqoqR9w27ioKiKvBY9qNIeU8nClmhw5oYxvFQVcVd8k9qlpBHUiLsKqZuRMAiZwUuJb6Isc3iqOs5Lfo3uvC/+Hf8Awquv5SzJlsqL5Ojzj1laqh+VpQ13rGzCGi73KufnqHLCHddqrmhtS8DZTfMfyP8Avm0TQ+kDT23VTWxGIwRN4Kkp46aHlEmqGLtzcWcFiFIzJv4lQVAnZltbLZVlaHh8OVUdZyW/RvdeF/8ADv8A4VXX8pZky2VF8nR5x6ytVQ/K0oa71jZhcrWPLD2qsw+V8pfHxuqKA08WR2qpGDlsnqv+6xR+ae3mWFOtMW+cLFGhs9/OFTtDpWtPnWLPtG1vnVO7JM13rWLNG6a718zD6gRPyW6yrKoUuW7b3W++X31u268L/wCHf/C8L/4d/wDGyb5h+Q/0sIaLvcq5+eocsId12oRt8I2/PuusWf0msWHuy1LVi7RmY7ZRMzUYb57o4Rw4P7lNC+B+R6xA7umyt9yBINwsQAfSl3uVF8nR5x6ytVQ/K0oa71j6Q7XmQfQPD1N6Lu74rw9Tei7u+K8O03ou7vivDtN6Lu74rw7Tei7u+K8O03ou7vivDtN6Lu74rw9Tei7u+K8PU3ou7vivDtN6J7vivDtN6J7vivDtN6J7vivDtN6J7visRq2Vkokj82yk5G6T5EcR71moZJbW6RPrVW+j3lphxVNJNES6FR4oXdF7FiVPHGBKwWVcw1NPeLj2qGCSZ+RoWKvAiDO26pvmH5H/AHsxA/2v6Kk8uz3rF/qfn/pRyONKHQ8TZeEqnNlycfzVVVzSDdStssK8gfenNLTYrCvIH3/BO1VN8w/I/wC1hPlj7vgsR+cn8livkPzVL5dnvCxfRn5poFXR5Wns/ZeD6guy5VVM3dGWeYbAt/h/oLf4f6CkLS8lmmyk5G6T5EcR71moZJbW6RPrVW+j3lphxWFeWPu+CxOB+93o0KwuF4eZCOFk6ZvhAX9yxWF7nCUDgsNgeZd5bgFiT81QAzUIYlPEcszf9Joir4c7m2VLJTsvv23W/wAP9BVUtK9loW2Kw14kp92exSU0sb8lkz+ypOlqP3UFJLUAuYsMfu5XRO1P+liNO5spkA4FYZA6Jjnv4XT2vrah2RTQvgdleqb5j+R/3zab5h+R/wB7COU0WWPzfsmwyPfkA4qstDR7s68AsI0f+SqmkTvv51SyU7L79t1v8P8AQVVLSvZaFtisNeJKfdnsUlNLG/JZM/sqTpaj91BSS1ALmLI7NktxQqatvyYJVIx1PE6Wc8SqKo/ui4/WWKU7s+9aOCwuB7XGVwVYTVVWWPj2J8MlFI1z1XxcphDo+PaqOnkkmBtwCxaXqxD38yl8uz3hYu0kMPvUeVrxn0W/w/0Fv8P9DZN8w/If6WFSBshjPasRp3NlMgHArDIHRMc9/C6FSOWb7sv3aLE6d0gEjBosNp3mUSEcAsSfvZmxN7P3KnpJacBz0aaZrQ/LwVA2bfAt07Vi5F2edTDltLduqippZX5LLFJQyHd+dYa8SU+7PYpKaWN+SyZ/ZUnS1H7/AEh2uy2yLmgXUsRjtfmDx451JU8lcXWuoZd1IJCL2VTNyiQyWsqarfS3y9q8L+ZneqipkqTd6p66Wn6I4hOxdxHRYpJXzOzPKjr93BuMvn2VFfv4t1lson7p4f5lV1nKsvRtZU9XJTdTReFzbqd6nqH1Dsz1TVb6Y9HRVOI8oj3eRUlfyVmTLdFR1+7g3GXzqkqeSvL7XVRNyiQyWsqqv5SzJlso37t4f5lV1nKrdG1lTMqmt3sGn/diM9fJ0Q235KsO6o8jjx4Dn0lTyVxda6hl3UgkIvZVM3KJDJaywnyx93wVRXvp6gt1ClxWR4swW2Q4nLGLPGZS4rI4WYLJsjmP3nam4u63SYqjEpJhlaLDmQzPgfnYhi5txZ3qprJKnraLC5CGPB6oT5C6QyBR4s8Cz23VRiMkwyt4BYc5zagBvasRl3k5Hm4KOv3cG5y82Ov3cG4y+fZT1clP1dEcXNuDOPvU9Q+odmeqeofTOzMUuKbxhZk15kMz4H52IYubcWd6qaySp62iwuQhjweqE2pLJzOAvC/+Hf8AwqislqODtNkOKSMFni6mxSSQWYLKke5k7S3VYrLmkEY7FTV0lOMuoT8WcR0G2T3ukdmdrzY8WeBZ7bqeXfyGS1r8x9fng3GXsQJabhR4s8Cz23VRiMkwyt4DZT4jJCMruIUmLPcLRtsmyOa8SdqxSXoNjOuqixWRos8X7k7FzbosUkjpXZ3niqarkpuroji5t0Wd6lmfO7O8qGZ8D87EMXNuLO9VNZJU9bT6QRxQag1ZUwc2ih3j1iFPmizDs+hj7BgrZoBlaeC8LTeYKaeSc3kPiqeodTOzNU8xnfvHeOEr2tLAeB5jJHRnMw2RN+J+hiV7WlgPA89riw5mpzi85nfRAbcQnyOkOZ5v9JPiC3ig1BiDEW5dscTpOqhQylUkG5ai3O0tK8Hue8gLwXIjhcoTmlpsfYyfEBl02JCFNgU7cp24ULuKJyhGVCpAKDhmztV048FUeVd7GppTGOC5W5cscFy1yheZG3O2OG4umQIQrdKvbldtwng5yqajjZOnTpioKzLwKZW9ifV3Uhu4nmzPmz8CqVzz1vYkdlZoNh2Unktg1UEXQCDAFbZifWG2mm3QcnS3TnovQchKt6r35r+sVT+xI7KzQbDspPJbG6qDyYV1mWdYkbuG0lFyLlmV1mQddDTmmO7k1mRR0skouFHhj3A5lNTug63iB7BzsrNOZS+SGxuqidZgTpU6dOqFUPz7HFFyJRKurq6Y+xQ05tNSNcMxVdG1nAKnmZFCLqXFAGkNT6l0/W9iNXpzKd+VllvUJeKE/RCdMnSovUr1mKLii5XRKurouW84qlk3jVlWVWQCbW5GWClmM2qklLeCkmTKnK5DiL7LK3MHsGJARkC3pVQ6/Mh6q4Juq3nBF6zK6IunDKiUSrq6ui9PlRlVJVmJ6bPcXW9C3jVvGrO1XClh3napMPkdo5eDJO1yhAijDCVnC3rUZR2Jrr7LK3sGfx2zC44LI5ZHIRuUI4cVlCyjmcFeylfdZtl0Xp0qdInPRKa6yw1zZ4rHVGHzLclbpy3b1u3LduW7et09bty3blunIQprQ3T2EkKysrKytsusyzrOs5WZXRKLLoxFGJ6dHJ5k6GbzI01Qfqo0VSfqoYXUu7E3B6g6qPAz9dypaNlL1fHZgs6L0w3PsFPPssqyrIsqyrKsqyhWXBcFdX2XV1dXV1dXV1mV1mWdZ1nWcrMVfbZMbb2DWRarKyt9Bv8AQLLKsiDfYXZZQsiyLIsqsrKysrcziuO3js47bKxWVZVlWRZFkWQKw/8A1B//xABLEQABAwICBAYNCwQBAwUBAAABAAIDBBEFEgYTITEQFCJBUXEVFiAyM2GBkaGxwdHhIzA0NUBCUnByovBQU2BjYiSCskOAkqDxkP/aAAgBAgEBPwH/AO6kBfYnxuj2O+x6l2TP82Y3NbmP5IUwvKFVG8hHzToGuizM+YbA924IQkw6sriQG8otbG/pU4ie3MzuxvVZyQGfkTHE6U2CNNE3v3KaDJym7u5ifq3Zk92d11T0mcZnJ9G094dqc0tNioYGMZnkR4s/Yn0jgeShRsYLyFcVjf4NykjdGbFMc8bGo3vtUMJlKtTxck7VUQNy6xihiMrrBZKeLkuVTC1o1jFx0htgtc59OXovcefgLHNFyoaZ0u1GmhZsc5SUmzMzaootY/Km0xdJlU9IGMu1DYVPLrjf8ifAQXCY10rrLK0t1SkYWOse5G9O5EexNkc191UtDsrlWmzQOChcc9lVSOc+yaXX2Kq8EC7eoTZ4VY2z7hMLaaPbzrV07+VdVM7SMjFSbISW704knajK4tyc3BDtpig3MbBSRmI2KmGanaUx5bT5gi4uNyqMvz+JMA4zsVTMIRZu9Ury9rmlHf8AkVDUtDckidVMaPkwhK4OzJ80UrOVv7lnfBT1BikA5lraa+ZSVGscOhVcjXNFuCKQxuzBGaCXa9a6GPvApJTKblA2N1V7WMcnNFTFyd6cxzdhTYXv3BRyPpnWKzU829OpYz3rk4WNlRvaWmMoRRQHOSppNY66141ORQVGrGV25ZqXen1QAyxhQzap+ZSPMjrlU8uqdcqQhziR+STO+CrhywfmOLvyZ+CTlU4KjldGbtQrjzhOrXncnOLjc8F+AGyJv+TYUzmyQg8/zEFVlGR+5Gnil2sKnAihyfldcokn/wCmaxhebBOaWmx/Jggjf81Y2v3VNA0tzvUlOyQZokRbYe4pPChVPhTwtpgYc/c2Nr/OxxOl71OhezePyBYOUFWRE2yhaiTo+ZMean2BaiToRaWmx7hxy0oUcrozcKVrZo9a3uKTwiqPCHhtanR7iFmanWokPMnNLNh7undEwXeuMQnmXF4phdqeMpsmPMZuFBUa7Y4J0UM3e71LA6Lf/n0OXOM61kDDZVE+qGxOq5HcEUDpdy4j0OTmlhsUyJ0nercmNLiskULbuTpmiLO1OrXncnPLzc8MMetdlUkB1AYOZOhe3eFne1uVRwvk71GjlCc0t3qj79Td+UATuWUg7VM7LT9xGYGMBKbK0x5mJ1a87k95kN3KOF8neo0coTmluw9zTxRZQVPrMvyacCDt4KLeU82eVDUZuRIqiHVm43f583eqzvGoAnco2F7sqLbMyRqGCRjszyqpwfJcKmm1TlJStkOdPnZByY0+V0m9M+i8BBG/hDi03CZM7UZkK5/OjO2YgEKaYQMAahUyXvdbKqMk71RjllFueSyc9lKMrd61vGSBZVjfkx4u5pvAnga3lAFTSinZyVxqS97ppFVGc28Ii2zuA9zdyZUyN50ctU3xoiyod6mFnngAzU/L/wA+G9SxmaFuVQRagF71Ska1VOeOUlOne7eVvUVKGjPIhWtzZbbFPTtI1jDwUwzwFihpXB13blUvD5DbuIHAwubwNOU3T2tqmix2riVu+KklZE3JGqM/KIcio2qeldI/MFZtI3xqGTXscxyIse4o+U0tTKR+baqp41nJ5k4NqmDbtXEiO+KfKyFuSPuIIdcbJ9FI3cuLS9CggMN3vWQzvOVQ00kTsylpQ92YlBlPDvKnqdZyW7v8/jqXxiwT5Xyd8gS03CbUskFpVlpRtT54mizApah0gtwXPBFM6I3CkqZJN/zFyrngBttCLiTcoVMgFrouLt6Di3aFv7iOQxm4T6qR/BdXPcglu5CplbuK45L0p8z5O+KY9zDdqNRId5RcT3dtl/yvpWh7HNP5XslLGlo5/wD2WFpbv/K6OMNGdyltbM/f+VsUX337kTblvT3l5uf65DE6eRsTN52Ks0eoKSmfO4u5I6fhwYfo3Tz0rJZycx2+7mVSI2zPbD3t9n+EjBMQdHrRFs9Pm3rdsP8AQoor8p25XFs7t3MnvMhuf67oxS6+s1p3M9fMtK6rJEymH3tp6h/PQqGmNXUsgHOf/wBWL1AoqF7m7Nlh5f6VgOFQYi2R099ltyxGGOmq5IYu9CwzAqWpom1M5Nzf1/ZsPwWoxKIyxEAA2239yxDDpcNeGSkG/RwYDFG7DoiWjn/8itImhuIODRzD1cNPIIpmSOFwCChi1C6PW60W9Pm3qtmbUVMkzNxJP9Biiz7TuWw7T3oUshkP9bwzRqOop2z1DjytwCxbDThs+qvcHaODRul4vQiQ737fcsbquN1z3DcNg8i0Upc0r6k82weX+elaWVV3spRzbT7P6ThGBx4nAZXPtY29SwzDWYZG6Nhvc3VRozHUzPmMh5RuoaJsNJxQHZa11iGjsVHTPnEhNlQYbPiL8sI3bzzKLROAeFkJ6tnvUuicR8FKR17fcq2kdQzmB5BI6FQYZUYi60I2dPMotE4R4WQnq2e9VGiey9PJ5/f8FUU0tLIYphYrCMPbiU5hLrWF/UqvRd0bW8XfmJPm8ah0UhA+WkJPi2e9V+jMkDDJTuzW5udYdo5NVtEsxyNPnTtE6fLyZDfyLEcLmw1+WTaDuPBh2AVFeBI7ks/nMhopTZdsjr+T3Kv0bnpmmSA5x6VSQcZnZDe2Y2WE4ccNgMRdmub+r3LF8FOJyNkD8thbcsTw84bPqS6+y60e+rIvL/5FYhgk2I17pL5WbNvkXanTZfCOv5P56VieCzYdy75mdPv4O1KL+6fMntyuLVTaMR1EDJjKeUAd3SoNF5ZJHax2VoJt0lO0Tp8vIkN/IsSwufDXWk2tO48GH6Oz1bRLKcjT50dE6bLskdfyfz0rtZlbUiJ7uQfvD2rFsCZh1Prmvvtt9niiMhWx36QpZc5sN39cwzSSKnp2w1IN27NnQsWxI4nUa0CwGwKmgNTMyFv3jZV07cOoXPZ90WHqHBgtMKOgYDvO0+VYhVccqpJ+k+jm/pMNZUwNyxSFo8RWFTPGGtmmNzYnb5V2TrifDO85WMTPpcOcWu5WwX8oUlfVytLJJCQfGtHGsGHtLOe9/P7ljb8WbOeL31fNl9N7KLHMSpXct1/E7+XRL6ue52uefWqWmjooBEzcP5dVuktU+U8VOVvV71gmPS1M3FqredxWkNE2ppDKBymbfJzrRT6a/wDSfWFX1baGndO7mXbNX6zPst0W/hVJUNq4GTt+8scxyShfxen77nPQsGx6epqBT1O2+4rHYRNh8ni2+ZYNRiurGxv70bT5FiNZ2PpTK0XO4BOxbEnOz6w/zxLBcRfiEJ1o5Td6xuHsbiIng2X5XlWA101fTOln35regLHsVqcPmYyA7CFWVs1dJrZt+5aPfVkXl/8AIrHMZdh5EMA5Z9CoNJKnXtZU7Wn0KqgFTC+F3OOGbwjutYd9Ch/S31LGsekpJuLU28bysI0gnnqBT1O3NzrGYBUUEgPML+basCpG1la1r9w2n+daxCsbQ07p3cyfpHiDnXa+3isPasDxh2I3imHLHpC0o+gf9w9v2aOMyFWBGUd6FNLn5Ld39dhpZ6jwLC7qF0QRsK0VpdZUuqD9wek/C60sqrCOlHWfZ7VhlLxysji5r7ernWO1XFaB5G92weX4f0qgwChqKWOV4NyOlNpYmU/Fm97ayGjmHtIIB86rKOKuj1U25Y/hdPh8cboBvWGYxNhhIAzNPN7lFpTSOHyjSPSop6PFIzks8fzpVfRRYVicL2d4SD1bdqqGayF7BzgpzSxxa7eFgkTpsQiy8xv5libxHRTOd+E+laKfTX/pPrC0n+geUcGA/VsXl9ZWkX1lJ5PUFhH0+HrWKfQZv0laLyBtcWnnafYVX1fEoDPlzWXbbF/aPnXbbF/aPnWMYo3E3Mc1tsq0V+hP/UfUFpZ9Ij6vbwaPfVkXl/8AIrST6xd1D1KPvxwHvuCbwjutYd9Ch/S31LF/p83WVhX06H9QWIfRJv0u9S0ZmbHXZT94Ee32LG6R9bROZHvG1EFpsVotRyte+qcLNtYeP+WWlH0D/uHt+yxxmQ2CA+4zdzqaW/Ibu/r2C6riEeq6PTz+laU6vjoyb7bf51LAKXi1C2+9233ehYrVccrZJRu5uoLROlvrKo9Q9vsWlVVnqG04+76z8P6U27iGhY+4QYa5o8Q9KwNpkxCIeXzBaWyWELB4/YtqwGgo56K0tnOO/pHuT9FqFxuC4eX4KjoabCo3ZNg5ySsexBlfUjVd63YsExuOeMU9QbPHp+Kq8Go612skbyukKloaTDWHVjL0n4rHsZbWf9NTnk856fgtFPpr/wBJ9YWk/wBA8o4MB+rYvL6ytIvrKTyeoLCPp8PWsU+gzfpKgnfTStmj3hUGKU+JR2Hfc7f5vCk0coJHZgCOoo4ZhtHTOY9oDTvJ96mDBI4RG7eZaMV8cD3U8htm3darsMp8RAE43dCx/Co8P1boO9OzyrR76si8v/kVpJ9YO6h6lH344D33BN4R3WsO+hQ/pb6li30+brKwr6dD+oLEPok36XepRvdE4PYbELDtIqeoaG1ByP8AQnzYe/lvcw+ZUuLU9ZUGnp9the/NzLSj6AP1D2/ZGMLzYIC3ybPKVLKAMjP6/DV1FNfUvLeoqLLLO3Xu2E7Sq7HKJtI9tNJd1rDf1ejgwzEsOoqRkJlF+ffvVXUGqqHzH7x/pW0KSrqJ25ZZC4eMkqOR8Ls8ZsfEpZ5ag3leXdZvwNcWm7UMTrhsEzvOVNUzT+FeXdZ4Y6+qhGWOUgdamqp6jwry7rPBFNJAc0Ti0+I2UlXUztyyyFw8ZJ4I62qibkjlcB4iVJI+Z2eR1z40x743BzDYp1dVvaWulcQfGeDaNoTcSrWiwmd5ypZ5ZzeVxd18MeIVkTcrJXAdalmknOaVxJ8ajramJuSOVwHiJUkr5nZ5HEnx8HZKt/vO/wDkeDslW/3nf/IrftKbX1jBlbM4Af8AIp73SOzPNymucxwc02ITq+seMrpnW/UVHG6V4jYNpU2ioMbdU+zue+5dq9dmtdvn+CwfCBhjSXG7ytKK1r3NpGHdtPX8/EzWOyqUBrrDha0vNgrZPk2b1I8MGRn5LAkG4VNpJWwNyus/rQ0tNtsP7vgqnSWsnbljszq3radp+fh+TYXrfwBpcbBAaoZW71I/IMjfypaMxspzlAjHABdNGpH/ACKe7V7Of8qqcWu88yc7MbremN1Iv95OOpH/ACK3/lTvUvybAwcDGaoZjvTnarlHvkTdWuuLuy5nf4lZWVvmLKyt/hVOy5zHmUjs7rqJgYM7k52r5bu+RzSFNp+d5sjMyLZGE+Vz95/w+yt8/ZW/wiT5KIN6VFFblvViOWd6MV+VKUZ2s2RhOe5+/wDxC3+M0sWsejCZpMx3Ixtj5UpUtZzMTnF2/wDxC32S3DZH/A6J0TY7qSqaxtwpJHSG7v8AEQOAUMrhcIYdMV2LnXYmoU8DoHZX/M2VvmiP8CY7Kdqe8vNz/iIHBzqmguwIQgLVhZFjLbTfZSPySA4QqZvyTepZVbgxrw6ur/M3+bI+2WJ4aemmqnZIG5ipoJad+rlbY/5gB3Dd6pxaJvUii6yMixk3mH2S/CR8xQ05nqY2OGwkLSCkip6lsdMywt71itBBT4fAY4+WbX8230qxGwoQykXDSty3p0UjRdzTwZXEXsmxvfta2/BqpLZsptwmGRouWngwjA4MQptdI4g35re5OGVxC0W+gn9R9QUrHyTPyC+0ogtNisGxM4dI45MwKxbEDiNRrC3LYWRY4bwtVJbNlNuF0UjRdzbLK617cOR3Qsjujhoacz1MbHDYSFpBSRU9S2OmZYW96xWggp8PgMcfLNr+bb6Vlde1lkcTlttTmPZ34twNa5+xounMdH34twNY9/ei6cxzO+FkGk7lkd0ItPOFguEHEXF8mxg9PiT+wdK/izw2/Vf0/FYzgccMXGqTdzj2jgoKF+ITiFnl8QRpMHwloE4F/HtPmVVgtFiEGuobA81tx9yLS0lrt6wY0Ie/j+7m3+xdjcMmpjPDGLWNt/c5XEXsgxxFwOAwyAZi08GCYRDibXulcRboVbC2mqJIW7mkhBpO5ZHdCLTzhYLhBxFxfJsYPT4k/sHSv4s8Nv1X9PxWM4HHDFxqk3c49o4MIw04lPkJs0b1OcFws6h8YJ6r+tVODUeI0/GMP2H0HxeIqCmkqZhBGOUU3DcLwmIOqrE9J2+hPwvDMViL6SwPSPaFPA+mldDJvHBh+BU1NBxiv379u4JkOC4neKENv4hlPsWKYc7DZ9WdrTuPcUMDampjhducVjeEQ4YIzE4nNffwZHdCyO6FgxwwRv4/a99m/wBixHDKBtA+ohjG64KoKF+ITiFnl8QRpMHwloE4F/HtPmVVgtFiEGuobA81tx9yETzJqgOVuVNg1Dh0GurbE+Pd1AIUWEYs0inAv4tlvIq6jfQzmGTm4MCw6knotdUMvtPmWbRzxfuWLmj4x/0XeW9PlWDYDE+IVVZuO4eLpKYMDrDxdgbfqt6VjOE9jZA5m1jt3uWC4QcRcXybGD0+JP7B0r+LPDb9V/T8VjOBxwxcapN3OPaPsQHct3qDwTepFP4MZ8MPsHap/v8A2/Fdqv8Au/b8V2q/7v2/Fdqn+79vxXap/u/b8V2q/wC79vxXar/u/b8UdFb/APrft+K7U/8Af+34rtT/AN/7fiu1P/f+34rtT/3/ALfiu1P/AH/t+KxTD+xswizZri+63TwYHjMs0kVFlFgN/UFX6QS0tY6mjYCBZY1jDsMcxkbb3WAxRYjPNXTN5V93QqzSKekndGYNg6edYviYxR7CxlrevrVPTU2A0mvlHK5zz36AqXSaGplEUseUHZvv51pFhUdLaqgFgd48awVjX4VG124g+spmktJFIII47M3X+Craeiidx+dne/zz9CoNIYq6fUZMt9y0koY6WdssQsH+sLDaKnwui49UC7rX6ugBRaVh8uWWKzD41j2HRUjmV0I2X2hYbXNxCDXNbbbZYvjcdfDqGx22rRb6Cf1H1BT4/SYdIaaCK4G+2zb7ViMMGLUBnb0XB5+paKfS3/p9oWkX1kfIq91PHBraoXa3b5VQ6Rw1c4gLMt9y0moYqeRs8Qtm3rC6Knwuj43N31rk9HiC7aoZHZJIeR/OZV7YmYVIIe9y7OCN2R4d0Ltub/Z9PwXbc3+z6fgqufjM75rWzG/BgeMyzSRUWUWA39QVfpBLS1jqaNgIFljWMOwxzGRtvdaPTmpxGaYi2Ye0LEsUpsKluGZpHb+rrVFiNLjkbopGeQ+tPwcjE+Ig7Onxb1V1lJgETY42bTze0lUOK02NXp5Y7HoO1VOEMgxNlKe8dbzLEas4PExtNDcegKp0k41TPhfFZx8oWEYyMLY9pZmv4123N/s+n4LFMeGJU+pEeXbff8FgoEGFteOgn1pzi9xc7eVgp41hjGydBHrHqRFjZaJMHy0nPs9qx6V0uISX5ti0SlJE0XUfWsejEeIyhvX5xwYX9Tt/S729zgrBJhUbHbiD6ysTxmkdTvoaZmzdfm3rCcPp8NpOO1I5Vr9XUmaVwmTK6MhvTf2LSDC4dTx2nFum24jpWC4i2vhIa22SwWMY4x7ZqLV7d1+orCMZGFse0szX8a7bm/2fT8FimPDEqfUiPLtvv+CwUCDC2vHQT605xe4udvKwU8awxjZOgj1j1IixstFaqOKWSB291reRYvgFTUVTp4NocsHoHYdTal5ub3WFwtGNVB6L+krSiUvrQzmaFopKW1b4+Yt9RWlEYZXBw52j2hYcwSVkTHbswWlUpbSsjHOfUsMlMNbE4fiC0rjBpWSc4d6x8O40dxFtNJxYtuXkLFcUbhgYXMzZkK8Cv47l+9ey7bm/2fT8F23N/s+n4Jxu4lVn1Kf0D2LRJg+Wk59ntWPSulxCS/NsWiUpImi6j602nYNIi3y+XLf1rSyU5ooubaVo9KY8QYOm49C0tjbmik59o9Xv4MGizYSyPdcH0kp+iQtyJtvUqqgmop9RN/8Aqx9/F8Nc1niCY8xvD27wtIGNlw1z+ix9PxWCgQYW146CfWnOL3Fzt5WCnjWGMbJ0EesepEWNvszd6pjeFqKIWVY0Plh9g7Z6P8LvMPeu2ej/AAu8w967Z6P8LvMPeu2ej/C7zD3rtno/wu8w967Z6P8AC7zD3rtno/wu8w967ZqP8LvMPeu2aj/C7zD3rtoo/wALvMPeu2ij/C7zD3rtoo/wu8w967aKP8LvMPesZrosRqBLECABbb1lDesK7EST3oW8oDx+1Z8FqKy1ryE/8t/qWKzYTrstaLuA8fsWGVFbTPfJRNuOcb1T6SvkeIpYNp6Pd8VpDRU9MI6uNtjmHl/lljVO7EaC9Pt3O61RYdU1M7Yw0+PxLSmZraRsXOT6lhf1KP0u9vBpB9WP8nrCwf6wh61pd3sPl9ihnfLh7ZaXa7L/AALthxHPq9RyuixWL4rVzsNJVRhu4rRf6B/3H2KeGSN7g9trFaLfQT+o+oKfwr+srC/qUfpd7Vop9Lf+n2haRfWR8i0n+geULC/p0P6h61pb4KLrKaG4vhWRh3i3lCbo9iBkyFlvHcWVfFqMKfF+FtvNwMIDwXbl2QwD+1+1dkMA/tftVW6J873Qjk32Ib1hXYiSe9C3lAeP2rPgtRWWteQn/lv9SxWbCddlrRdwHj9i0VtxyS34faFpLQTGp4yxt2keZaMUU0crqiRtha3p+CkrIxj7bnmy+X+bFpPQzSvZUxi4AsVo3QT8a4y4Wa1aRzGSvjZB3zbee6bpDXUhyVkO3zfBNZT45S6yWPLfp39YKwmow6BrxWtzHm2XXZDAP7X7VitVhc0GWjZZ1+iy0cnZUUGpP3dh8qqMKq4JzDqyejZvUI7D4X8pvaPSfiqHB6rEGGSK1h0rRmU01TLRy7HH1haQ4dM2rM8bbtd0dK0boZKSF8swsXeoKeKXG8Rk4v8AwDYq2hmw+XVTLC/qdv6Xe3ucK+ph+l3t4JWdksIywby0ecc3osmYfVSS6lsZzLGHNpMKMLjtsGrRLvJuse1YtDK2umJbzkrCKjD4GPFcy55tl12QwD+1+1YrVYXNBlo2WdfostHJ2VFBqT93YfKqjCquCcw6sno2b1COw+F/Kb2j0n4qhweqxBhkitYdK1EzZtQBy72t40zEMYZ8iC6/Vt9V1hUMlFTOnrXco7TfmCwevBxVz3f+pf3j3LSbDppJW1UTbi1jZaM4fNC91TK22ywusYz4pimop9ttnm3qWiqMFqYpZt177PEscpDiNEHQbSNo8YWDYZUS1jHPYQ1pub+JaV1IyR0w37/d3GE7K6H9QWlcb3xxOaNguqQxw1LDUjkg7V2QwD+1+1dkMA/tftTrZjZVn1Kf0D2LRWpDJnwH727yLSHDpm1ZnjbdrujpWjdDJSQvlmFi71BNxJnZrjX3b28lrLSWglqY2TQi5bv6lo7h03GhUyNs1vT5lpJIaqrjpItpHrKrsHqcPYJJbWPQnYZXsibLkOUi+xYDHXiraWghnPe9lpY4DU/i2+xVjBi+GXi3uFx19HsVJhVVUTiLIR03G5aTVDYqPU87/UNq0cnZUUGpP3dh8qqMKq4JzDqyejZvUI7D4X8pvaPSfj9hHdN3qm8C1Hgssc8KO5G1SxGGwP2M91hOKdi3ufkzX8dvYVR1nFqoVTm5rbbLEazshUuqMtr8ywzF5cMuGNBBR0t2bIf3fBYhic+IvDpdw3BYdjlRh7dWOUzoPsUmlrsvycO3xn4Kqq5q2TWzG5VNpBxai4nqr7CL36fJwYhpBx6mNNqrXttv0eRUdRxSoZPa+UrFsX7KBg1eXLfnvv8AIFh+LVGHbI9regrtt2eB29fwWIYhNiL88vNuWGYtNhjjkF2nmWIaRcepzT6q1/H8FheO9jYDDq822++3sKe7O8u6VTaQcWouJ6q+wi9+nyLCsS7GTGXJmuLb7e9YjX8fqeMZbblieP8AZGn1Gqy7em/sVLNxadk1r5TdYtjPZRrW6vLbx39gWGQ4pHEaqi3dHT5Ea7Hqj5JsWXx5bekrF3ikwkxPO2wb193hOKdi3ufkzX8dvYVR1nFqoVTm5rbbLEazshUuqMtr8y0U+lv/AE+0LEcclw6tdFlzN2Kq0qmlblgZl8e9EknMd6o9J6iBuSZuf0FVOlU0jcsDMvj3qGqkhnFQNrgb7VHpa7L8pDt8R+Cr9JKirYYo25AfKe4o62agk1sJTdLeTyodvX8FiOLVGJbH7GjmWi9Q4QStf3jdv88ynq3yVTqpmwk3VPpXIxtp47npGxYhpFPWMMUYyNPnWjcsjK4MZudv9a0jquMVuVu5mz3qm0h4tRik1V9hF79Pk7mm0g4tRcT1V9hF79Pk4MPxaow3we1vQUdLTl5MO3r+CrsQnxF+eY9Q5gsPxGbDpNZFz7wqjSjXwui1O8W3/DuKOtmoJNbCU3S3k8qHb1/BYji1RiWx+xo5lovUOEErX943b/PMo8UdDXurg0G5PpXbc23gfT8FiONVOI8h2xvQPat20Kk0omhZknZn8e4qs0nnmZkp25PHvKweaSKujMe8m3nWlVUHyspx93afKsNx6fD26ojMzo9yl0scW2iisfGVPPJUyGWU3J7gOLTmbvUOlcjWWmjuem9vYsQrOP1DqjLlv3EukOtouJ6rmte/wTJHRuD2GxCp9K5GNtPHc9I2LENIp6xhijGRp8/Bh+kc9IwRStzgedVOlcr22gjynpO1QVEsdQ2cbXXutKKrJDHT/eO0+RU2lU8YyzsDvQpNLTb5OHb4z8FVVUtZKZZjcrDcXnw7ks2t6E/Szk8iHb1/BVdZNXS62Y3Ko62agk1sJTdLeTyodvX8FiOLVGJbH7Gjm+wDu2b1TeCb3GOeFHc0MGtk6liUOZmYc39Uocbq6BurYbt6Cu2yptsjb6VW18+IPzzu93zWHYjJhshljANxbaq6tfXza+QWPz0dZPFE6BjrNO/uKeqmpH54HWKc4vcXO3n7HHWTxROgY6zTv7uGaSneJIjYhSyvneZJDcn7I1xY4PbvCqKmWqfrJnXP2kd23eqfwTUSi9a1Yy/NKOGnpXVRs1dh5RzqlpuLtspGh7bFChL3EBdjX9Kdh8g50QQbH7AfyJHdt3qn8C3qT3IvTnrFfCjhwk7XK/C9mrfm4CpvCO+wH8iAgoYhKbFcRb0puHtPOjh46VNHqnZeAKB/yTepPcnHgxLwg4cMNnFFyum7UYdY1PZlRU3hD3NNh7JmBxWIUjaa2X8km8FF3x4G8Fb4bgbvULvkwnO4cS8IOHDt7lYqNl0yJMjsFLFmFkWFT+Ed3ND4Bqxv7vzZ/IccFF35VkNnBW+F4BvUTvkwiVdXWJd+OGjgyMTI7pkSay3A8p7QdqqfDO6+5ofANWM/dTaCV7cwTMPftzKaB8Js/wCYP5Djgou+W9DYiqzwvAN6iPICLlmWdVxzOHBQ0+vkUdPZNjsgFeyc9Pcr7FU+Gd19zSvtA1Yo7NlVJ4JqbCXLFo3My3+YP5E0ffJp4DsVTGXyXXFymwbU02FkXK63qdoJ2psQcbKipWwt3IBFXRKKcrrEoxHLfpWYLMsyzKmd8iFiN9iwsCSIHoQcGrEGioiLedHoV+6P5DNBJ2IRFalU7A1NQT1MHX2LlIZrpm5ZVq02JVsrY35Vho4xKgLK6JV0Si5PenSqpY2dtinU1ijA5ap6yOQdKNxTnSO75U1eaZmQNRxW/wB1Ori7mT7ucXWWQrVuKEJ504FpV1dX/IaI2V+CA7Vnata3pWsb0qeXlbFrCtY5CokC45KuOTdKNbP0pxkldmKwum4vDt3lXV1mRejIjInuRKuql743rjPSFxhvOFro1rY1rY1rI1ro1ro1rI1rY1r28y4wU55fv7i35CtWZXWZZldbVkctWVqitUtUFkarBMOXao8SLdjghicZ3hdkIijWxdKNZH0o1UXSjVxfiTq2LpRrY0a7oClmdNv+eDSVkQYniw/IUHgvwhZiFrStaVrStctctaFrVrlrSjISs5VytvBZWWVWVlYrKVYqyyrKsqyLIgxZQrdxdPdzfkMHLMrq6v8A0Aq6zBF6LifyLuVmKzLOsyzK6urq6ur/ADF+C/DdZlmWZZ1nWdZysx/J2/BdX4b/AP8AJ7//xABUEAACAQICBAYLCgsHBAIDAAABAgMAEQQSEyExQQUQIjJRYRQgIzNCUnFygZGxNDVicHOSocHR4RUwQFBgdIKTstLiJENToqOk8GODwvGQlCWAoP/aAAgBAQAGPwL/APgl56+uuevrrnr661MD5D2lzXPX11z19dc9fXXPX11z19dc9fXWpgfigbgPCP8ArLj+D7eMAC7HUAKzzr/+QxAzS/AG5e04X/V29nb3Go0DDwlio7bhMbeqgJ2jx8fRKtj6xSx4u/Bs5/xT3P5320GU3B2EfE2TGQcdPyYV6OlvRTO7F3Y3LHaTxjhnFpeCI/2dT4T+N6Pb2vC/6u34tUVjicD4WGc/w9FLi8HJmXYynnIeg/EzNjMU+jhiXMT9VTY6fVm1IniLuHHHhVukA5U0o8FftqLDwII4Y1yqo3DteF/1du0Y4TCT4oLztDGWt6q96cd/9Z/sr3px3/13+yi0+BxECjfJEy9qmKgN4zqli3SLUOMwz54ZVzA/Ex2BhX/sGGbWR/eP0+TjjhhQySyNlVRvNJBqOKk5c7je3R5B23C/6u3acLefH7D2jafCLFMf7+AZX+/01dv7RgnPc8QvsPQe0k4Hmbuc3dIb7m3j0j2fo6WbUBRaI3A/I+xfD/FvArXkTaPyv8F4R7YzELy2U97T7T2n4bxacttWGRhsG9u34X/V27Thbz4/Ye1mwmKQSQSixBrE4CXWYm1N4w3H1ceGxkfPgkD7dtt1JIutXGYfo5MRttUTb2F/xOqnhxOqMnkk1ftyGk19VLik1qtdzw+aiQphkI2UYcSrOp8Pt3PVWIxG8n8qlxktmfmxR+O3RU2KxD6SaVszMeMaQHsGDlTN0/B9NKiAKqiwA3CnUYbA2DEd7f8Amr3NgP3b/wA1e5sB+7f+asbJjI4YzCyquhBG3yk8fC/6u3acLefH7D23B2LHOmiZD+yf6u04Je9/7Oi+oW/RXPIfRV4MLnSjFKNHOPB7Vor2vSReKKMMIuw2mgcRH3M+EKEiG612Pg76vFrOc8oG40TN3ORdq1kwkWav7Xhsi0HjN6zTKurwjQyG61c887BWmQtEu4DfTYXE88UWY8rcKMsWdU3ZafB4nvlttM7yXUmoMPtjOvXXJiUejieNGBZdooqOXJ0Cs8WGzJWixSaJ60w5QoT+GdgrRzAANsph0inS97m/5TJNK4jijGZmbYBTSi4wkXIgTq6fKeOHCYZM88zZVFRYKEAka5JLc9t54pfPPHwr8onsPHwv+rt2nC3nx+w9twX42ke3qHacGZ9tn9WdrfoqySN3NNYFFuSthqrs0KQC9waSRT2rnqNIZOa7a6MeVcuXbWMivyU1CsRIdbZuJGVADn3ClcAFzvptIBa2+p1hv2PuqcfBoxsbshNPo9iVoNEo3c2mxWJ553VHHIbRWFKI7ZbUcQF7qd/FBforO2wCi6C1YtDvpIn5rHXQVQAKuQBLfVak0m24tQaYnQJurDTRjLygNVKR0flR4EwcnIQ/2lxvPi9pPicXhsRPjX5KtGFsi+vbXuLG+pf5q9xY31L/ADU7dJvx42PFQTzGZlI0Vt3lNe4sb6l/mqXE4aKWJI5NGRLa97X3eWuF/wBXbtOFvPj9h7bAYMbYIi5/aP8AT2nBKEWPYyH1i/6KnEYRrOaBxsnJG4GtBlGS1dxN4Cd57WTzTUjjVKG1GtBmXR7NtSi+aV9tT51sL8TRN66y4ZwU+FVsVLlX4NZEHlNFemsdF16vXT6QdzY3vWdXX01y5APJQljOvc1WjOZPXWWXDO/opHIyki9qixcYJtq1UIEiKA7SaSPfvpsT4B10JoWyyismZMtCXGSFyPB3VoQclqWNayrzxsqNJOeBr/KpGYksWJJP4zHfrX/itcL/AKu3acLefH7D2s2MxT5Iohfy9VYnHzannfNboG4erjwmCjvmnkCat3SaVF1KosP0dk801Km/N+I7Gvy+KRfGrLKoPXXIme1Xd2k6moJGoVRuHFrHFZhcVZRYfmNvL+Mxv61/4rXC/wCrt2nC3nx+w8d2IA6TTA4oYqcf3OG5Z9ewUpm7jhk73h0OodfWe0l4ZmTkR3jguNrbz9XpP6PEdIqaPKdEdn4g4jDtll21o8TESB4RoYnLZR+bCfw1/tf669+v9r/XXv1/tf669+v9r/XXv1/tf669+v8Aa/11PP8AhjNo0L27G22Hn9pipOzuxNAwFtFnvf0ivfr/AGv9dT4bsrsvSS6TNo8ltQHSeiuF/wBXbtCMPiZoM23ROVvXvji/37fbXvji/wB+3213eeWb5Ry3arBHdIF1zTeIPtqHCYZNHBEuVV/R+9tf4nlIG8orkqF8g/OWO+Qf+HtOFflE9h4+F/1dvxaSspwmA3zuNbD4I30mEwUQjiX1sek/E5jvkH/h7ThX5RPYePhf9Xbt+5YeWTzUJrLFwVij1tEVHrNA4tocAnwmzt6h9tCSRDj8QPDn5o8i7P8A522kk5ooSJzT8THJN/xWS/K6O2XDYbnb6EWOTKp30GU3B7STyVDxphQO5ntcmbldH40GTfXc5lY9HxAyaxzTUglk9dW0wv8AiNtcp7R134UHQ3U9piAfBoo49NdhS8qNuae0aouO/Q5FDj20pz8mwrXMKzRtmHbqmH1R9NZhO1+tq0chDdVK5Fr0UlFxQeKYi51KKXSoZIuquS1n3r+nz9j98pmJ1fCNqYO5TL0UCRpPLVq5Z5XQKGkw+RPGoSIbqaQStbNqFXGsUxLAG2qmjicnX6KXDTNlc7xXKYyeWgkYso4zLlzVLipOQr1yZB6aWbks6767q/q11bOw/ZrMjAivLUVcpgvlNEqwPkoncrkntJEUnLfVSw4g8tt4NDM7P5ayRLlFXlf1a6tnYfs1mRgR2hqWM5ljB1aqzYxj5LUNGQV6uKKogwuCtdk4LkOuvKKyvqmXaP0+fyViBV3YKOunlOwCuycYrNGdmqtFh4OV5KVX23vV11SLrFHDlc7DUtCbGOQm5atEgHXSebVzV1OYdXHlkUMvQa0HNjJ3VyXa9SOk7WA2U7StdVOusuiUddqjRHvC+6oT4xoOdgFNLK1oQdlSyCUlCNhqYnbJs7WH0cUrRvcgbRTmVyQu01k0S+W1RaJ7wyHm0GG/tOWgby13oJ1qKVSxbCsaDDYajboqEjxeL+z7Dtt+nzDqrEibkrsqHDYW55W0UANYA11HGVViosazCMX666AKOFwYux1XrS57zbbUmDnjOcauKOcjk2ArRwNnkbVqpA/OOu3aYWVRcMdfEyHfUoeItExvVoIHz9dDFY0ZQOatJlGpDXI1kitE6nMKAsUwoNYfExDkDUaVukdpBNbVeu5nM5FrCn0pPdddSloiYmq0MD5+uhicYMiLzVqw41bLmvXL7mfhV7oT11HhsMufXtqPTHXajHla9CGOMsassZjTxhWmlbSS9P6f6RhrruSWoowuDRkwTavFrJlT1UHxMxA3qKZxrY8V8ov5OILINmyrqnK6T2usX49ag+WuYvq4irC4NZFHJ6KzmLlVlRbCsri4qw2dpkkF6zZLtxa1B8tcxfV2tnFxXKi+mu9n113KO1ZJVzCuTHWqNfVWoW7bJflWvb4r8FMh5WsW6aHxXQzSa9ENQ/8A0sOQ3t8V3Y0B1+E3RQiw2qFOc58L4rex8Prlbf4tdi4ff32WhGgsB+fJZ5DZI1LGsPhVjw40r25h1Dfv6OLE4fCLC0MbZLupJvv39NQNiQBOyAuF2A/khJNgN5rRicX6xq/OmgbGrnva9jl9eyrjWPzFoIeVO30V2NAc2Ifvsvi1kQeU/n0YdTZ8S2X9kaz9VYjGsOTEuRfKf+fTWJxRt3NLjy7qwyPd1zaSQnoGv8lmij55GqtHoHB6SLClF72H5HhFwuTugYtnF+isNiMRl0si5jlFhU2DwqxFFygZluSSB+TLh54pnZkz3jAta56+qpJcOkiKjZTpAOLGKsrqvI1BvgCoWZizZm1ny8c8SNkZ0ZQ3RqrQdgzF72uF5Pr2VhcPIbvHGFP5hEacqZ+ataNO6YyXnN4tW2udp/PcmFwUUTCI5WeW5ud9afJo5FbI69fE0QPc8MNH6d//ADqrDIRaSQaV/KfutWHwKnXIdI/kGz/nVWJx7DWx0SeTf9Xqou7BVG0miMPFceM9cuGNh8G4rkGzjah20siRCSPYT0UIpUEebYQd9NLIbKtZUw6kk2AvTyuBpFQsQNlIHiRVJ1m+yrYeIW8Z67tCpHwNVCSJsw9lEk2A3miuHj0nwm2VyooiOq4rKO5y+IeLvCeuikCaS3hHZT4tlXOAxsNmqkXQprNtvFl75L4grkxRAddzQXER6P4S7KBBuDvFLEsauCua5ovIndb2CLWqKIDrvQikXRSHZ0Hi7obsdiDbXc4UUfC113eEW6Y6EkTZlNd0N3OxBtrkQxqPhXNATxWHjJQdGDKdhFJh0w6Shog92PWfsqOaSMRZEyhVNQYZcHGyxIEuWOu1HhB0GYyCTJu1bqw+EbCxxiQ2zBj0UHxDEs3MjXnNXcMHEg/6hLfZQ0+Cjfp0bFftqPFRxvGj7n20GxDXdubEvONf2fBxIP8AqEt9lAYzCcne8J+o0s+GkEkbbxUeIWITFpBHYm24n6ql7MgEEax5hkNyxuNVf2fCRIv/AFSWP1UsONh7GZtQkU3X09FNBhk7LmXUxvZR9td0wkDR9C3B9dFobpInPibaOIwIOysSNqqbBfKauMLhwnQb39d6WHEp2JI2oG91+6p8Vlz6Jc2W+2kxAhMOWMJlLX3k/XU0TYYzZ3zXD2o4kRaGzlMt71jf2P4BUMGQz4q7HRjUBr3mr9i4fR+Lrv660eXQYoC+jJvfyHi9wx/PNI3jC9YnDjBIwikaO+fbY2qHQw6fEMgZxeyobbL765eEgZOhbg+uiYrxyrz4m2jiaCBOy5l1Gxsq+mteFw5j6Be/rp5o4suKQi8Dtt8hrsZsMsIyF8wa/wCT+NI3NWrnuuPm/wAtZn5Uzc5vz5LicFJFlmOZkkNrGtAX0krtndhsvU+JfmxIWqGOTlaWTPIeraeLEsutVOiT0ffWFwu9E5Xnb6GHB5Caz5aM+IIIvZUvRCBIn3MpoOvPjarEZkcUU2odaN01FE51Jt+EemhipRyzzB0DprFfJN7OIdkAySHbrsBWngvkHOU0i35EvJI9lR4ZTbNympnnPc08G9r1lyInwlOumUNyo21MKil8Zb8SzTswDawq1iIo75RG+3yVF5wqWbxRq8tKpblyNrY1lyq56WNLJAe5tqy3vapMOxvk1r5KT5Ie002Y5Y05xFERZkfcb3roZTSYhv8ADzn1U0r62Y0DiAZJDtF7AUpwmrXrVjUrNKX1Zm6KLtrdzQDhJX3sxrT4cgC9mS9PhyeSwzDy0JMRhYZ3tbNIgJtU2Gw8aQpnSNVQWA1Cve/Dav8ApCoFeFWhJZjGRqtY0skWCgjkXYyxgEVOH5qqoTyW+29L2YYDjSSGGIPXqteu5wrGdz4drfdVhyIII/oAqTESXaSQ6l6OgCl7OQ4jEEcrlEBfJamxuAzKid8iJvq6RUcBbuGJORl69xqD9ZH8LVDhEOXOdbdA31ktLnt33Pr+yp8K5u0TZb9NHF4wtoc2VEU2zU+MwWZNFzkJuCKwljYSHRnrv/wVNNGbSt3ND1mkgeTIp5cj77Vo+xYWHSxu3rpex2zYeYXXXcr0ipMLiiXydxY31ld1RQYVSsZhDnMb67n7KnkxSszJJlGVrbqMGGBEZbNyjfXWN/Y/gFPicSzLhlOUKu1jUr4IPFOi5gC1w3VUGJS94nDauOLzRXCP6zJ/EaGMxpbI/MiXV6TUmLwOZGi1tGTcEVgmB1O4jbyHVUrxnLLIdEp6L/deosKhy5tbN0CgrQNK3jtI1/oqOfDsThpDlyttU0fkW+r8mzHW25a00g0uMk5ieLRmmOkxL85uj8+jsjExQX2aRwtBlOYHeKiwinlYhrnzR99qxWOYbO5J7T9VYrEXs4WyecdQrDgi6Rd1b0ffbimvvsR6qLpMq2Niprv6equ/p6qjjJvlULelwygMym7N0dVA2BtuNLImrcV6DWK+Sb2UjHcb0GU3U6wamv4XJFYYD/EFRtuMf10+WVUZdxrv6equ/p6qjhJzFd44ovNFYr5JvZUXnCp7brH6aRCwTMbZjurv6equ/p6qeRpFe65bCk+SHtNT+dxT+efbQUbTh/qpGOwG9BlN1OsGgZHCC9uUanVdZMZt6q6KBGIQg139PVSTNKrBb6hWLw8Tx6OOQqt0rs5iDPpNJe2+mUyR2It3uuyMMQJLZeUL1ilxTKRGoIyralZiYcQossqj6DR0UsEy+UqaXSCTCS7VZW2+kVwhHJysUkbR38a66qglbmpIrH10rocyMLgisYXPPTIo6SawCLt0yn1G9QfrI/hav+y31cWO8o/hFYTyv/Ea4Q+SNcHfLp7aRxsjmDN6iPrpMLplgZ+azDaeivd0fzDXu6P5hrEK84m0pB1C1qg/Vh/E1Yv5b6uLG/sfwCofPb21J5p4h5OKLzRXCP6zJ/Ea4P8AkRXCHyD+yuD/ANYj/iFZ1/uZQ58msfXUcsxyxODGzeLffQZTmU7CKgwCMHmEmke3g6iPro/It9X5KXc+QV2TiBmmbvUNdkT8qZvo/P2N7Ivmz8m/ieD9FPpL6PSnR36P/dTWN44O5L6Nv03rCwEWfLmfzjrrC4BT/wBV/YPrqfGMOVM2VfNH3+ziDx9+T6RRyloZBtBq2dV6wtNtkhbns3TXJ78/NH11k169bvSnDpZ4RsG8Vm2xtqdaxDqbqYmIPooAbTRhDFbeA42UDM5c7hXZMy5W8BT7ay7JF1qa8KGUVbMt+nLWdc02bvmbZbjj80Vivkm9lRecKKsLqdRFEgF4NzdHloKJMyjZnF6W8jbeSqatdIcQuSXfSfJD2mp/O4p/PPtrDfJimmhXNAderwayRycjxTroaRi53KK7ux5WyM+DTSwrmhOuw8GsiSXTxWF6yPJZfFXVS9krZtxO0imYgaheoXbXlzyN6vvrGtYXKhfWbVwhIRuRfbWyg0LTYWGNcqHwX6T1/dViuGk62Q/Uai0q53GpI4lo6cWnmbOy+L0CpMXg4zJhXOZlXbGfsrRQzZotySC4FLp3aZvAjQavQKONxa5cQwsieIPtqD9ZH8LV/wBlvq4sd5R/CKwnlf8AiNcIfJGuDvl09tS4eYXjkXKauwJhB5GITZ9xoIZI5reFIuuoZI5XlnQ3SOMah6KjadBHMV5aqbgGocZApkMIKyKu23TTnCstn5yOLg1i48UQZVIZcosMv/PbWN/Y/gFQ+e3tp/IeIeTii80Vwj+syfxGuD/kRXCHyD+yuD/1iP8AiFPFIoeNxlZTvFNJgkOKw20Beevo31ooosag8RVcUmMxdoi8mQRHnbDrPqpvkW9o/JDJIbAV2bitS/3MNdlYjnnmr0fn9TicNFOV2GRAbVL2LDmkRDo4l1a9wrDNjcK6Q6TPI7EHr4sTiBgnMZaycoc0bKw+FXZEgXy8dpI1kHwhevc0fzasBYVmkhjdullBo6KNI77cq24rnDRX8wViVRQi6NtSi26ovOFd1iSTzhV44UQ9IXjs6K46GF69zR/NrKqhR0Di9yw/uxxFWFwdoNXGGiH7A47nDx382u5RInmjizSQpIellvREcaxj4ItxEnDREnpQUFUZQNgHFd8PGx6ctdyhRD0gcd3gjY9OWrxwoh6QvEQwuDurSQYSCB7WzRxhTRjmjSaM+C63FEYfDxwA7REgW/FlZQw6DVzwfhr/ACQo9j4eKC/+GgHHnlwUEj+MYxev7PhooPk0A4gmIhjnQG+WRQwvWkgwkEL7M0cYU8RklwWHlkba7xKSaEcMaxRjYiCwpo5EEiNqKsLg0rpgcMjqbhlhUEcViLisx4Pw9/kxWWCGOFeiNbcZeTA4d3O1jGKyQRJCniotqMk2Cw8sh2u8QJNaOGJIY/FjWw4ve3CfuF+zi97cJ+4X7KsNQpnfAYZ3Y3LNCtyaWONRGi6gqiwFNHIodGFirC4NK6YDDKym4ZYVuKeWQ5Y0GZidwqTsjDZ8OWOTJqZR9dZsuIzeLk1+2kVEMWGj5qnaT0mpsfIttIMkd+jefx7SbaSSTUzC/GXc2ArszFaoF73H00MViRb/AA4+j9D5Ir2zqVvStp21G+z9BirAMp2g0WjD4Vv+kdXqrk8IkL0GH76DzF8WRufm+qgFGUDcPx8OFXYNbUANQ4i7GwFGabk4VNg8ahiJ1tGve4vipZzsFSYt9rnk8RZjYDfTMTo8DHtbxqDFcmGTmr0/FVHhU50hsaVBsFEnUKZA2jwSc9+mgANHgY9g8erDUP0Z2/ohc7KlxTc0clfRVzRhjOXDpz3oRIMmCj/z0FXUBWs2pYou6Mdtt36J6q29vt/Q0Qp3yXkilQeWux4DZRz3oYaAZcInObxqC6kUVkwsZmfyaqzYuUqviLXc4wD0/ohq/INf6DknYKeU60i5tdjYc8vwn8Wux43yRDnydNCDg+HPbfWbGSk/AFWjQL5P0Q1foyQvPfVQiRu7ya79FGDAxm7c9zQbEuT8GgEUD4q0UC6HmWrRsxsOceihHEgAH6I2HEQc2rqra3qrw/VX956q0kR5PX+ixVTlPTQRfSf0R1bOOQfCPaen8l1/ElbdxmpvPPaN535y28elxMywpe12oS4eVZoz4S/phYdoam889o3nfl+MkSRRLHExGvfapJcbidI+lIXORssK4SWbFXwkefIhtbnavoq4NxWUzRhugtWqrnVWVJUY9AbitnW/RerPIqH4TW4smlTP4ubXx5VlQt0BuLsaGKF0yBruDf20p6RUfyC+1qgzuqcgc423VdSGHSKiXsgYd42uC2w00Im07M+dmGyrK6k9RrJpUz+Lm18dklRj0K1Zc636L8fPX11z19fHjJEkUSxxMRr32qSXG4nSPpSFzkbLCuElmxV8JHnyIbW52r6KzZhbpvWfOuXpvqrubq/mm/Fd2CjpJrubq/mm/Fy3VPONq5Dq/mm9ayBXPX11qYGlihAfFyaxfYo6aGNjkxTJtBV8oP7O+hgOENcrakltY36DxSYmTXuVfGPRUjYRpgi7oG0ar6a7G4VzyR7GEg5a9YO+ldTmVhcEVB+Cc+kzHPlI2emkwuKxUiuJFDpqok7qZMPJol22vawpcNiX0qkgG+vbv4rZ1v0XoKWAY7BfiyiZC3Rm4sMsEUTiQEnSXrC4hwA8sYchdlayBXPX11qYGlihAfFyaxfYo6aGNjkxTJtBV8oP7O+hgOENcrakltY36DxaRVDzyHLGp2eWuyosVJHFfUdJowfJauw+GLvHezFucvXfeKkxUrdyRc1+mnTAaSNB/dwHLYdbUkXCGklTfHMb3HU1RYiE5o5FzDi7D4JJVM2UMgu0h+ylnxEk+jJ/vW0i/dWmAySocsidBpFi577+iuyjOctr2zfVWZ+epseusTiYwGeJCwDbKxQnjjj0QW2jvvvWuuevrrnr66g/BOfR5eXlK7fTWGwmJxTsNLkdDapMTJr3KvjHoqRsI0wRd0DaNV9NdjcK55I9jCQctesHfRnLjQhc+fdbpo4fgvPFH4Kxc4jpJ3VGcW0pRvBnOcN6ajxUWoNtU+CejiGGweJaNci8gW2mv775yUfwpm7J0h51ubq6KbA8GmzqcrygXOboFHGSyYpY9pLPnA9G6mWUBMVFzgNjDppYoQHxcmsX2KOmhjY5MUybQVfKD+zvoYDhDXK2pJbWN+g/kXX2pqbzz7e0fzvyD3t/1/6a97v9f+mve7/X/pr3t/1/6a97v9f+mve7/X/pr3u/1/6a97/9b+mve3/X/pr3t/1/6a97f9f+mve3/X/pr3t/1/6afEaHQZZMmXNm3D7eLG8KaeQys+bJqtraosbNiJYmYFsq22XrESSyvEsZAGTfWA4Mw0rLFk5TjUWtuqKYcJXldb2QA5eqsQsmI02ZrjoC+SuxYGKYcnkR35IXxjTYmDFCd4xmyBMp9GunwOKYySxrmSQ7SOusU8Zs6uhXy5RTYqXFK+LYZjG2sn00vBWExDBZ25t9np3Cji9Os4TnhVtapoJ3Mj4cizNtyn/1X4Kwj5IM+jte2a20ms0GMz4hRexSwNYjgzEuWkEZ0bvt6LGuxnlExyhswFqGLbFLKpjy5QvTUfyC+1qTG4rGBGdborjMcu7yUuEc2XSiKWO/JN99Yf5cfwml856GHwLmOeYZLg21b/ZT4oYhMRk1uoFtVT4WdjJoLFWY67HdR4PwxOhEmjSMGwY9JrSw8IL2SusAKRr869YZsSScRp7Pfp4nTZmBFe+K/ufvr3xX9z99YfDZs+iQJmta/FjeFNPIZWfNk1W1tUWNmxEsTMC2VbbL1iJJZXiWMgDJvrAYZWLLFKFBPmmgDidDgoCQtxfXt1CocRDibq2pZo9WvoIr8KsvdFGUp8PZUs82IsibXbWB1KKjxmHxRdb20iDKQeusRjwB2VApDDdm6anbHcI6OUa+VrZ/JWHxMeOLwo1ytsresVA4xIg0SkWyXvXviv7n76OJOLE3IKZdHb66mjZtWZIx1CwpUUWVRYCsRJDZSGWVfLYH20DWAivyeW1vVWEttcFz6TWAnAGYhkJ9VvrrBFtoBT1EgcUvy0f1US2pd96d8LJmUagSNoo4yeUOVa+Xfeu5yK/kNYqVDZ0dGB68oqDhTHTjSXzFDrbZvo8GYMkQh9EEU2zneT1UXTGJJMB3vJYeuvwZi3Zwb6MvzlI3UrPMJdOWcWFra6wHCfZSlLaTRZekVA4xIg0SkWyXvXviv7n76OJOLE3IKZdHb66mjZtWZIx1CwpUUWVRYCsRJDZSGWVfLYH20DWGxUYzLAWD23A21/RUWExeeN4dQZVuGFdkRoUiC6Nc20/8vXBIv3zKG67A08vhSSm58lQTWGdJrX6iD91Oh2RzFV8lgfrrHSIbMsLWPoqeU7Y4tXpNY6NgD3FiL9IFxWIi8B4cx8oI+00hL2mGxekVHhDIFj2a/rpYmkUFtd21XNdmrMEXDRElbc6pwk4g0QG0XvevwYZRm0Oi0lvpr3xX9z99e+K/ufvpV6Bah+tv7TWAivyeW1vVWEttcFz6TWAnAGYhkJ9VvrpWvyraK/Vnt7Kx0/hXVBWJJAzR5XXq11j4fABRx6b/AGDixE1s2jdDY9QFDSYAZd+WT7qOKwzXAGtW2qeg1C8vKIzSm+808TjMjjKRUCeNnjb1fdU0bNqzJGOoWFKiiyqLAViJIbKQyyr5bA+2gfyG/bT+ee0k878g79hfnN/LXf8AC/Ob+Wu/4X57fy137C/Ob+Wu/YX5zfy137C/Pb+Wu/YX5zfy137C/Ob+Wu/YX5zfy13/AAvzm/lrv+F+c38td/wvzm/lrv8AhfnN/LUkE7I7tKX7mdWwfZRttoDhSUHDu9rDJt9FX0gTArFe3I1Jb10X4LYJh3f4Gs+moIeE5Vhdu9uWym++nxGH4SUKozDSj/yrFcHyytLGYSVZzcru+uiMZ3G4aFi3gHr9VSTNPG3J5Cq1y5qWe3c44yCes1J8tH7F4oOrP/Cax/yRrhHyJ/5VNh8ezww6Y5nXbY7DWm/CbaK18+dLUvCGBxcmJGtNdrUPkV+uoTHKj5lBFjtqP5Bfa1QeYvsp/l4/YtYf5cfwml856HyTVwj8g/srHeYvtoyyxlhHKWt4yHo9BrSDElj/AIYQ5qw+ItlMuJz26LnikCc/KbV7tb9/Xu1v39YdMS2bEKgDm97mjbbQHCkoOHd7WGTb6KvpAmBWK9uRqS3rovwWwTDu/wADWfTWFvt04/hNHBSSLFMjkgMbZgagwUUqyyiTSNlN8uo/bUllJZpOyMvwdn1XqfBTSLFIz6RMxsG1bPoo4NJVknlYclTfKBr11ipMUAMPMxPK2FLa/rrS8HcIZVO64cD66EMGM04WxKoeS3URWHPBkxhULyxpMuuvdrfv6L8I4gy4fIRbS5tddkjUs4Dqesav+eWlxPZUUYty1dgCpptCCY55AP2Rqv6hSQzlzI2vLGt7DpNYLhGA54l3jobYf+dNR4SadI54Lizm1xWHgwziVYAbsusEn/1WEGMupA5q6yWOu1afDE5b2KsLEGpflo/qpFHNZtdMrBWkbn320ex573G46/IamkzDSc3L1VJ8tH7F4s+KBCxztfyG+v6aOJbFRaG17hr3oYhFsmkeZvgjX9tYA/Bf6q4PAlQnRKlr7+ioDwXOYkCnPaTLevdrfv6L8I4gy4fIRbS5tddkjUs4Dqesav8AnlpcT2VFGLctXYAqabQgmOeQD9kar+oUkM5cyNryxrew6TXZRkXsYpnznZlrslo8KF25llsv0G1Q4XgyIaCLucSxrbMx21BEnKbBBWNt4AsftqTAzyrE+fPHnNgeqoMFBKsrB9I5Q3A3W+mhicWTErtpT069Q+qsbBhiysYyhWQWIvsNOmLOhRwYnzeC199YhExEcs06FEWNr7d9YrGkckLolPTvP1VfEnk6TlXrTRskTgeQNUMcknIXUCd1Y5U5ogNvVWNR3VWdVIBO3bU4wT92ZO5urb/LXu1v39e7W/f0ubnW10P1t/aaw2LUXELFW8h/9fTUeEmnSOeC4s5tcVh4MM4lWAG7LrBJ/wDVdgWOnEWfL8K+a1YjDYiQRJNYqzbLimwUUyyzTEXCG+UA311i+EMR3OOQ3ufFXf7aeHDl1kXXaRbXHSKlgOIiWaNsp0mq56jUoZoHxNu5ZLZ71whe+iIVfTroCe4SFzG/mnf9dPiBiYpDl7mqNcsa7JtyMOpN+s6vtrskalnAdT1jV/zy0uJ7KijFuWrsAVNNoQTHPIB+yNV/UPyG3bz+ee0l8/tmZNzFfymCPsnscRktzM1/pqTApLoM6hc+W9h5Kjwmk02Qk58tr3NI0kskUiCyldnqrXwjyfkfvorBdnfnSPtNGY3w+I/xE3+UV3bHlk6EjsfbQgwsejQesnrpuEezcl3V9Hor7Lb79XEmN7N02XNyNFbaPLWIwufR6Vcua17ViD2V2RpsvgZbWv19dAzApMNQlTbXvhyPkdftposPmOY3Z3Os0mkYxTJzZF+uo8WccZDHsVY7X+mlxPZmgsgTLo83T19dIl75VAvR4R7NyXdX0eivstvv1VHBp+x8kmfNkzbj19dDB6bTayc+W22uyuzNPySuXRZfrrEYbNk0qFM1r2vU79ldkaUAW0eW300uB4TtpQuYP4vp3UZ3xq4kDlaMzhvoFLNEmWMSNMQPBH/LdvBH2T2OIyW5ma/01JgUl0GdQufLew8lR4TSabISc+W17msP8uP4TUU4lbD4jMwzWuDr6KD4rENiQPAC5R6aCAAKBa1GTCynBk+BlzLQfFYlsSB4CrkFPgyDHAy5LR6rCu448qvQ8dz7aSeaVsXIhuoK5Vv5O0MGJTMu0EbVPSKOj4Q5G7NFr9tForyTsLNK+30dFYJ48xxU4yZN3V7ahwMgEsaxiNgdjUWwuLMKHwHXNb00s80nZcy61uLKPRTyykhomBS28nVQkfnYhtJbq3U3CHZuS7q+j0V9lt9+qjHIMymu54jk/CWs0zmbq2CpJFJYnm38EU3CPZuS7q+j0V9lt9+riBmBjmXUJU21yuELp1Ra/bWjwyazznbnNQhnupU3R12rUU/4QJ0bBhlisfb2hgxKZl2gjap6RR0fCHI3ZotftotFeSdhZpX2+jorBPHmOKnGTJu6vbUPBbTPGqKoLJvtXviLfI/fWkW8+I/xZN3kqx1ijJhJzhb69GVzL6KEmLmOLtrCZcq+nprFrNdY0TPyekbKxGMb+9ORfIP+fRRnVjhsSdrqLhvKKBxGNLx+LGlifTSYeBBHEmoAVpAdFIdpG+uVOLdS0qqWVgdbdNaHL3O2XL1UWw2MMMZ8B0zW9N6jwmlaYJ4TC3aDhHs3N3Uy6PRdO696aKRQ8bizKd9FsLizCh8B1zW9NLPNJ2XMutbiyj0cTTwSHCStray3U+ig2LxRnQeAi5b+mpcIRo8OY8ll1ZRWKxmvQoujXrv93tothcS+Hv4LjOKGmx906EjsfbS4fDJkjHrNB5LxYhRYSp9dDScIXj+DFr9tDD4ZMibSd5PSaMGJTMu0EbVPSKOj4Q5G7NFr9tForyTsLNK+30dH5Oan889pL5/alRz5NQoxHZJ7fzoZpFaKc7ZIja9a8XiLeijHhYst+cx1s34pIJpHjVXz3SlwsTs6Ak3fb+OjxUsIeeLmOd3aCLExCWO98p6aVEGVVFgBu/I48VLCHni5jnd27QTppIm2rSQwII4l2KPyR43F0YZSK0WGiEMd75V/KbfiJ/PPaS+fxqzgsWOoCu8SVn2KNgoEbqjJQtmG6u9tWtGFAjYfiX2Vm3UQUe/kpgsZLAX1+WgdG5rVG59FAFLXNqVrWvxGpvPPaP53HB6e0K7xrHHF5o+JpXjQPc670G0KFDtq4hRl6q5kY8tLKba+jiNS+ee0fzuOHtOquqttQH4A7WRFPNNqlz+D8SkDLuas660O1avCcy+Ka7pHlNR5Obc8RqXzj2j+dxw9JJ7Xr4sN8mvs7XEedWI9HxJHigO7NrrSR64zuq8bZG6K5aZh01EVFhr9vHL5x7R/O42IN4k5K9vhvk19na4jz6xHopoyr3U2pdGCdeu9HRnZtv8AiD8RManeayNzazRmxqzjMKiK7Nft45POPaSefxFFPdZuSPr7c1h/kx2s5+HU1uqp7+NWqsSCder4jjxwedV+NInzllJ2CtULny1qw/8Ampm2XN628bCOQqL139qzSyF7ahf8RkJ5cer0VtrnVzq51YhPhViNevVqqfMCAxzL1jijl8HY3koEG4Pbj4hmaRwi9Jq0YMprkwgemkDeDr4713WMlr7a5ritslNbZftGlDBBmsL76UtKpZ9QA/Es8BsxG+rT4YHpKmuWkkfovXfSvnLXupKLWwzMd5UVeLseM/BtTTHGrfcLjVWvFwn9qvdEXrpUOIU2667+tc8nyCu5xs3WaVgQbjXbjHxDSMH5SnLlJ2WrWLemv6qBjGv11qRvVWtG9VZUif5tKZozpN9d7+mu9fSa1wf5jXuf/Ma9zfSa9zD5xpYo8sUa7BenZTeFOSn4q5DJINuU1yJsq/CS9ciWNvOuK50XoY/ZXe/8wrvX+YV3r/MK71/mFd6/zCu9H5wrXlXytWt4x5LmuVMSOoWrud7nee0EObuhGbL1fELiGU2Okb21lnginHWtjWuJ4fIL1yMQl+htVcllbzTethrbWtxXPrUGNcmL11yVVa77l8grlTP661kmuSbVtHHzGPorVE/qrvLVzLeWtdhXKk9Vcnad/wCNu7hR1muXiFJ6F113OOST6KtFaBerbTM7l20Z1t6PiFllVWfDOcwfo6j2momuTO49Na5mbymtxrYK1p9Na1IrlzyL/wBr76141x/2jXuxvSp+yvdQPlJrvsPpkrU2G+cK1PhvWK1SQ/OFapY/nCtUqfOrnj11rkUftVrmT51d+T51a54/nCteJi+eK92QfPFe7YPnivdaejXXug/u2+ytUjv5qVqinPoH21yMGx8r2+quRhEXzmvWpIF6wp+2vdFvNUCuViZW8rVrYntGxUgK3GVQfiFsdYolU7Hk8aP7KJgnSTqbVRvhmcDemurSI0Z6GFvzF3ON380XrvOjHS5tXdsRbqQVyYgz+M2v4iuUobyiiXwkJJ35BR/s5Q9Kua7nPMp+FY1qx1/+199cmeEjruPqrkqknmt9te5/Uwq3YcvoWteDmH7FcqGQfs1zG9VcxvVWw/iNhrmn1VzG9VcmFz+zWrBzfMr3HL82vc/rYCuUscflauVPCB1XrXjfVH99cueZvJYV3jOfhMavHhokPSEFahb4meaPVXek+bXeI/mCvc8XzBXueL5gr3PF8wV7ni+YK9zxfMFd4j+YK70nza5i+qtn/wATn//EAC8QAQACAQMCBQMEAwEBAQEAAAEAESExQVEQYXGBkaHwILHBYHDR8TBA4VCQgKD/2gAIAQEAAT8h/wD4JEi3Abs/qs/qs/qspzfFn0AyUG7P6rP6rP6rP6rP6rP6rPbAZcv9nWZ09lvmfY+Q5i9FzMoLVhIlKyr2Hw37+B9Oz9SkiGRNpsCr9xKljOZHXwU+4xsMLrJ7bfIQsBrRYn7NaSzBz/UHH3VEnHdtGVXoQzej0Za+DZ/CBX0fB8f4SXLNo2I7rd7dpZq9n4Psy7/ZgPNst+ByrQHLHhyV3A6PzVeunzOeP5tD/kLgI/AbfT8Hx9CCZBZ/pdGuqBJq5qOHmkr6E5ML/hHvw7MM0cLU5HhGxO37LrLhag0B4fA0PN4l9CwAPtZwEpBTZbBofIPN3+r4Pjqa/RRQKckddCyE1qp+SHXwoKL4/wDg/aq6EwydtaJi8C/+v06vG6YkN1Klf6fMDTqGhv69I8bZWn+0xWRu2P8A0eF9ovQlHjLlGl5uh2t3h9XwfH+AylxFqfvxwmoxJMPVVufMR1vEoYUyW+B084rNKnIln6cTtwhUGqf4b33QuWj0BCIaOfqWi3SCWprqltTt/OZgntc1fxGIiXsUwfX2Mb7S5NWX5f7W7Uy0rp4N3sRpy3OP42DqVGqNjsLz9l9oTEg1AbErOUXsPXBAh4uDkCt9h1+D4/xGRtruHQj87fQjVlxfg0/SrsY7bmWNpo1ADMq/003bvYFtii5Q0+k0moXQKuxdkZ527VBWeQYOtQyYV7THr2HWF7uUIDcOpuRxVZU6RLCqhJbO/M4+Uc6GBHdG3W4JS3mssD8mS5wDy1+ZjWrahzKAawZ7MKeRxjiCKROgYWrh2PGWJi3IYteOCFT5sVHZVPmzcEITvzEwb14/2V7ZeoRasaC3Vit78C/Q261LI298vY18oUotMX1fx2rp8bz9XX4Pj/EZdVrzysn46kJ7LX8Sq/SiseI4D6p4qI6nE5ZacSC9lZn6exTe0ajBszY6ACWGrOXTLBZpQLEBSWTVcM0bTWbKszUx10i3lnqs2la3d6qMMsl+MvNT4HJZGqCMK/6lhJlFNTpvPMM7sJQfGm3Sz+H8xq2sisBpTD0YqPGYefz0DOTYi+oG26zV0oW3IgxoWwwbNk9hBYWI/wBllxVRb3wvBq96NmPQmTjuW9qw2dewd+uZMBpQ4Hu9XQDZdURujnomoNqEKi2TiPg+P8Rmw1R9rLHoPU+h2S4iZH+R+lHM3IlLqKEcmYMXvSJQjznBC6L1+h18zERzFl4S67g1VNKJyjU1/XfpjxsxwZZX5i0RA714MzvNYS2ypdnM9SX/AK5UxmA1BzdCfmcTV4kppxEmiaW2g1RphkfIJFtMIFYLqpRH4DUDbZnyzDXvt5sHPWJWG2u8xDpXAHQISoUdVr4zdq3eIBdL/ZMfggFq3r/k98l8Hx/hMjstV6rYcq4IFphFva8gB5dQwyELQvsFvlDooC7Gn6dp3wqXZy+316RLfVpsxcG5iONf3nYJUZJlB8MRUR8BXXqMOiCnRuRNmVg9j/w/d/v/AIq6e7S+D46kx6otyvVKJbX4ELDZHuMr7fd4/J9z0rMW+viptxp+Bq+xD9O9ywlvbUbeP+C5sNvGecCAy7PUe/8A5aXNMFt1K01prTWmtN4GfeQ1fgi9CekWal7WkI34J7AqD4Pj6CVOR7IunqyJJmN0wHrLj1DujqY/lbH8Q0AZtg55e/6f2J3V/h++kT7Bx/6XxPL66vwfH+O/sRqO4vdp9pmYIuu8TdgV+zfzPLqfR0+b4+sIyvyAnNVfYMI27dSp9mM49ART4M294IAKDAH7PVn6n/BX/wBLrGqbai2Xo/suoLcBHyZMY/xCgKNfqXBbKa3Et6F7eMJMKxPoVeMiWzh6jpdVrN5iofoTCF/8SnPVj6ILLhsf2BxTPJ2lecu8rgcooAJo5+t1APOHc6Gc43jFNk2WcfoJmzMvyht+3CHnchNjMGzq67tyi9ui0SgtRPee366oDxZkMG6nEBKDKFuU+tQuYNMyJcFr7yjJNRlfOPbsXUv68K1xFgjmxL3NeMxuDU1P18r7GJinIqfwIZ31SuJHGGQ0CpqDehXHLFe7oGgyZvAXDLiaJCutZMuMGF4HnNcMV7la+H4UXaHXYj2mTWzC60lF6pUpPoxblpp7ZoYaHTKDVLhlKcqlI7Qr24jib91ytt+9ECiultGsAAszwV41Ag4NZFTw3KCNVqY4e2SWjY0zhpa4fotca1iNQqAMK8ZTot4Vhj7QMW6e5PvBOE3cZb2bkJ9ut+vvd/tFJ3IAo4eoJfclrIYCtLBdal3o1R4YVhqSWCnmiB5nhhJLwMsd3TD8xNxQbsqP5F1YMUGMG1+SYRe5hVVyrrGe5XvBl5VVyioXZbBM0/D06m2moP4RpkCNvMPtXufpVjvDoLpUD0nk0YmArbVgyk1pyhgtVZ7kLRAv6PbPRgW3hMNMFHaMTYXCE0R943N0BjVN6S5ocA094afr3uIiJBdqcS/WoWw4lqAU4EDKZGWFOxHqob0ioXWMFX2swUfUm3j0xaZiaVzF45rSWbfQlHKjxisuDoQ1M/wYJar2YR6ObFg1A9iojeAJU33SswFZimH+kjw1hCN0P0bJnmNTV9ZIYLGC+Ei2G1DaWC/AjK0XEQwB1IzGqoAy3rBLLf2l0K8T0lOxvVHHmWNkKmeSCmLs17zMU/r8Np76dZjSuXM3RSI3dTeWIeVUD/zammDVfu3p7ntXS0G5KHrp3LgAUY+h8QRpZ19vlc0QvLAAxiGm1QyoUkgzmdYZAXBGB32YBhQ+hDWbQsKW6wCAoNie2yuBaF5YAKMH0VS94n4YpHIwcXmaBcuemA/k1uC16RNJPB9SRYFRyP19Rx/6NC0LnZiWTkv9rtWIG3bAo/8AxUoLcExhupr9rvtZcy2LxUftbxyydBzGiuV8naFq9x/7loB32C4eKF6mqvBbpUBsYBjQOUI5RFILQ8P9QQxrUoCCbS0KCfGv/Uekm0MHy/dDCCFif+EybJA90Qa+atX/ALB+RruL/wC7xIqaf6B5zfFH63oEZpTCtXpHmpOWIYvIvxaPP/VRihataRrzqGw+0rDxYzNgF8/6YJN4hsKz3Z2bmoVrHhUYotuQXPLLUvXf/VL1Qo2BuM5Su7IIrV7L0L3MHARVkr1t19VenvvUDFGnhau/F5wRr/NLDb/wTI6YPvLtvFRNcbl8q/8AtpbOZQ6AEqnEpO9W7Cg2PFPTK8EG29+rUceOFOqX4UeUwVVw8IPisafaRNmfWwNc9o0h1DbuvkfzPBsbH3Y3W7Sv5IgK5S2/4ldfh6YZSo1rB2epLeJc59WoLqF1aXsLywTQOlufIgzl61Hrc5mSOq4YQYlqUBMBDvV5CF8Kwn3YtU13br4O8Z/eIZJ4LVftzNfkfmp/EQpB2tu9Hr3yOni7Rvh3Y+5MhDvX5iAGJYmEh0w2XlPxN9nX1KMrtE24yE+tzSI7O347PQuvyqp5tJX7VKQXvSk8n+YbzTpA6neF/BPAsLP3JWG2q6eT/MMc97iX/wBjRFCoKxZIGqr7+0AxOKaKuYpMh3DV5RQZkolJ/EuTHq/+HdirNsXleUYVW72xi1plGGDW20Qvorf8J3YpybC5XlCp0XJnw5mhFbY7JszFXmcXYhNTzLWgTvb6RFnOLAeTSEMSZa+LPul2UILvi93h6xg7Gb1xftP5LmL3O/R5e5xccnYifEzfg7RobrN14v8AL1gpVrVTDvB/OujVi6I4qvZxVaMRWbRtg3dHPTkXZbFFdfwE+BX4vxGW64Vg53Iz4V+JZ5SNPElvCZY2Ladphx+boFwZEQO1W98ftP5njIcnfo0JWqrjk+ELbtm+5+IGUThw6pa14RKeXGsJjTv/AK9IDTBvKOcDUOjAs9cnP/uH3NdJ9aobFtg1lgasAUdgJqeBOaNJmUvS1t/P6wBQUEtSr03MceNnzhIANhusv1WVbhB5f/PvMoIhW+7K0i4h7m8bSqCDh5JXFlx3GNS/AB/JMEKyPUeU0M3L8Cz4DlAVRljOTWL9gVHFJQVddxmp0eO/6+8rgDj3Lwff0hbSo3H+I4KaxTHzvP8AgTjZsSkg2d+gU1w41yscZtF7cqfNczeB13kPee+RB1WGFXZvr/EMTfbUf4mhoLtlqev36UKwph1DegRuK+Wpe8RxnzgSDhJX3zHkdG44CBKS7PYYjmXaY8ORmkCloaNop/sfBKYT5h7EAiVBczuS6JUeBr7faETNIFqq3xYt4gNCDg7rF5ahq/ww23+E2gri6mRN3hwNS2/K/bfujBxEs1cDStIpVxWEeWr0gkz0L/mi34WZp9lpH2xQu3FhfiwkKW0ImrHPjc13Ijg++vHn0L2CmlXWWvSeGty+a/hCZMU7NnzKgjFmhjVXi/tDRai+y1ZebLjHep8Bp628pepxwt48C3yjIt5Loa1e7p5wSaSsw9VzLbhtwfyHrCsau0IcvBrygAJC1Y/wmUbRcKMbthlqwH46c6L4f6pzsF/Klu6lNXNri2DvADk8yyXkNHp8vx0pMes3cwas110qFgbe97S8iaxCwFG66vUfKVw+HqrWnekajYQXXqwc+KQl3pB7TM2+Lp3V7lD6T47n/WOcjparNnea9PxK+oJfYdv/AHar3uj1YfEViWM2NK+b8OGbdka9/j82GXY/kGrMhz8vT0EAYPeFP4jDKoGyf2qf2KPZBzlRUT7sCeE1HAaLHxmdJ/Cp8BygDrDR4MDwGhuSxpZB5Vmszb6NxCmMD3Ff3JRahsW05n9qn9ihBwt6Dlfz0AI0PtT4DlPmuYDG0eQC4IKBsY/tU/sUPGYy8j+OlAen+3T4vlAXusHLIDrGjwYHwtDci1JQ0FzGYWm8EEWi5eIDSLEHM/sUArGA22JDIhwVoZe2xtKtmOJeUpUN5l4+1KmGn7RyVmQu6FnBuTjrFseSV7yzRmww7JmUZ0vxmWeHbyg7WJHAGEFA05HRhCi7wgP58oft+ngvYehc/Dz9L4DH8hwh+32sH7gQ6WjkgI+ffmfPvzK701+Af56V/Zvt68/E858hx9GfL8dKQr5uJ8py6ICpWBfB+FL7Sj5HqCBTBaLElSMU7oAHu/ZPjuf9VRU9xhjvJbcKeEe9xO3g/wDea354ux2wlkWS8MXXbLzuVPEKnH9iMVj7wel15SnIFSPj/Sb0jvjuehqoFQPpTSiAH3HWU+jjXKjG7bg5DzKihKuLuhAOS5mjd8Zh+Sel+O/rDWfigc+JABnhuXgJ2lB3lQI6zfdpDCjFFB4BLYqK1Re6UA3rfPD2Zkppr81J9u3f8TXiAs9R2raOj0+M4nwHKfNcwfgVG5HXhxl+CCCYgwPPWHrECDwMGrC3oYH3eHpQ9l+3T4vlPjeInltg5/5nhhBoeHE2/wDEweARtl6pdfx4Rp77Dn/mDqRpSHhMyDs0YuOePO5Jg0MsSnKjA1yPuIfqk44fymfUAL537E0EHgQgQq9K5yY4QeWHNPoEdAKv99aMq49oFh2oKpO+vrFO4DtGuPghIw/YbuQdtVYU9jf3jeWX6pqvd7efQvr/AAz9L5DH8hwl8Wh/J3jyzkjuxmGgQBb9ZVzzfFX2G3KwbEHlABgfQAu3J4Bv1jDBmRRo+MwomSCKo8E6Ofhec+G4+jPl+OlL5XifKcuiBYAdATUjiNeQDh/BLEdsj0IVQZy8keDs7wL2v9SSG++eJXd8xeF2YgO/DDt/7+JrTD6pgxQqBpg2MymIVhq3Z3SvPp5L2Wm7F1fnMjlg5Vl823r2soMX4t7hgoQaAUTGyqvnvPDClb06LEVlX+KG3tdQZbT5rmVVgaIqTsu0X69e3MwIBb20ECeg0dPkP4gEAAYAgwDUCxIMRGRMXt0SyJV1q0Jk1eRHoUFSqSrzi4plDt6dGIRa2n2h4RUCgOi9h1QtiN8CY+vVq06oXO0rRfr0AIalFiTjjIZxYTJTBM/kxP32ALvR0UKeo2Me3zKg/iGG6Mj6dVCpqovOpYXzqovp0oQgjHKnfLMZb0WcWHT3j8SyktS7RneWgg4qpwOEZbD4gORDHRGZNRLGIlW2uv7Rzx0T7dc/YLI+OJ2L4j7SuY+C4otTiDRBsIXkQCiWOz0xBRW3TEYAAoCOhg4I1VrLBB1TgcATEh4gcI6wSPBBDRGoJ1vQgLYE2gS4UTT2QTAU2/4PeW+VV274VMT/AFbLe/AUPT/OxyxgICugPoxyXOP8XtjxntpAZp+jheoQG1lQSulSu36GH2FAsSK02a+5XXlUfbuEs5qtFZbwa+bDiCoCgP8APkeT0swg6NDoeI12xgl+fdN6YrQOXvf7UtjQ2wL3ATx0Cga1bS4G8mL6JH4sH6oBo0/akRumDYhb0ERujKs1wRu84MfW+tJRh020hgwNA/TCDVJ2nrBHcnp+jkbUNWGl+fJDRKCeqrl2l5SM7QfAKgJZCHdh3LKo/STdri9nQVnV+lb8wDRE7vNwVNAf0UqbdQTa8LeO8f8AldhxLQm8N4eE/dqAnMlgecYOWMSDubky/o8TlidkdQwggExMTEDoOjWWaRRDdw3h3hn9DBiQWxtnLxxvaWloI11dbNX8YgSimuPGACrmzBBRPs/R6NbUvxhFapUv6DZlMpgsFlvQvLw5SoIiLX9DWy2h2gztR3I8zyJ8mPYDlKkFuhWDP6PqBgZYpcypVRhfoIpr1KlRt0MD0bOh1cM4/QbgbeDAd4aU7n5JvaE7/pC5/Iy41AqphqnyYA75TiPYrhT1IS+gkkkm+jDFSqhOKZVkDfn9BX4HHhhsZ9R/SC6mOqgFyqfhCDdPuS7rLo908i/GHU+gOlwYMv6giWxNFq/ZK9TR0wlHhx3N/bG8syzE+DbpYr6QSvogSvoYwRlenX/ccBA92XfQ0v0LVvBzMCYhbL4/V9T8s/Q9vH8XeCNog5MM58V0RF6BA6EIMJX0CLBuJMpUy6yazxD/AACVBa2FV7y08tAa/kWWp+Ggaa+RgoSaJpOy2iMAlCO5CZAG7O2D0vS3w5hcFLmgCYBEbHeXekD2dFot0nYt0X06cgK6G+BxFT1Ba6GlEzXHY5gBp3bIp07LXGRL7QMrQVWoKPIIh2CBiXpY9nQCq0HMameoFnlhwX0Wi2f1if1iALGzk6CVBa2FV7y08tAa/kWWp+Ggaa+RiAjelFMbwHOPdGCKbj9nTw7eiXgXkei8G8jFmE5CPecan9YjlIdmGFXTny59vOOq5QAdrHsi2iFVjh89+mUua+ldPjYjZS0nYZF+bClNTDH4GtwSYmgI6M7QgXRj1QX1iX1TFhwwNNC2UZIQKe4mZm4mHgB16W+HMLms/tFvgTSduSxfp0ZouBVSaUnM0o2oFLxPecan9YjlIdmGFXTny59vOOq5QAdrHsi2iFVjh89+guwhNW67H5IhshVdXkGqu8AjSBFLoRAXheD0B449YgRlnsEZ85YQSwnyZM+bKarKy6jL00ebjweMLG7LZ4cv2TQoQ+odmYgrm5dCDcWbynfZK2GZGndNRZFBOYAeRUL5LXiAbQHLP6xP6xEFZuEMsRiB02ouzByTKXNfSunxsRspaTsMi/NhSmphj8DW4HLZW2b9kJJlhq+YtKjZs9bjNryZaLgawdV00LWnJnk8J3/h7w52BdOFOHM1fhS+H7eM0cCF4i77II3j04/khhV058ufbzjquUAHax7ItohVY4fPf/So0ao9bnsoPg7oAGYSISLyfx6FnoH0kIfRfQG/1RAQSEuPq0AAButm9Ul3R/ToZgu0ylZzuxZx4KAQexcq9j4bIrd+UuO+YToFj3hFw2caai7s8pTrWBYY9Da35Q+sFiBeq/0S2y6qgzatbAbkG2NpFulmYixRBaCmVuqYo4eflD7YDDuutVGWuIEq3aIrVnOfCaoYvKyhd6V7SyAmTQ7d+FOO0SvrF68DeI05jKpq5Ks954vBsXj2jQl2hWDz26GipGVYGrh2I2NAVwQV9RHoZ+H5i+hvEa7Ox2Quwb6jcnNeUa+5WZWXhXvDW2VQHPPovYgQAFPTsyHjUoNCtLrhuvDpVbq3iyf3Cf7hLP31jQGtdDMF2mUrOd2LOPBQCD2LlXsfDZFbvymteTtCKd71xvllOde8doqguatR+RqMx4J0b4eC0+Ee27HUsuK077bgW4amJ7OaBinGR9ZVsABlq9zoduYuZqYgGCzJdXpiZAyLVPiT+4SbRajdTN24iHPiw5VhLjDbBpKAUObXD7mdwC4ROjt5OB+fWUHLT5U/FHlAIN9SFvu9Ucu/L3sgOnyXEoqCNliohE5wzgfm0GgLJlsvggy1+uZJjtQV0FJk259e0ZaDnSdoj0D9S7UXLaVMiPBf8Q5rOSuWW8YddKlSDolOz3i7QORdLi77zIGRap8Sf3CTaLUbqZu3EQ58WHKsJcYbYNJQChza4fczuAXGkiEX9iflBoEcgBTTRjM89gCtsOl5dspfYfKEcHw4AB9/WYvSK1yB6nojF32cX3CimHJbNswHx8nQL9B9ZZYNmFg9QgPcgPAoAo8SJrLZIA4na3BH1u2vJe01FaS1XrHH6VXUcPaUyKFnNNk/uE/3CcvXVbp4InR28nA/PrKDlp8qfijygEG+pC33eqYTUKuOL0VLFBuXBlfXHpEGlQ7qj7LEG4Y7gPQfSHmw6f2nji2Y9YZUtpiF0S8WfOC59W4GtFWiJTAymNDcu/cRDnxYcqwlxhtg0lAKHNrh9zO4Bf8AoXTL1tXrc1gy8IKXzvoUusYJa/nEeggfQQSoMIvo4/wHBki5cMFEZQdr6abFixYC6Cs0T3DOUt2DEDc4aw2mm9oUHU9ung2PjCrkKrg0LvjaOQ0aGC44w40jKT0IYzofxGnd5TZS+H7JivaJLT0XTzl5tdIgYAIVXx1sKPZ9IL6GC4zZ7dDnwfMVcA1KMo9sj4Q9s7vN1KeZuXYdAYyE1Y9YKSVnaV0NGjNPxOvQz8PzBfzdJ81znz3KDIBjk5+CyJ63xenjJXvUVSxst5DXv0UikDus1jq1rKmT0HLe8t2DEDc4aw2mm9oUHU9ung2PjCrkKrg0LvnnaeMd7HQtLL31xMfI7ABUvLs7Rtoi3US3pC+S0KwBDz+UI8RpWGXDSvOPVBGkVT2/CKLNsHY2p6mDGtq0Ou1f5Ipfm8Wx0bVn0e5Ka9Y6tA/YhHsMN/JdxEJ8uWY47ohC7NSFew9wQceMzXuOli9wqH4JQ89RL1q68pfjZeB4Oap6xPM1LK2PVlo8eDTJPkuJXVKdd8WHziJK5BpG1QsEpSSDgmoTAbjVfn+IQksRToXt1zV6Y9IYmcKD+ABq9o78O5GHuCJjYSvzgSYwG6lNOYFBQZC8dG1Z9HuSmvWOrQP2IR7DDfyXcRCfLlmOO6IQuzUhXsPcEHHjPWxxjVhZUOyfgEU79iBmQenpctb7xAPv6IAsWCAhYebL85p5loIixvl6S+YR1egIdw9UDj62mTApXnHwKrQQp8wnnCGBVdGnDQq8xzc4kSnoV6oOUGjYK0PDQm7RKwXHjME6cTWaRR04Ir8tqwbV6kF6OKCuXU1pBkB5unhlVA9qafWkPwSh56iXrV15S/Gy8Dwc1T1gCKlvOr+4hIxW0bsLtY+0BSczolqaaGIvnlCn7n0Q9FvoiF/mMZydamMmGKuIq0LGcZrmWkW1w/8AD7y5UMrUEPQkOFSRdiAO/pEzS021IPRXlHVoH7EI9hhv5LuIhPlyzHHdEIXZqQKKNP8AQua+cW36Fx1eEXz95fW3fFpGHRcWkrQTBMemb9CDCMJcuPS+i+gbjEuDE8f+rLnpv0o2VvOyJHRL1GoVrvBPzFuQ6W88xx82Bo8qPSl3VlIf8xuM7HaMg0pE8PN7MPO7xt5qr0hnMp35S3Z7SLSK/hdPd6LYa354m7B++KsubVIfzxcHT/RycPJDUdbTYm/LyYX7Ecg9D3h2G5FukN2iqW2MzzMd1Ku6x2nJVdFT2mWkV/Cmw8bxgqqRsY/hNb95R6LvZvd56Xfwq63npSKT4pSPAsTPavZdONIRjJaB2K18GVHd1RnQ9UfXlz036UbK3nZEjol6jUK13gn5i3IdLeeehmxKaacwu32YwNrL/wCpX2lKMgmA4iCLtHoSyvWNTq848W19KmWMN+EIqeG/1gfaVNiQHY6rrx+i0obNzCWJRfCwHllO1ZwnA2TQpVVYEPMtPKBTGHYzF5Rft6x7x9y9T+zk2+M5kN3WD2zflLth1m2n1BfnPIrxUw/hTgXrjvMlo2GY8yEkhtJYIwj0Hee0i0iv4XQDtaPXh5IAW25K0eMsWFLnJ3fxOXmFn8dotHjVwjZm32+i0obNzCWJRfCwHllO1ZwnA2TQpVVYEPMtPKVcwqz5DteZ967XOku1gvwNvvHACFIy8W7UD1Ce8Ycv+STCzsC6zLT0rzl2xWPOq+rUERT+wB3gwVr6mFr0gu0+Nq944XoBZ4ifk1PvLRwNVG8xIdcyPCIAy/QRR7yvrrW8N0HH0bA2m9S+p1qU20TYHaLyi/b1j3j7l6n9nJt8ejv1osm7kUzhbZvisvpUKu5RpTt4ShaqdwrJ03ARcNl4h4Nj6rHJD1tnmqvSaqS8puruwXEwWa4G5Ke9BUvXD3lfsbGeUbstKGzcwliUXwsB5ZTtWcJwNn+hbsszuyvpewi+Pv1rwvz7SoEIay9FelbsFxio7DSaQIEGX9KfSNRyTTo8M/8ABoczlXiGx9Jrw4gX1qcuLXmH/FQKkptaTceYHDbVq8P81JnrDdWyjTX6ChKlEO7HjDmjacDQ/wBOkz1hurZRpr9ZSKNyg5vaHVWtOf6lmS7VWOEmT6O8d/8AZvY1RiutQ5nafH95Yiu0fVEBz+BNM0laPGriP5CYXTU+0Q6lWMzbDtbxn80fGzhBZD6L6sV1GOnQTxz9h8NauYKVaZlS8zZinZhmlIFWw+zcATQXoVLK/paMplYqrcntNgBdQT0KWp8bl7ScZE4lfmuntejAGZvk11NRsQZUitvlUGXL6rLh0MVKgx1iRVT9iLnljEWVA4zbdCziVrbvabgPFCCKkrTiCekTb/7ZUEAIiusM84MsVMt1HOFC8pc20skTTHc5/aD0DBgMaXRBliAqjqfQnVuTX9h8A46ISu9TkqZft+gaquss6JmKvB9Yqijb8rPQCCnTV9MYdI9Iq5Zegtxgj2bCI3mM9OXCDLQ757TqMw6vUyg7Y/YiBHorvPBUa9y9GuEqOS0wuHmhDlPkW8GoKgj0XUaCrRyz32gnPQsZhGjMbGVrDB8bZ1GXG0+UCWcRkpQaIco2yrEdWXSGn0unXSfsOrXTuEP2jHIp6GGebgwvKTh5uk5Rh8bMpA8zO3Fai6ZjoBp1DdHGNw9JyZgsg4UFfFxK+gb26naFFxtHL6uWYF24dsy/pejrx/sM68KHR5l/aUBrNYYizC2CtZB3I160CCE9f/mJvCpFYeWMTMGZCZbX5xnQ+TdESWxF9QHEVoRrTbc9k7+HIncQrugXAo4JaQYdvMBbxjubyghsst4z1gBcFib9F4k0j0VfsNAGhq1O7PjBMYPzR20CwgVSziMqwRLLOsM33goLWHEPuCpbotpo+WEMRyiz4xLPohjiWYjUxicWMGUuFjDVR2J9JZfLOIh70IN/3lqZu2DKLgxdLL0+UtA41lF6AmzvsYg/NXCP/eJV63hiO7YSI/AQtGCx7osNS/2FIoZdjbLJUrTI1GVoYEvhigPPFAjEtxLwpcKFyUn/AEGb2K98T1gHL4czjvl3gtfkd5UBHYT3ADG759LWMukuqMmk08QQYhBLiWDDnqetxBfsFj1EhMI5/BuAWN2gL1d7n88D3fPvO9+feLb/AJ95vD594H8P3mmvhbR/mxfgnhD3/dC2lClbXpXSg++N1N/f9hVZlmPFD/JYeqRPK9gR4LLZtMGv7cbgvKboE0l+cdffwmor4RvyU/mmmGwSuLfnI85zlmpHYw5SLql6AW9pgHhGzMF55qCDww8SJaPxj9GuyAuTrLf6Lly5fW+qIG3qmO5YfhNSjuRYWPx+qMutiW6/sKa2MxeTnzIQhrNPXgyjAzhxm2vGhvWdyB1f1h/yQt6RmBlruZQ35GyqxZ7CLwvZi/EHgt/DWD7tb89GHrvLQf8AZyYpD2EP+ei558CP4wS0Ffgjo3LQ3BKknvJG3oSrCvn+zowL8pT81HmNhU+Lt092h/EiI8VD3hsLL8CoFRnC1LlWHLcqGsRUax97Q2pu+37CggCYR0YduhsfhKozY7+ssHaL/wAzvjlr36n+E+olTPMzz1V0v6Sx0Z6jX+yUKbiIqkcdzT5wUku+6b/sPcPobxI9qOK71hVEOx+S1Gnd1P7EatR3pIvF5tHrzifhNTb4j7MfJ/FSHWB3U911T+7wI/IiP8UabdaOtPDBtPSg2kwunrYp6OoPaDxTbXxcHxX5GWfdQ/tcd4hWP2n8FEeWPeH2ZR5hu+/K6naxiM0E8B1uX+yFSurbUuau/jGrP4iOsf4cT49+J8+/E+PfifHvxPn346OaOfgIaQPAQLQH/wAnP//aAAwDAQACAAMAAAAQkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkgEAEkEAAAEEkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkgEgkgEkkgAgkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkEkEkkkkkkgkAkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkEgkEkkkgAAkgkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkAAkkkkkgEAgEEEkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkklkkkkkkkkk8kkkkDkkkkkkkkkkkkkggkAEkkgkkAkAkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkjkkkknYkkkxv0kkkEkkkkkkkkkkkgkkggAkkkEkgkkEkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkhkkBuNXLypU1O4ByfgakkkkkkkkkkkgEEAkkgEkgkkAkEkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkhpAkkkXwnlfNqtjj8CA8kkkkkkkkkkkkkEAkkgEkkEkgkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkklgYkndnjzk8RZzB0ACK0kkkkkkkkkkkgEkkkkkEkgkgkkgkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkBkEkCjPUAG0kkkkkkkkkkkkkkkkEkkkEgEkgAEAkgkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknEkkgpUkkkkkkkkkkkkkkkkkkkkkgAAEgkkkgkkEgEkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkjkkkkAkkkkkkkkkkkkkkkkkkkkkkkkgkkkkkkkkkEkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkEgkkEkkAggkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkgAAkEAAAgkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkykkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkGkkkknkkikkmckEk8kkkggmAkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkH0kkkloskCEk5k7koFkkk9DaskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkigAcp5V9kgLjUHrE+F6iklxsJxkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkg9CcTPjEn1yxEkMknKUuknwlI0kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkhVC8ThpkgjePaTUkhDUcj0WK8kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkhfeQUGkkcmEEVvknIYEkZEjfkkgkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkAkkkkkkkkkkkkkkkkkkkkkkkkZkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk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","type":"image/jpeg"}, @@ -1097,7 +1097,7 @@ Error message and password prompt {"created":"20240223092012710","text":"Create an empty mesh object (in Blender it's called an 'Empty') and add an [[src]] custom property with an local/external URL.\n\n* `src`: `#building`\n* `src`: `https://foo.com/world.fbx#building&-floor`\n\n> NOTE: remember that [[showing/hiding object(children)]] in an [[src]] will allow **spatial referencing** (reparenting the target object to the root of the scene).\u003Cbr>See the spec below:\n\n!Spec\n\nBelow is the related section of the spec (full spec here: \u003Ca href=\"doc/RFC_XR_Fragments.html\" target=\"_blank\">HTML\u003C/a>, \u003Ca href=\"doc/RFC_XR_Fragments.txt\" target=\"_blank\">TXT\u003C/a>)\n\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#spatial-referencing-3d\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n","tags":"[[📡 by feature (heuristics)]]","title":"embed a 3D object (subtree)","modified":"20240223092757367"}, {"created":"20240624125444313","text":"\u003Cstyle type=\"text/css\">\n .examples img{\n\t border: 1px solid #CCC;\n\t\tborder-radius:6px;\n\t\tmargin: 20px 20px 20px 0px;\n\t\tdisplay:block;\n\t\twidth:100%;\n\t}\n\u003C/style>\n\u003Cdiv class=\"examples\">\n \u003Cdiv>\n \u003Ca href=\"example/aframe/sandbox\" target=\"_blank\">\n\t \u003Cimg src=\"https://coderofsalvation.codeberg.page/xrfragment.media/images/index.glb.jpg\"/>\n\t \u003C/a>\n\t\t\u003Cb>index.glb\u003C/b> kitchensink \n\t\u003C/div>\n\t\u003Cdiv>\n \u003Ca href=\"example/aframe/sandbox?https://xrfragment.org/example.glb\" target=\"_blank\">\n\t \u003Cimg src=\"https://coderofsalvation.codeberg.page/xrfragment.media/images/example.glb.jpg\"/>\n\t \u003C/a>\n\t\t\u003Cb>example.glb\u003C/b> simple startingpoint \n\t\u003C/div>\n\t\u003Cdiv>\n \u003Ca href=\"https://coderofsalvation.codeberg.page/xrfragment-elearning-templates/?https://coderofsalvation.codeberg.page/xrfragment-elearning-templates/index.glb\" target=\"_blank\">\n\t \u003Cimg src=\"https://coderofsalvation.codeberg.page/xrfragment.media/images/elearning.glb.jpg\"/>\n\t \u003C/a>\n\t\t\u003Cb>elearning.glb\u003C/b> quiz startingpoint \n\t\u003C/div>\n\t\u003Cdiv>\n \u003Ca href=\"https://searxr.me\" target=\"_blank\">\n\t \u003Cimg src=\"https://coderofsalvation.codeberg.page/xrfragment.media/images/searxr.jpg\"/>\n\t \u003C/a>\n\t\t\u003Ca href=\"https://searxr.me\" target=\"_blank\">\u003Cb>searxr.me\u003C/b>\u003C/a> metasearch engine supporting XR Fragments\n\t\u003C/div>\t\n\u003C/div>","tags":"$:/tags/SideBar","title":"Examples","modified":"20240701154401195","list-before":"$:/core/ui/SideBar/Open"}, {"title":"feedback.png","text":"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","type":"image/png"}, -{"created":"20240619105321821","text":"3D Objects inside a 3D model can be referenced/shown/hidden via URI filters:\n\u003Cbr>\n\n\u003Cimg src=\"https://coderofsalvation.codeberg.page/xrfragment.media/images/filters.gif\" style=\"width:100%\"/>\n\nThis allows high re-usability of 3D modes for remote-, local- and recursive (embedded `src`) usecases:\n\u003Cbr>\u003Cbr>\n\n\u003Cpre>\n\u003Ccode>\n my.io/scene.usdz Embeddable as:\n +─────────────────────────────+\n │ sky │ src: http://my.io/scene.udsz#sky (includes building,mainobject,floor)\n │ +─────────────────────────+ │ \n │ │ building │ │ src: http://my.io/scene.udsz#building (includes mainobject,floor)\n │ │ +─────────────────────+ │ │\n │ │ │ mainobject │ │ │ src: http://my.io/scene.udsz#mainobject (includes floor)\n │ │ │ +─────────────────+ │ │ │\n │ │ │ │ floor │ │ │ │ src: http://my.io/scene.udsz#floor (just floor object)\n │ │ │ │ │ │ │ │\n │ │ │ +─────────────────+ │ │ │ href: http://my.io/scene.udsz#-mainobject (hides mainobject when clicked)\n │ │ +─────────────────────+ │ │\n │ +─────────────────────────+ │\n +─────────────────────────────+\n\u003C/code>\n\u003C/pre>\n\nThe [[href]] and [[src]] documentation show various examples, but the full syntax is explained in the spec below.\u003Cbr>\nOn top of that, [[tagged objects]] allow using `tag` metadata to group objects to trigger grouped features\n\n\u003Cbr>\u003Cbr>\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#xr-fragment-filters\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n\nFragment identifiers are derived from \u003Cb>metadata\u003C/b> inside the loaded 3D Model.\u003Cbr>More specific: \u003Cb>object-\u003C/b>, \u003Cb>material-\u003C/b>, and \u003Cb>camera-\u003C/b>names via a strategy called 'Fragment-to-metadata mapping':\n\n\u003Cbr>\u003Cbr>\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#fragment-to-metadata-mapping\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n\n","tags":"[[📡 by feature (heuristics)]]","title":"filters","modified":"20240619120922479"}, +{"created":"20240619105321821","text":"3D Objects inside a 3D model can be referenced/shown/hidden via URI filters:\n\u003Cbr>\n\n\u003Cimg src=\"https://coderofsalvation.codeberg.page/xrfragment.media/images/filters.gif\" style=\"width:100%\"/>\n\nThis allows high re-usability of 3D modes for remote-, local- and recursive (embedded `src`) usecases:\n\u003Cbr>\u003Cbr>\n\n\u003Cpre>\n\u003Ccode>\n my.io/scene.usdz Embeddable as:\n +─────────────────────────────+\n │ sky │ src: http://my.io/scene.udsz#sky (includes building,mainobject,floor)\n │ +─────────────────────────+ │ \n │ │ building │ │ src: http://my.io/scene.udsz#building (includes mainobject,floor)\n │ │ +─────────────────────+ │ │\n │ │ │ mainobject │ │ │ src: http://my.io/scene.udsz#mainobject (includes floor)\n │ │ │ +─────────────────+ │ │ │\n │ │ │ │ floor │ │ │ │ src: http://my.io/scene.udsz#floor (just floor object)\n │ │ │ │ │ │ │ │\n │ │ │ +─────────────────+ │ │ │ href: http://my.io/scene.udsz#-mainobject (hides mainobject when clicked)\n │ │ +─────────────────────+ │ │\n │ +─────────────────────────+ │\n +─────────────────────────────+\n\u003C/code>\n\u003C/pre>\n\nThe [[href]] and [[src]] documentation show various examples, but the full syntax is explained in the spec below.\u003Cbr>\nOn top of that, [[tagged objects]] allow using `tag` metadata to group objects to trigger grouped features\n\n\u003Ch2>What does \"&-interactions*\" do in the demo scene?\u003C/h2>\n\nThe scene-node (3D root) of the [[demo scene|example/assets/index.glb]] indeed contains (startup) [[#]] metadata (`#pos=start&rot=0,40,0&t=0&-interactions*`).\n\u003Cbr>\nIts hiding all 3D objects (and their children) which are tagged with 'interactions'.\u003Cbr>\nFor example: you can see all the menu-items in Blender, but not in the browser.\u003Cbr>\n\n* `&` is just a separator ('AND do the following:')\n* `-` means 'hide'\n* `interactions` selects all objects with name 'interactions' or tag: interactions metadata\n* `*` selects all objects inside those selected objects too (text-objects etc)\n\n> For more on syntax see the spec below\n\n\u003Cbr>\u003Cbr>\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#xr-fragment-filters\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n\nFragment identifiers are derived from \u003Cb>metadata\u003C/b> inside the loaded 3D Model.\u003Cbr>More specific: \u003Cb>object-\u003C/b>, \u003Cb>material-\u003C/b>, and \u003Cb>camera-\u003C/b>names via a strategy called 'Fragment-to-metadata mapping':\n\n\u003Cbr>\u003Cbr>\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#fragment-to-metadata-mapping\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n\n","tags":"[[📡 by feature (heuristics)]]","title":"filters","modified":"20240711105159895"}, {"created":"20230808113746326","text":"Just get your hands on a 3D editor (see this [[🖥 Blender ✅🔥]] guide) and follow the steps in the video:\n\u003Cbr>\u003Cbr>\n\u003Cdiv style=\"max-width:600px\">\n\u003C$videojs controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.codeberg.page/xrfragment.media/gettingstarted2024.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\nHere are various ways to create/test 3D files with XR Fragments:\n\n| | ''scenario'' | ''how'' | ''notes'' |\n| 1 | easiest | see the [[🖥 Blender ✅🔥]] workflow using the \u003Ca href=\"/example/aframe/sandbox\" target=\"_blank\">Sandbox\u003C/a> on xrfragment.org | export 3D file (.glb) in \u003Ca href=\"https://blender.org\" target=\"_blank\">Blender\u003C/a>, after adding [[href]], [[src]] and [[tag]] \u003Cb>metadata\u003C/b> as \u003Ca href=\"https://docs.blender.org/manual/en/2.79/data_system/custom_properties.html\" target=\"_blank\">custom properties\u003C/a>, and load exported files into \u003Ca href=\"/example/aframe/sandbox\" target=\"_blank\">the sandbox\u003C/a> (see video above)|\n\n\u003Ch2>Developers\u003C/h2>\n\nIn case you want to build your own 3D hypermedia browser:\n\n| | ''scenario'' | ''how'' | ''notes'' |\n| 3 | easy #aframe #codepen| \u003Ca href=\"https://codepen.io/coderofsalvation/pen/yLwedvX\" target=\"_blank\">codepen\u003C/a> | press the 'fork'-button to clone the example |\n| 4 | dev #godot | load the \u003Ca href=\"#%F0%9F%A7%B0%20GODOT\">example project\u003C/a> | |\n| 4 | dev #aframe #github | hosted sandbox by \u003Ca href=\"https://github.com/coderofsalvation/xrfragment-helloworld\" target=\"_blank\">forking xrfragment-helloworld\u003C/a> | Basically #1 but it will be hosted for free at your own github URL |\n| 5 | dev #aframe #github #modular | fork \u003Ca href=\"https://github.com/coderofsalvation/xrfragment-aframe-helloworld\">xfragment-aframe-helloworld\u003C/a> | requires javascript- and \u003Ca href=\"https://aframe.io\" target=\"_blank\">aframe.io\u003C/a> developer-knowledge |\n| 6 | dev #threejs #github #modular | fork \u003Ca href=\"https://github.com/coderofsalvation/xrfragment-three-helloworld\">xfragment-three-helloworld\u003C/a> | requires javascript- and \u003Ca href=\"https://threejs.org\" target=\"_blank\">threejs\u003C/a> developer-knowledge |\n| 7 | dev #polyglot | use the [[XR Fragment parser|https://github.com/coderofsalvation/xrfragment/tree/main/dist]] | lowlevel approach, more suitable for other scenarios |\n| 8 | dev #spec #browser | implement [[the spec|📜 XR fragments]] yourself | the spec is simple: parse URL and iterate over a scene |\n\nNext to that, familiarize yourself with XR Fragments by checking these videos: \n\n1. \u003Ca href=\"https://github.com/coderofsalvation/xrfragment.media\" target=\"_blank\">All videos on github\u003C/a> (tip: star the repo)\u003Cbr>\n2. \u003Ca href=\"https://www.youtube.com/playlist?list=PLctjJGlTmeE64XPSQER2BSbjmqVGaWM4J\" target=\"_blank\">All videos on Youtube\u003C/a> (tip: subscribe or add to 'Watch-later' list)","tags":"","title":"Getting started","modified":"20240702141550415","type":"text/vnd.tiddlywiki"}, {"created":"20230425160210102","text":"\u003Cshader-doodle>\n \u003Csd-node name=\"motionblur\" prevbuffer>\n \u003Csd-node name=\"rotate\">\n \u003Csd-node name=\"basic_gl\">\n \u003Cscript type=\"x-shader/x-fragment\">\n void main() {\n vec2 st = gl_FragCoord.xy / u_resolution.xy;\n vec3 color = vec3(st.x, st.y, abs(sin(u_time)));\n\n gl_FragColor = vec4(color, 1.);\n }\n \u003C/script>\n \u003C/sd-node>\n \u003Cscript type=\"x-shader/x-fragment\">\n uniform sampler2D basic_gl;\n\n const float PI = 3.1415926;\n\n void main() {\n vec2 st = gl_FragCoord.xy / u_resolution.xy;\n\n float angle = 2. * PI * (.5 + .5 * cos(u_time));\n float scale = .7 + .4 * cos(u_time);\n\n mat2 rotation = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));\n vec2 p = (st - vec2(.5)) * rotation / scale + vec2(.5);\n\n gl_FragColor = p.x \u003C 0. || p.x > 1. || p.y \u003C 0. || p.y > 1.\n ? vec4(0., 0., 0., 1.)\n : texture2D(basic_gl, p);\n }\n \u003C/script>\n \u003C/sd-node>\n \u003Cscript type=\"x-shader/x-fragment\">\n uniform sampler2D rotate, u_prevbuffer;\n\n void main () {\n vec2 st = gl_FragCoord.xy / u_resolution.xy;\n gl_FragColor = vec4(mix(\n texture2D(rotate, st),\n texture2D(u_prevbuffer, st),\n .8\n ).rgb, 1.);\n }\n \u003C/script>\n \u003C/sd-node>\n \u003Cscript type=\"x-shader/x-fragment\">\n uniform sampler2D motionblur;\n\n void main() {\n vec2 st = gl_FragCoord.xy / u_resolution.xy;\n gl_FragColor = texture2D(motionblur, st);\n }\n \u003C/script>\n\u003C/shader-doodle>","tags":"GLSL","title":"GLSL template","modified":"20230425170513931","type":"text/vnd.tiddlywiki"}, {"created":"20240226111559175","text":"The hashbus sits inbetween HTML's traditional `href` and the toplevel URL.\u003Cbr>\nSay what?\u003Cbr>\n\u003Cbr>\n> Because of historical reasons the `href` bundles interaction (a click) and navigation (replacing the viewport with another resource).\n\nXR Fragments also allows separating these historicially merged actions, by introducing a hashbus:\n\n| href value | updates top-level URL |\n|-|-|\n| `#foo` | yes |\n|`xrf://#foo` | no |\n\nThis allows much more document interactions, with the following benefits:\n\n* interactions don't clutter URLs for back/forward button navigation\n* many usecases don't require a scripting language anymore (hiding/scrolling via [#uv](#uv) e.g.)\n* use same URI Fragment DSL for navigation and interactions\n* re-use URI Templates across 3D nodes\n* allow 3D nodes publish updates to other 3D nodes (via hashbus)\n\nIn short, a complete **hypermediatic feedback loop** (HFL).\n\n\u003Cbr>\nBelow is the related section of the spec (full spec here: \u003Ca href=\"doc/RFC_XR_Fragments.html\" target=\"_blank\">HTML\u003C/a>, \u003Ca href=\"doc/RFC_XR_Fragments.txt\" target=\"_blank\">TXT\u003C/a>)\n\n\u003Ciframe src=\"doc/RFC_XR_Fragments.html#hypermediatic-feedbackloop-for-xr-browsers\" frameborder=\"0\" class=\"spec\">\u003C/iframe>\n\n","tags":"","title":"hashbus","modified":"20240228122229072","type":"text/markdown"}, @@ -1161,7 +1161,7 @@ Error message and password prompt {"created":"20240328173212858","text":"> An Easy ''nocode'' way to add metadata is [[by adding custom properties in blender e.g.|https://docs.blender.org/manual/en/2.79/data_system/custom_properties.html]]. Basically:\n\u003Cbr>\u003Cbr>\nCreate a plane or box-object with a texture-material, and add the following metadata:\n\n* `#`:`#uv=0,0,0.1,0.1`\n\n> Profit! this will position the uv-coords initially at `0,0` and scroll `0.1` in the `u` and `v` direction.\n\nRead more about [[#uv|#uv 🌱]]\n\n> NOTE: combine it with [[Reactivity / URI templating]] if you want the user to control/change presets.","tags":"[[📡 by feature (heuristics)]]","title":"uv and texture scrolling","modified":"20240328173629888"}, {"created":"20230427204906096","text":"comma-separated coordinates e.g. which after parsing can be accessed using `.x`, `.y`, `.z` etc.\n\n| type | example |\n|-|-|\n| vector2 | `1.2,3` or `0.4,0.6` | \n| vector3 | `1.2,3,4` or `0.4,0.6,5` | \n\nhere are some interactive examples:\n\n\u003Cdiv>\n \u003Ctextarea spellcheck=\"false\" autofocus class=\"sandboxify\">frags = {}\nok = xrfragment.Parser.parse('pos','1.2,2,3',frags)\nconsole.log( frags.pos.z )\n\n\u003C/textarea>\n\t\u003Cpre class=\"result\">\u003C/pre>\n\u003C/div>\n","tags":"","title":"vector","modified":"20230427205327718","type":"text/markdown"}, {"created":"20230427103350051","text":"","tags":"","title":"WebXR","modified":"20230427103400217"}, -{"created":"20230424092557827","text":"A tiny specification for \u003Cb>interactive 3D models\u003C/b>.\u003Cbr>\nTurn \u003Cb>3D models\u003C/b> into \u003Cb>linkable AR/VR websites\u003C/b> by adding \u003Cb>metadata\u003C/b>\u003Cbr>\nSimply put: \u003Cb>SURF\u003C/b> 3D files, \u003Cb>browse\u003C/b> 3D hypermedia files 💙\u003Cbr>\u003Cbr>\n#spatialweb #openinternet #interoperable #accessibility #3Dhypermedia \n\u003Cbr>\u003Cbr>\n\u003Cdiv style=\"max-width:600px;box-shadow:none;padding:15px\" class=\"border\">\n\u003C$videojs _autoplay controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.codeberg.page/xrfragment.media/showreel_2024.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\u003Cbr>\u003Cbr>\nEnrich \u003Cb>3D models\u003C/b> with \u003Cb>URLs 💙\u003C/b> like \u003Ca href=\"https://www.w3.org/TR/media-frags/\">W3C Media Fragments\u003C/a>, \u003Ca href=\"https://www.rfc-editor.org/rfc/rfc6570\" target=\"_blank\">URI Templates\u003C/a> and \u003Ca href=\"#filters\">URI filters\u003C/a>, to allow viewers to address and control \u003Cb>3D models, files, and the \u003Cb>camera\u003C/b>\u003C/b>\n\u003Cbr>\u003Cbr>\n[img[xrfragment.jpg]]\n\u003Cbr>\u003CBr>\n\u003Ca href=\"example/aframe/sandbox\" target=\"_blank\">» View \u003Cb>index.glb\u003C/b> online\u003C/a> or \u003Ca href=\"index.glb\" target=\"_blank\">download \u003Cb>index.glb\u003C/b> and open\u003C/a> it in \u003Ca href=\"https://blender.org\" target=\"_blank\">Blender\u003C/a>.\u003Cbr>\n(developers can extend a 3D model viewer here \u003Ca href=\"https://codepen.io/coderofsalvation/pen/yLwedvX\" target=\"_blank\">this codepen\u003C/a>)\n\u003Cbr>\u003Cbr>\n\u003Ctable style=\"border:none\">\n \u003Ctr>\n\t \u003Ctd style=\"border:none;vertical-align:top\">\n\t\t\t\u003Ch3>🎨 no-code design-first\u003C/h3>\n\t\t\t\u003Ch3>🏄 surf 3D scenes in AR/VR\u003C/h3>\n\t \u003Ch3>📎 embeddable\u003C/h3>\n\t\t\t\u003Ch3>🤝 interoperable\u003C/h3>\n\t\t\t\u003Ch3>⛔ unhosted, zero-login, PII-agnostic\u003C/h3>\t\t\n\t\t\u003C/td>\n\t\t\u003Ctd style=\"border:none;vertical-align:top\">\n\t\t \u003Ch3>💾 compatible with glTF FBX USDZ OBJ and more\u003C/h3>\n\t\t\t\u003Ch3>🔮 99% compatible with \u003Cb>future fileformats\u003C/b>\u003C/h3>\n \u003Ch3>🌱 friendly to opensource & corporations\u003C/h3>\n\t\t\t\u003Ch3>❤️ \u003Cb>no\u003C/b> fileformat or editor lock-in\u003C/h3>\n\t\t\t\u003Ch3>🧑‍🌾 solo-user read-only 3D content\u003C/h3>\n\t\t\u003C/td>\n\t\u003C/tr>\n\u003C/table>\n\n\u003Cimg style=\"width:100%;max-width:900px;border-radius:15px;box-shadow:none;padding:20px\" class=\"border\" src=\"https://coderofsalvation.codeberg.page/xrfragment.media/images/nocode.jpg\"/>\n\u003Cbr>\u003Cbr>\nXR Fragments is \u003Cb>not another\u003C/b> 3D app or framework: \u003Cb>it's a spec for 3D models\u003C/b> which allows them to act as basic interactive XR experiences \u003Cb>aka\u003C/b> 3D hypermedia files (the middle greenzone below).\u003Cbr>\n\u003Cbr>\u003Cbr>\n\u003Cdiv style=\"width:100%;max-width:900px;border-radius:15px;box-shadow:none;padding:20px\" class=\"border\">\n[img[xrfsweetspot.jpg]]\n\u003C/div>\n\u003Cbr>\u003Cbr>\nXR Fragments \u003Cb>empowers designers\u003C/b> to embed \u003Cb>simple interactions & navigation\u003C/b> inside a \u003Cb>3D file\u003C/b>.\u003Cbr>\nThis \u003Cb>no longer\u003C/b> requires developers to implement trivial interactive stuff.\u003Cbr>\nIt promotes \u003Cb>design-first, secure, durable and interoperable\u003C/b> XR experiences from \u003Cb>3D models\u003C/b>, basically 3D hypermedia, mitigating \u003Cb>handcoded-XR-apps-as-3D-content-burial-sites\u003C/b>.\u003Cbr>\n\u003Cbr>\n\u003Ch2>Why focus on designers and 3D files?\u003C/h2>\n\u003Cbr>\nBecause developers are forced to fall in love with \u003Cb>a specific shiny\u003C/b> 3D technology, which typically \u003Cb>buries\u003C/b> 3D content inside them.\u003Cbr>\nThese however, still lack \u003Cb>addressibility\u003C/b> and \u003Cb>interoperability\u003C/b> unlike \u003Cb>3D Models\u003C/b>, which can use XR Fragments \u003Cb>URLs\u003C/b> as a basic primitive:\n\u003Cbr>\u003Cbr>\n\u003Cimg style=\"width:100%;max-width:900px;border-radius:15px;box-shadow:none;padding:20px\" class=\"border\" src=\"https://coderofsalvation.codeberg.page/xrfragment.media/images/metadata.jpg\"/>\n\u003Cbr>\u003Cbr>\n\u003Ch2>Getting Started\u003C/h2>\n\nJust get your hands on a 3D editor and follow the steps in the video:\n\u003Cbr>\u003Cbr>\n\u003Cdiv style=\"max-width:600px\">\n\u003C$videojs controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.codeberg.page/xrfragment.media/gettingstarted2024.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\u003Cbr>\u003CBr>\n\u003Cbr>\nSee [[How it works|How it works]] or \u003Ca href=\"example/aframe/sandbox\" target=\"_blank\">view a \u003Cb>index.glb\u003C/b> or \u003Ca href=\"index.glb\" target=\"_blank\">download\u003C/a> a scene right now\u003C/a>, or watch below how 3D hypermedia can easily co-exist with the appstore-model :\u003Cbr>\u003Cbr>\u003Cbr>\n\u003Cbr>\n\u003Cdiv style=\"max-width:600px;box-shadow:none;padding:15px\" class=\"border\">\n\u003C$videojs _autoplay controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.codeberg.page/xrfragment.media/xrfragment.bumper2.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\n\u003Cbr>\nCheck [[How it works|How it works]], or \u003Ca href=\"example/aframe/sandbox\" target=\"_blank\">view a \u003Cb>demo.glb\u003C/b> scene right now\u003C/a>, or see the menu in the left corner for more.\n\u003Cbr>\u003Cbr>\n\u003Ch2>Presentation\u003C/h2>\n\u003Cbr>\n\u003Ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/bfxqm1q_GXw?start=1445\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen>\u003C/iframe>\n","tags":"","title":"XR Fragments","modified":"20240709114502148"}, +{"created":"20230424092557827","text":"A tiny specification for \u003Cb>interactive 3D models\u003C/b>.\u003Cbr>\nTurn \u003Cb>3D models\u003C/b> into \u003Cb>linkable AR/VR websites\u003C/b> by adding \u003Cb>metadata\u003C/b>\u003Cbr>\nSimply put: \u003Cb>SURF\u003C/b> 3D files, \u003Cb>browse\u003C/b> 3D hypermedia files 💙\u003Cbr>\u003Cbr>\n#spatialweb #openinternet #interoperable #accessibility #3Dhypermedia \n\u003Cbr>\u003Cbr>\n\u003Cdiv style=\"max-width:600px;box-shadow:none\" class=\"border\">\n\u003C$videojs _autoplay controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.codeberg.page/xrfragment.media/showreel_2024.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\u003Cbr>\u003Cbr>\nEnrich \u003Cb>3D models\u003C/b> with \u003Cb>URLs 💙\u003C/b> like \u003Ca href=\"https://www.w3.org/TR/media-frags/\">W3C Media Fragments\u003C/a>, \u003Ca href=\"https://www.rfc-editor.org/rfc/rfc6570\" target=\"_blank\">URI Templates\u003C/a> and \u003Ca href=\"#filters\">URI filters\u003C/a>, to allow viewers to address and control \u003Cb>3D models, files, and the \u003Cb>camera\u003C/b>\u003C/b>\n\u003Cbr>\u003Cbr>\n[img[xrfragment.jpg]]\n\u003Cbr>\u003CBr>\n\u003Ca href=\"example/aframe/sandbox\" target=\"_blank\">» View \u003Cb>index.glb\u003C/b> online\u003C/a> or \u003Ca href=\"index.glb\" target=\"_blank\">download \u003Cb>index.glb\u003C/b> and open\u003C/a> it in \u003Ca href=\"https://blender.org\" target=\"_blank\">Blender\u003C/a>.\u003Cbr>\n(developers can extend a 3D model viewer here \u003Ca href=\"https://codepen.io/coderofsalvation/pen/yLwedvX\" target=\"_blank\">this codepen\u003C/a>)\n\u003Cbr>\u003Cbr>\n\u003Ctable style=\"border:none\">\n \u003Ctr>\n\t \u003Ctd style=\"border:none;vertical-align:top\">\n\t\t\t\u003Ch3>🎨 no-code design-first\u003C/h3>\n\t\t\t\u003Ch3>🏄 surf 3D scenes in AR/VR\u003C/h3>\n\t \u003Ch3>📎 embeddable\u003C/h3>\n\t\t\t\u003Ch3>🤝 interoperable\u003C/h3>\n\t\t\t\u003Ch3>⛔ unhosted, zero-login, PII-agnostic\u003C/h3>\t\t\n\t\t\u003C/td>\n\t\t\u003Ctd style=\"border:none;vertical-align:top\">\n\t\t \u003Ch3>💾 compatible with glTF FBX USDZ OBJ and more\u003C/h3>\n\t\t\t\u003Ch3>🔮 99% compatible with \u003Cb>future fileformats\u003C/b>\u003C/h3>\n \u003Ch3>🌱 friendly to opensource & corporations\u003C/h3>\n\t\t\t\u003Ch3>❤️ \u003Cb>no\u003C/b> fileformat or editor lock-in\u003C/h3>\n\t\t\t\u003Ch3>🧑‍🌾 solo-user read-only 3D content\u003C/h3>\n\t\t\u003C/td>\n\t\u003C/tr>\n\u003C/table>\n\n\u003Cimg style=\"width:100%;max-width:900px;border-radius:15px;box-shadow:none;padding:20px\" class=\"border\" src=\"https://coderofsalvation.codeberg.page/xrfragment.media/images/nocode.jpg\"/>\n\u003Cbr>\u003Cbr>\nXR Fragments is \u003Cb>not another\u003C/b> 3D app or framework: \u003Cb>it's a spec for 3D models\u003C/b> which allows them to act as basic interactive XR experiences \u003Cb>aka\u003C/b> 3D hypermedia files (the middle greenzone below).\u003Cbr>\n\u003Cbr>\u003Cbr>\n\u003Cdiv style=\"width:100%;max-width:900px;border-radius:15px;box-shadow:none;padding:20px\" class=\"border\">\n[img[xrfsweetspot.jpg]]\n\u003C/div>\n\u003Cbr>\u003Cbr>\nXR Fragments \u003Cb>empowers designers\u003C/b> to embed \u003Cb>simple interactions & navigation\u003C/b> inside a \u003Cb>3D file\u003C/b>.\u003Cbr>\nThis \u003Cb>no longer\u003C/b> requires developers to implement trivial interactive stuff.\u003Cbr>\nIt promotes \u003Cb>design-first, secure, durable and interoperable\u003C/b> XR experiences from \u003Cb>3D models\u003C/b>, basically 3D hypermedia, mitigating \u003Cb>handcoded-XR-apps-as-3D-content-burial-sites\u003C/b>.\u003Cbr>\n\u003Cbr>\n\u003Ch2>Why focus on designers and 3D files?\u003C/h2>\n\u003Cbr>\nBecause developers are forced to fall in love with \u003Cb>a specific shiny\u003C/b> 3D technology, which typically \u003Cb>buries\u003C/b> 3D content inside them.\u003Cbr>\nThese however, still lack \u003Cb>addressibility\u003C/b> and \u003Cb>interoperability\u003C/b> unlike \u003Cb>3D Models\u003C/b>, which can use XR Fragments \u003Cb>URLs\u003C/b> as a basic primitive:\n\u003Cbr>\u003Cbr>\n\u003Cimg style=\"width:100%;max-width:900px;border-radius:15px;box-shadow:none;padding:20px\" class=\"border\" src=\"https://coderofsalvation.codeberg.page/xrfragment.media/images/metadata.jpg\"/>\n\u003Cbr>\u003Cbr>\n\u003Ch2>Getting Started\u003C/h2>\n\nJust get your hands on a 3D editor and follow the steps in the video:\n\u003Cbr>\u003Cbr>\n\u003Cdiv style=\"max-width:600px\">\n\u003C$videojs controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.codeberg.page/xrfragment.media/gettingstarted2024.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\u003Cbr>\u003CBr>\n\u003Cbr>\nSee [[How it works|How it works]] or \u003Ca href=\"example/aframe/sandbox\" target=\"_blank\">view a \u003Cb>index.glb\u003C/b> or \u003Ca href=\"index.glb\" target=\"_blank\">download\u003C/a> a scene right now\u003C/a>, or watch below how 3D hypermedia can easily co-exist with the appstore-model :\u003Cbr>\u003Cbr>\u003Cbr>\n\u003Cbr>\n\u003Cdiv style=\"max-width:600px;box-shadow:none;padding:15px\" class=\"border\">\n\u003C$videojs _autoplay controls=\"controls\" aspectratio=\"16:9\" preload=\"auto\" poster=\"\" fluid=\"fluid\" class=\"vjs-big-play-centered\">\n \u003Csource src=\"https://coderofsalvation.codeberg.page/xrfragment.media/xrfragment.bumper2.mp4\" type=\"video/mp4\"/>\n\u003C/$videojs>\n\u003C/div>\n\n\u003Cbr>\nCheck [[How it works|How it works]], or \u003Ca href=\"example/aframe/sandbox\" target=\"_blank\">view a \u003Cb>demo.glb\u003C/b> scene right now\u003C/a>, or see the menu in the left corner for more.\n\u003Cbr>\u003Cbr>\n\u003Ch2>Presentation\u003C/h2>\n\u003Cbr>\n\u003Ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/bfxqm1q_GXw?start=1445\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen>\u003C/iframe>\n","tags":"","title":"XR Fragments","modified":"20240711105322780"}, {"title":"xrfragment.jpg","text":"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QMC6ZmWPKD6jHRMpTT/PKVC67qFODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODylODygCrH8cdkBarQE18FEU34RZTVGt1zH+txgdV3MYUXQiz68RZcFRhvKXh+ZBSGnlhAAwnqVMUDwm8p1D2g1okplwilqqtjumLetS3UecQ4ZaxbcOrgAz6S2MPQzRDT1aV8D5w2LlzEuCWskucSupmA73gjSBiSpgOzzLGNG8Z0LXnTSCyE3Y/UbFIbEb+4eCK5zYXfoGdYBehai1PJYXWggTWEcpXO508HWXajtWGy5rrWm2Yyp6R96rxB0wKyCsziga2qzGFbQx5bkdg9WssSWTQptvAlXY4TXEH46gTTXOsecbRZa1Rd6todzEA3lTLgzAoNRq2Fgxg5JYVU637yvM+L6zTC4H7zRZSkAPnMA2nDZJTYZriIZgVbcBixIgKUxJWiDeSLpDBkvNLvP8qi04bCe1DNBgGBWjqeoQPEOdgXWjBg6r2ZLwLBFis4bVWJi+ejJnKdRWUF7gkBljOQhCZg7Vq/8Am8Lqe3XgB5gbkC6NesQOozK7B/bhyKui5O0tzBpkhUXgUoQU1mizkOSXQ8BrI2C/pE2FwGkNQVZXUWDMyXe8oRCpnN7CD+vqWBIFTkSzlUE8PRJCwARWoA/59lqd1abyrrhg3heA1vdg8MDx2UCop3Rr9OZt5caejED0Zk9GY0itYmAJm7COuZQts8kNLOy0AzIFqLAAuFy0E4EgUuFu13lwlny015u8MMtHhglLDdD6Q0LNFF+iYETw+0GNJej2lMOuFJ5hBIOpjQFiF0tiZaE2SA1IAFGvSAsEABvAdUMIFR1Co5iXjSK5ZcIvsCaHfzgZEQrkc4LreKkzYRUqvKQPjUKsXu2fMhyAiRy6UunVrvgtjrh90Upk1PjEhijVNQZvV0qoFoXi9pno61GkpIQ6z1wWq8cKGp35V2BrcjVeC16xdCe//wBQQ2w0D3htucW9oYAEteQuVkfMs3lpKccOqDkFPzNOQ4RvvKHLLCE3QSjQeSVyNJwKgfliJWIjyP8AOoUJHSxTZWLXOmsBBoksqGr+DQ4gAJUgjXY2ZPLLmIVo/KBblCWwgq4n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","type":"image/jpeg"}, {"title":"xrfsweetspot.jpg","text":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAKQA+YDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoorgr7UvH13qFyum6XFb2scjIjSbcsAevzHnPsMVrSpOo90vV2M6lVU1s36I72ivMpvHniXw9cRReIdIg2v0MbbWI7kEEg16LY3aX9hb3kauqTxrIquMMAwyM+/NOrh50km9n1RNKvCo2luujLFFcD4k8Maza393rmi63JbggzTQyyEKMDnHUEcdCOKztI+IurWtpBPrmmvNZS8Lewpjvg5/hJyOnFarCOcOam0/LZmbxShLlqK35Hp9FU9M1Wx1i0F1YXKTxHglTyp9COoP1q5XK007M6U01dBRRRSGFVdR1Kz0mza7vp1hgUgF2BPJOB0q1Xn3xauvL0KytR1luN5+iqf/ihW2Hpe1qqD6mVep7Om59jv45EmiSWNgyOoZWB4IPQ06svw2S3hbSSRg/Y4f8A0AVqVnJcsmi4u8UwoooqSgoorD1DxZpWma7b6RdSSJPMoIcr8i5yBk574qowlN2irkynGKvJ2NyiiipKCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAorP1nWLXQtPa8u9/lhgoVBksT2FccfEXifxM5XQrL7JaE7ftD4z/30ePwAJqJVFF26mNSvGD5d32R6AzqpAZgCeACetKSAMk4FcND8OluB9o1bVrqe8JBLo3A9stkn68Vf8UeINIPh6/to9St5JnhZFSOQMSfTilztJuSsT7aSi5TVvmdSCCAQcg9CKWvOfDvjzTdK8PWlndJdyXEQZT5aAjG445JHbFdto+rw61Y/a4ILiFNxXbOm0nGORycjmiFSMth0sRCpaz1NCiiitDcKKKKACiiigDG8SeIYvDljFcyQtN5kojCK2D0JJ/SteORZYkkX7rqGH0NedfFOc7tNtx93Ejn9AP6139grJp1qr/eESA/XArOMm5tdjnp1XKtOHRWLFFFFaHQFFFFABRRTJZPKheQ9EUt+VAGPo3iWDWdT1GyjhZDZvt3lsiQZIz7cituvM/hi0kuq6lMxzujUt9SxP+NemVnSk5RuznwtR1KalIKKaro+djq2Dg4OcU6tDoCiiigAooooAKKKKACiiigAooooAKKKKACisvWPEejaAqNq2p21nvyUWWQBm+g6mqdh458K6m4S01+weQnARpgjE+wbBNAHQUUda43xp8QrfwRe2SX2l3k9pcqSbmHGEYfw4OMnv1H40AdlRXNeHvH3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jjJU1C2ExS3uEifVpXeaK282WNCvysikHqeN2Dxmr/heK4hvdX8+K9AmmSWOW7UBpF2KuSQAAcqeOCBjiukoqpVrxasKNG0k7nOySTaP4kv7uSyuri2vYotsltEZCjIGBDKOe4OelZd9YXt34c1+4aynR9QuY5IrfbmTYvlrkgdCdpOO1dtRRGvZppa6fh/wwSo3TV9NfxOV1LQLfTZtOv8AT4bt5YbyPeDLJPiNjtY7WLYwDnI5FGnaj/ZN/rMdzYak3nX7SxtDZSSKylEGQQMdQa6qij2zatPUPYpO8dBkUgliSQKyh1DAOpUjPqD0NPoorA2CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiimTTR28LzTSLHEilndjgKB1JNAD6Kxv+Es8Pf8AQZsv+/wrWhmjuIUmhdZIpFDI6nIYHkEGqlCUfiViYzjLZj6KxZ/F3h+2nkgm1W2WSNirru6EdRWhp+pWWq25uLC5juIgxUshyAR2/UU3TnFXadhKpBuyZaorJ1PxNo2jXC2+oX8cEzLuCEEnHrwDRpnibRtZuGt9PvknlVd5QKwOM4zyPcUeyny81nYPaQvy3VzWoqlqerWGjWy3GoXKwRM4QMwJy2CccfQ1mQeOPDdzdw2sOpo00zBEHlvgk8AZxgfjRGlOSvGLaCVSEXZtJnQUVHcTxWttLcTOEiiQu7HsoGSa5v8A4WJ4V/6Cn/kvL/8AE0QpTn8KbCVSEPiaR1FFQ2t1De2kV1bvvhmQOjYIyDyDzXPXfxA8OWV5NazXjiWFzG4ELkBgcEdPWiNKc3aKbCVSEVeTsdPRWdo2uWGvWj3WnSmSJHMbEoVwwAOOfYitGplFxdmtSoyUldBRRRSGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFYcfia3PiabQ57ea3lVd0MsgwswAydv0H8jVRhKV7dCZTUbX6m5RXIa54tj0rxTpVt9tgFhKsn2rkNtOPlyRyOa2dM8TaNrF01tp98k8yqXKhWHHTPI96uVCooqVtGRGtBycb6o1qKKKyNQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArG8W/8AIo6t/wBer/yrZqG6tYb20ltbhBJDMhR1JIyDwelVCXLJN9CZx5otI5fwz4Z0O58MaZPPpVpJLJbozu0QJYkdTXWRxxwxJFEipGihVRRgKB0AHYVHa2sNlaRWtugjhhQIigk4A4HWpqqrUc5Ntk06ahFJIzpPD+izStLLpFhJI5LM7WyEsfUnFWrWztbGHybS2ht4s52QoEXPrgVPRUucmrNlKMU7pFa406xu5BJc2VvM4GA0sSsQPTJFFvp1jZuXtbO3gcjBaKJVJHpwKs0UuZ2tcfKr3sRXFtBdReVcQRzR5ztkQMM/Q1DDpen27BobC1jYHIKQqDn8BVuihSaVrhypu4hAYEEAg8EGq39mWH/Plbf9+l/wq1RQm1sDSe4gAVQqgAAYAHamNbwsxZooyT1JUVJRSuM5FZ5U+KP2VJGW3/szd5QOFzv646Z9666s7+xLX/hIf7b3Sfavs/2fbuGzbnOcYzn8a0a1qzUrW7GVOLje/cKKKKyNQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK5/wAZ63ceH/Dsl7ahDP5iom8ZAyeePoDXQVm69osHiDR5tPuGZFfBV16ow5BrSk4qac9jOqpODUNyylwYNNW4vmSNkhDzsPuqQMt+HWuMn8dXa+ErLW/s8UImvxAysCwMXzZI9/l/Q1IvhXxLqFumnazrsT6YmAy26YkmUdAxIGP1/GkTwBNN4ft9GvL9Wt7W+M0ZRTloj1U+jctzz1rqhGhD45J6+e2pzTlXl8Ca08t9CifGGvPqlnq/keV4cuLoWyI6jcwPG89/U+nGPeul1ie11jVZvCd1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H51Dquoa5bT3VrqnhxdY06SRjA1uu4hc8BlweQMc8fU1DScVrf8AFG8JSjWl+75bpWvZS03aura9VodTpFnDYaVb21vcyXMKKdk0kgdmBJPUdetXa8/8G2mqW/iCZ7fTLvTdFeMlre6kJw/YqCAR/nnpXoFdFOV47HlYyl7Oq1zXvr9/e11cKKKKs5QooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoorl7zxNq8N/PbW3hi7nWNyqzFyqOB3B24x+NTKSjuROpGGsjT0vVm1DUdUtzGqpZzCNWB+9xk5/HNU/CGpX2radc3l5KHVrlxBhQMIMY6dec1xVnfeIodA1TWLdLWKyu5nlkdzl8k7SF/E4re8OaFrunJpZh1ZWsz89xbFBiMEbsZ5ycn2rGNRtrQ46deU5R0fX8XoaejTSP4z8Rxl2Ma/Z8KTwDs7V0tcz4fG7xX4mk9ZYV/JTV6+8U6Jptybe61CNJRwVUFtv12g4/GtINKN2+/wCZvSnGMLydtX+bNiiqsGpWVzZNeQ3UUlsoLNKrAhQOTn0p1lfW2o2q3VnMssLZw6+xwau6N1JPZliiqmpala6TYSXl3JsijHPck9gB3NZ1x4u0aygt5Lu5MDTxrIsTIS6gjI3Bc4pOSW7JlUhH4nY3KKhtru3vLRLq3mSSBxuV1PBFZL+MfD8dybdtUh3g4yAxX/voDH603JLdg6kIq7ZuUE4GTTI5opYVmjkR4mG4OrAgj1zWXdazp91p2oLZ30E0sVvIxWOQEjCnnihtIbkkiHwrr8niHT57mSJIzHcNGoTPK4BB5781u1x/w2tXg8MNK4x587Ov0AC/zBrT1DxjoemXZtbi8zKpw4jUuEPuR/KohP3E5MxpVbUoyqPc3aKjt7iK6t454JFkikXcrqcgipK0OjcKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuV8FwXWnNq+mXFvIiW94zwyFSFkR+Rg9+n611VFS43afY1hVcacoW3t+AUUUVRkFFFFABRRRQAU10SRSrqGU9QwyKdRQAyOKOFdsUaIvoqgCn0UUA3cKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArn/GdxqVr4dmm011RlP75jjIjwc4z36V0FRXVtDeW0ltcRiSGRdrqe4qZK6aRFSLlBxTseRSWOqt4O02WfUG+wTXAhitFXHVmOSe/IJGc9a9S0nRbDRLdobCARK2C7ZJZj7k1I+l2L21tbNbRmG2ZXhTHCFehFXKinS5XcwoYZU3d6uyOS0TMuq+K4E4mM3HODypArG8Enw7Z6ZK+oy2qahvZZluiAygHoA364rvo7K1ivJbuOBFuJgBJIBywHTNQ3GjaXdzedcadaSy93eFST+JFL2b0fa4ewkmmrXV9/NnDBLe61HWZvD8JXSzp0qXBVSsby7WxsHr0/X15zLPxZPpOjabbaUjGG3+e+cx5BLNnbk9Pr/hXq8cUcUQijjRIwMBFGAB9KrwaXYW1q9rDZwJA5JeMRjax9x3pOlLoyHhZ3vGVnr/SOWtUm8Z6gupTQsmj2hJtYJOPPkH8Te3/AOr1qj4MTR7sXkmrGCXWJZmEqXYGQPRQ3416CiLGgRFCqowFAwAKydU8MaPrEhlvLJGlP/LRCUY/Ujr+NN03o92U8PJNSWr636/10MjW9Cj0vwFqNjp3nOufNAZskDeCw47YBqtoc3g+08NwrLNYMWjBnE2GkL45yDz19K3tE8NWegvK1pNdOsgx5csm5V+gwKs/2FpHned/Zdn5uc7vIXOfXpRyO90g9jK6kklpa255xNJNDod59lM1roF5fxxxF85WMhi5HfacD+XrWnfro8oh0fwtbwyX0yeW9zFyIojwxZu+Rx/9fFd9c2lveWzW9zDHLCwwUdciorHTLHTEZLK0igDfe8tcE/U96XsXsSsK07X0/H5djh7fV7jQ/A+pWH3b7T5jbAjjAduH/VsfQU628MeILLTpLCwk0uW1u1y9y6HeQR3659uv4V211pdlexXMc9tGwuVCSnGC4HTJ68dvSuci8Ma7py/Z9K8RNHZj7kc0KuUHoCf/AK1J02rdRSoSTV7tJW0/rsb2iaYujaNbaeshk8lSC57kkk/qTWhWTo+kXWnPJLd6tdX8sgA/eHCL9F7VrVtHbY66ekUrWCiiiqLCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//Z","type":"image/jpeg"} ]