From 64e2f9758cdec0c8c048ba231106b577a60a123f Mon Sep 17 00:00:00 2001 From: thelamer Date: Sun, 23 Aug 2020 07:33:26 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=20be8eb?= =?UTF-8?q?225e479aa6b0fe22368e80b1c89b8c2cd15=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/app.59ca17fa.css | 1 + favicon.ico | Bin 0 -> 15086 bytes index.html | 1 + js/app.4fa353fc.js | 2 ++ js/app.4fa353fc.js.map | 1 + js/chunk-vendors.08351f9e.js | 26 ++++++++++++++++++++++++++ js/chunk-vendors.08351f9e.js.map | 1 + 7 files changed, 32 insertions(+) create mode 100644 css/app.59ca17fa.css create mode 100644 favicon.ico create mode 100644 index.html create mode 100644 js/app.4fa353fc.js create mode 100644 js/app.4fa353fc.js.map create mode 100644 js/chunk-vendors.08351f9e.js create mode 100644 js/chunk-vendors.08351f9e.js.map diff --git a/css/app.59ca17fa.css b/css/app.59ca17fa.css new file mode 100644 index 0000000..2870175 --- /dev/null +++ b/css/app.59ca17fa.css @@ -0,0 +1 @@ +html body{background:#000}.editor{font-size:14px}.topbutton{cursor:pointer;position:absolute;right:20px;top:20px;margin:0 auto;color:#ccc;font-size:40px;z-index:20;color:rgba(3,238,3,.4)}.topbutton:hover{font-size:55px;transition-duration:.2s;color:#03ee03}.bottomicon{cursor:pointer;position:absolute;right:20px;bottom:20px;margin:0 auto;color:#ccc;font-size:40px;z-index:20;color:rgba(3,238,3,.4)}.bottomicon:hover{font-size:55px;transition-duration:.2s;color:#03ee03}.uploading{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(34,20,35,.77);display:flex;justify-content:center;align-items:center;z-index:30}.dot-fire{position:relative;left:-9999px;box-shadow:9999px 22.5px 0 -5px #03ee03;-webkit-animation:dot-fire 1.5s linear infinite;animation:dot-fire 1.5s linear infinite;-webkit-animation-delay:-.85s;animation-delay:-.85s}.dot-fire,.dot-fire:after,.dot-fire:before{width:10px;height:10px;border-radius:5px;background-color:#03ee03;color:#03ee03}.dot-fire:after,.dot-fire:before{content:"";display:inline-block;position:absolute;top:0}.dot-fire:before{-webkit-animation:dot-fire 1.5s linear infinite;animation:dot-fire 1.5s linear infinite;-webkit-animation-delay:-1.85s;animation-delay:-1.85s}.dot-fire:after,.dot-fire:before{box-shadow:9999px 22.5px 0 -5px #03ee03}.dot-fire:after{-webkit-animation:dot-fire 1.5s linear infinite;animation:dot-fire 1.5s linear infinite;-webkit-animation-delay:-2.85s;animation-delay:-2.85s}@-webkit-keyframes dot-fire{1%{box-shadow:9999px 22.5px 0 -5px #03ee03}50%{box-shadow:9999px -5.625px 0 2px #03ee03}to{box-shadow:9999px -22.5px 0 -5px #03ee03}}@keyframes dot-fire{1%{box-shadow:9999px 22.5px 0 -5px #03ee03}50%{box-shadow:9999px -5.625px 0 2px #03ee03}to{box-shadow:9999px -22.5px 0 -5px #03ee03}}.vue-notification-group{padding-top:50px}body .ace_scrollbar{background:#000;transition:opacity .3s ease-in-out;opacity:0}body .ace_editor:hover .ace_scrollbar{opacity:1} \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..69cd5cd770e97d66331c6702b901efe7a9af3b40 GIT binary patch literal 15086 zcmeI330#*|*2n+oOx9G>Hr4y)+vv=chzPFWiXh4&h=?fSmf})snrYeyE`SKK@3@w0 zW~sU4N~L1Xn3kHRrj{j|DJhdW&Zro0-|xB4|M~mp512N~XWsV{pU= zbIv{YoTJ6!WT|Uu-rPdl(DK%^7K^9FVrkgWdjGJ+@-@#Mrj_4E{=#BOqC;c)FvKzh z$aDSojM4o3@6R0gPvbzebLR&@W6&+yxy$o0je}#Rxb%*n>N05h^d`^06ze*!cbsdq zN4(pNCuX=O*ZohRA6oAN?Lh+A3C@GE7-v5ExEHoc`T&fkxqVC|Dou-1SmS<3JVDI0Tx*)D)LK(A^)p z2ZP~idXrJmK3>H&jZyJ#2`a%oUCnG(pc0!e{2{63nUltK zUEmGg1=o-h=njJBURIii-lEravWjmy9hzsT8E!K{lA7V3s%E<9LHh!g)Zz^_tL18y z(t4vx_59#WTAM$`XSCn<)W2#D(at`PLUTMQ1xjGZNl!ygTn0n?3-J0S73caYv`>TH zMEIQn&H2zgAG|JnhxVn={z3X5%YUkV#5e~u zLQasCE)~(vzR+$0Id|y|{euiyaUCOaj;u`4vSRQ%7kQbd5?d^W<`v)_=w7F3M{ZP_ z=MI(L_9Kfo z`3sfPfu|q(N9HiiWk}PhE(1RieKgRI)Y4o6Yx43KZZn5yx1hx>Hatl+TSuh#7 z!B)D(LHjId&w}>Z+SVks6dSq9s;gVAy1EkiSmgvB)5!M2uK0ecGCHEG?LRj3RqUkI)@Xe-WxlH1 zm~@-%b?A@09sSdq40{%v^VPH_Lsdev9BnsbuMr(IA$HurA}!y^?N&nX0hJ$$tcG1w z1-)tj{1blW1bmH+IS%brWj;srHL%#!*_wE7&S5)qsMV&jcaD$Mw&W$v=j2vvwC>41 ze+#R$Oly1Su@*TkhUQZ9{WZ5e4f;hV#WsqK*Y?IyZi3EgowbvD$M;=>{*ap10AJ;P zY{>g!M+Av27O>A0Vz0LtXiba#Gq8zvqe}0%3mGkO{6_VAbTGgBIn7^_e%Y@wJAI~d z{IT`jZrPjL&~CnWA#!FWs*pKfFy_^M)muovMzKMaIw7|2-h8+Lnyz^ptL0HMv zg0SoYM{q}?W?q~Mq27diTPS-CkWcwVyn%VKQGW5A3!)vcW ze=zn&bT;%y`SAtxKkc{%=w-i|&GIV@{mh5I>$Qy*TW3J@548J4+mMV7`!42(oP1+( z|G9^k4VZj(S-&y+mh>I5ZBg&2Ew6_SS@&9KRLGKuD7S^-QE$!<8L_p%Z_KtFpXiS= zy;6>)w_A85#dFIiDISGqQamE5H zHV#{nX#;C6>)ugtGymUC#e5tGg=JT73VfW#WtD19xEaN6;FZ>F9c7gZUGqDHSmq0#cees)ZzMIwevFEw{ z^`D{NwimO058_YlmNSGtM|dCAwodkPJCwnf6#QD-xnj%spl3I|9DI&BD4D~YU^z?5 z*c*djmGw>Y}K~`mY+cgK%+wMM*+2P<#y`TBw_Y2S1$F%QO z-G8vB|0C$P`PIl?J^b&j;)4rB24(&N(I>9aHA$;0BiLK_SZ2!-G zjQ2uUqT{=eyTQnJrA_y5(JwxSuVa75`yEp{Iu%X|Sh8h8H?`^I?&{q!J=D5UJ(+{( zb)PFMhek-)xyC3p3mjRbs0gl^c8l8u0^f(O`dF!Sex*FJj$VBjewT-NIL? zq>n(x;U8S+8o+mgP@0ByYoH4}zig%l;GP>-j&95zjE}QMNr-SDyR+@!& znWs7LwOrfw3;QwVbyfOh4t@&TWX|CV@>C=J>;V(-am&RYm-v?Kaq&&#RH8>7X9|3x zTQr#0)6H)>w)FJ^mx0L63Gf4uac6;xV}HkcXpRAY2iHt6hZ~z;4nD|U_dCb_oPoVK zPktlu6xolHS}bP`=CTH+lz6qFme4Oh))JFTAJ}(F_b;8DZVW;=YIZV#+;zP)}0)JHdMiOt7 zxM{lgHuz?e%*A70ulpM&yU6Z5(L;_kWA%}97CoUy>y!a{FN7rj`So^)1UI%o1Le?b5|D@0_WBb=1$M)cs`JADIv>w?AL7R`>=_=eiQ4L*CFJ^u&U_r-THWlCb``Jp8#v%^cP z_`G*YgV_%np0d(1indzZ!t7_?((f_wDX^zs{HSaocG>><0(4?1b2+BZ8l08zrLQuN zxH%D*{vp~;n)u#tz#l;fsL_u$`$|inUx4l)6}%5F0 zyO5zi$k1)=y#4p?AoCHpfd2sxfGYd*-M;_l{y%fzr*J^&KZ~V$TgfAN z9#>bll@?2^+~2TR8c17gu{m z*Y~u=^1PmXi@D>zs4nWETYl$J5!bqvY=GRGt+%CaoZQD2dl%WY#d0t2wQJ+#-n-a4 zPQLGb+1sL9RVnR_2C7`>q`e_+`66Zv{cuIkt1^}ua;dzTp|m^7EuE!h_(!@`MVe1= zQHJQIhE|-ShQJ5d>a-r_=Ks-Ow6mAfWM|)hi+!8y>{Tb)*}FdV7C~S#H5PNo$t|Z2 zX9>C5baI6+kSApGc zn~rdP8cy8tuJ<&dletp=)MYpGu9Uivn8w}sw$u+1ch|9Ba{AA5F=weISk8CX z>b#m!yCHQa)DTEM(uke!;9PS@=M>hn9dkTM&Xn&7hU)L?dM~}!)H6^=V$@5SIR~jX z;(WweRp+5?br-~rC5LOo?Theb8s3f%#HgMkZ@)|AN#fH|J0W#9My-O>C|K8=JUMYW z=Dv`#{oDF{oNDF_bPk+(OTCJGJD^J3`VGzvHJ-Od*SFM}-eg3QQBOq<-ffl@)K?*6 zQX?kyKa#JQ*(_Jb6K1uNS|!$7*D6VVfio88_8MdUM!i58{?N#pc)*&sqBiYZg3d$D z=Nt2M%thiZlG~ZtjQXzDb5)vmA+gj?RZh?el^aA}Bv5KwB>#0#=fLFKwptf!zC_3F zZu!RI=QnVqfqYEbbn2WEo6m!%l1pBxc`G$4Ni9~W)OMRyUXRoG*Va6^jz35Y;v(^^ z61~R4^J;u2KU+iIY`p#Vk*6nE`-3`0NnJ^*$NQS6MxI!5Pg_)0*Ta14FT_|&uLELX zrKNlul>Q|@q~vOD;F&UHy&}_#oKa^ZPa@~ATH^h3Ua;jU5}M_9q_*WME#KN~&4uno zmIZr6rZ3O#vH#?3&K}LE(l9oQ4pB3J-hS5Lm3^{o=R)8 z{Y+|`ZP&B?j^8d`58W49m^`3nFG}K^Qj3+|evi(T=sJ#0)I*R%%IJ7JZPl;=Lst$B zuUIiCqH z{^s{nT5p;PwEf8PA!jAIJ?w@R2h!Sq|MdFNA%l%vScH0$oNAt5pYm9@fmfzC8H*i` z#UA7$C(F>qjXKvRaRx05p|zmn?N+LaP-gsrTt__96D(jeOLp#SuZ5r?>=QlOt7Z(~+eaUSrP|_>cLv!0*NL z`CY~x&FZ)?Dx&2fzROB}XJ9D@7jf$-%UAm85ts>NCO?h{}s_z>*e zG9mDN@+m$hjmTXC^2UFX{ZMSU&Yd)yMa=$FGv+P1gF$A0v*lTRa0p0DQ|y!QA=v!g zzU903fL{sTo8)`%_Gl071GCRJBEGdrY?s7+#imHiS8DI1{>xgAw1@XTVgEk!n&+dz z*FbUwLT8O@VD^_bC*)ck*7ix(ZYXkeSaeA2PG-l0_#->mpCu>%E_OxN1+ zC3YgQ$r|;~q=Vmo19k$D6$57c)EaM;oUha#XuH<^Y#}knJBpL@K2MMU{>%KHW6N*8 zK;qc)ZT92~vaUD9&f*Vzf-bL+xEnUGl34U+cw^Hy$9L6q&$}d^BymAbt=0c{F0sr= zAhAn{MIQqqGeXa5bUF%oD8jBq^Zgp-t@>N5KH)tNf+s<(@l}44*jYmm0baBs96or! zgU50MPXAlZhgB*6zjJ5A5BRs-TdAUYgcO{JG+1JZK6n#TX>gfvOtFD_MMO$K-6Hz!7Y>s?XB4_#H3hkmHEG^nVw@R2&U zPs)WHiXH|Hfh|sP$5C91Wzw^a1ljjXEz~^M?IKZ_l7VHvdOnz}eFSAN`E@=~A04=g@>^sVb?} zQv7D>Hu2%I@L47IWcVE=64!1bWAW8~$@oPxn;U0Fp*6L`2KFUl}@;>_7s$qlH;LBFz`1U(7v&DE~7qiPbb5v&e zd~W!xhAp|u_&{O_eKWld-O%;Cfu}d;1swnF#+QP#=LCn8;RpYa>^bpbM*Ea6(%Ws@ z$UH7cy^fUz@n!nvbot5`Tl81#()U2y_N}i3JTk9G(Bh?i!zText Drop
\ No newline at end of file diff --git a/js/app.4fa353fc.js b/js/app.4fa353fc.js new file mode 100644 index 0000000..54f549a --- /dev/null +++ b/js/app.4fa353fc.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var o,a,c=t[0],s=t[1],u=t[2],p=0,l=[];p\n
\n \n
\n
\n \n \n
\n
\n
\n
\n\n\n\n\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('notifications',{attrs:{\"position\":\"top center\"}}),(_vm.ro === true)?_c('div',{staticClass:\"topbutton\",on:{\"click\":function($event){return _vm.copyToClipboard(_vm.content)}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"clone\"}})],1):_vm._e(),(_vm.ro !== true)?_c('div',{staticClass:\"topbutton\",on:{\"click\":function($event){return _vm.upload()}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"cloud-upload-alt\"}})],1):_vm._e(),_c('editor',{staticClass:\"editor\",attrs:{\"lang\":\"text\",\"theme\":\"gob\",\"height\":_vm.windowHeight,\"width\":_vm.windowWidth},on:{\"init\":_vm.editorInit},model:{value:(_vm.content),callback:function ($$v) {_vm.content=$$v},expression:\"content\"}}),_c('font-awesome-icon',{staticClass:\"bottomicon\",attrs:{\"icon\":['fab', 'github']},on:{\"click\":_vm.githublink}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showspinner === true),expression:\"showspinner === true\"}],staticClass:\"uploading\"},[_c('div',{staticClass:\"dot-fire\"})])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=367152b2&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport Notifications from 'vue-notification'\nimport App from './App.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faClone,faCloudUploadAlt } from '@fortawesome/free-solid-svg-icons'\nimport { faGithub } from '@fortawesome/free-brands-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'\nlibrary.add(faClone,faCloudUploadAlt,faGithub)\nVue.component('font-awesome-icon', FontAwesomeIcon)\n\nVue.config.productionTip = false\nVue.use(Notifications)\n\nnew Vue({\n render: h => h(App),\n}).$mount('#app')\n"],"sourceRoot":""} \ No newline at end of file diff --git a/js/chunk-vendors.08351f9e.js b/js/chunk-vendors.08351f9e.js new file mode 100644 index 0000000..42c4710 --- /dev/null +++ b/js/chunk-vendors.08351f9e.js @@ -0,0 +1,26 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-vendors"],{"00ee":function(e,t,n){var i=n("b622"),r=i("toStringTag"),s={};s[r]="z",e.exports="[object z]"===String(s)},"0111":function(e,t,n){"use strict";t.Diagnose=n("8e99"),t.Decoder=n("8431"),t.Encoder=n("2dc7"),t.Simple=n("5076"),t.Tagged=n("22b4"),t.decodeAll=t.Decoder.decodeAll,t.decodeFirst=t.Decoder.decodeFirst,t.diagnose=t.Diagnose.diagnose,t.encode=t.Encoder.encode,t.decode=t.Decoder.decode,t.leveldb={decode:t.Decoder.decodeAll,encode:t.Encoder.encode,buffer:!0,name:"cbor"}},"0150":function(e,t,n){"use strict";e.exports=e=>({net:n("ac7f")(e),sys:n("e7c7")(e),cmds:n("4f82")(e)})},"0366":function(e,t,n){var i=n("1c0b");e.exports=function(e,t,n){if(i(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,r){return e.call(t,n,i,r)}}return function(){return e.apply(t,arguments)}}},"05a4":function(e,t,n){"use strict";e.exports=e=>({publish:n("ec71")(e),resolve:n("a41e")(e),pubsub:n("fa9f")(e)})},"05e5":function(e,t){function n(e,t){this.value=e,this.next=t}e.exports=n,n.prototype.contains=function(e){var t=this;while(t){if(t.value===e)return!0;t=t.next}return!1}},"061c":function(e,t,n){(function(){var e="ace",t=function(){return this}();if(t||"undefined"==typeof window||(t=window),e||"undefined"===typeof acequirejs){var n=function(e,t,i){"string"===typeof e?(2==arguments.length&&(i=t),n.modules[e]||(n.payloads[e]=i,n.modules[e]=null)):n.original?n.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace())};n.modules={},n.payloads={};var i=function(e,t,n){if("string"===typeof t){var i=o(e,t);if(void 0!=i)return n&&n(),i}else if("[object Array]"===Object.prototype.toString.call(t)){for(var s=[],a=0,c=t.length;a1&&a(c,"")>-1&&(n=RegExp(this.source,i.replace.call(o(this),"g","")),i.replace.call(e.slice(c.index),n,(function(){for(var e=1;ec.index&&this.lastIndex--}return c},s||(RegExp.prototype.test=function(e){var t=i.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))})),ace.define("ace/lib/es5-shim",["require","exports","module"],(function(e,t,n){function i(){}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError("Function.prototype.bind called on incompatible "+t);var n=f.call(arguments,1),r=function(){if(this instanceof r){var i=t.apply(this,n.concat(f.call(arguments)));return Object(i)===i?i:this}return t.apply(e,n.concat(f.call(arguments)))};return t.prototype&&(i.prototype=t.prototype,r.prototype=new i,i.prototype=null),r});var r,s,o,a,c,l=Function.prototype.call,u=Array.prototype,h=Object.prototype,f=u.slice,d=l.bind(h.toString),p=l.bind(h.hasOwnProperty);if((c=p(h,"__defineGetter__"))&&(r=l.bind(h.__defineGetter__),s=l.bind(h.__defineSetter__),o=l.bind(h.__lookupGetter__),a=l.bind(h.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t,n=[];if(n.splice.apply(n,e(20)),n.splice.apply(n,e(26)),t=n.length,n.splice(5,0,"XXX"),n.length,t+1==n.length)return!0}()){var g=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?g.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(f.call(arguments,2))):[]}}else Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):void 0==e?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=l;h--;)this[c+h]=this[a+h];if(s&&e===u)this.length=u,this.push.apply(this,r);else for(this.length=u+s,h=0;h>>0;if("[object Function]"!=d(e))throw new TypeError;while(++r>>0,r=Array(i),s=arguments[1];if("[object Function]"!=d(e))throw new TypeError(e+" is not a function");for(var o=0;o>>0,s=[],o=arguments[1];if("[object Function]"!=d(e))throw new TypeError(e+" is not a function");for(var a=0;a>>0,r=arguments[1];if("[object Function]"!=d(e))throw new TypeError(e+" is not a function");for(var s=0;s>>0,r=arguments[1];if("[object Function]"!=d(e))throw new TypeError(e+" is not a function");for(var s=0;s>>0;if("[object Function]"!=d(e))throw new TypeError(e+" is not a function");if(!i&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var r,s=0;if(arguments.length>=2)r=arguments[1];else do{if(s in n){r=n[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(1);for(;s>>0;if("[object Function]"!=d(e))throw new TypeError(e+" is not a function");if(!i&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var r,s=i-1;if(arguments.length>=2)r=arguments[1];else do{if(s in n){r=n[s--];break}if(--s<0)throw new TypeError("reduceRight of empty array with no initial value")}while(1);do{s in this&&(r=e.call(void 0,r,n[s],s,t))}while(s--);return r}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(e){var t=b&&"[object String]"==d(this)?this.split(""):O(this),n=t.length>>>0;if(!n)return-1;var i=0;for(arguments.length>1&&(i=R(arguments[1])),i=i>=0?i:Math.max(0,n+i);i>>0;if(!n)return-1;var i=n-1;for(arguments.length>1&&(i=Math.min(i,R(arguments[1]))),i=i>=0?i:n-Math.abs(i);i>=0;i--)if(i in t&&e===t[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:h)}),!Object.getOwnPropertyDescriptor){var w="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(w+e);if(p(e,t)){var n;if(n={enumerable:!0,configurable:!0},c){var i=e.__proto__;e.__proto__=h;var r=o(e,t),s=a(e,t);if(e.__proto__=i,r||s)return r&&(n.get=r),s&&(n.set=s),n}return n.value=e[t],n}}}(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),Object.create)||(m=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var n;if(null===e)n=m();else{if("object"!=typeof e)throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var i=function(){};i.prototype=e,n=new i,n.__proto__=e}return void 0!==t&&Object.defineProperties(n,t),n});function y(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}if(Object.defineProperty){var A=y({}),E="undefined"==typeof document||y(document.createElement("div"));if(!A||!E)var C=Object.defineProperty}if(!Object.defineProperty||C){var F="Property description must be an object: ",k="Object.defineProperty called on non-object: ",S="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(e,t,n){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(k+e);if("object"!=typeof n&&"function"!=typeof n||null===n)throw new TypeError(F+n);if(C)try{return C.call(Object,e,t,n)}catch(l){}if(p(n,"value"))if(c&&(o(e,t)||a(e,t))){var i=e.__proto__;e.__proto__=h,delete e[t],e[t]=n.value,e.__proto__=i}else e[t]=n.value;else{if(!c)throw new TypeError(S);p(n,"get")&&r(e,t,n.get),p(n,"set")&&s(e,t,n.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var n in t)p(t,n)&&Object.defineProperty(e,n,t[n]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze((function(){}))}catch(M){Object.freeze=function(e){return function(t){return"function"==typeof t?t:e(t)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;var t="";while(p(e,t))t+="?";e[t]=!0;var n=p(e,t);return delete e[t],n}),!Object.keys){var x=!0,_=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],B=_.length;for(var $ in{toString:null})x=!1;Object.keys=function(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var t=[];for(var n in e)p(e,n)&&t.push(n);if(x)for(var i=0,r=B;i0||-1)*Math.floor(Math.abs(e))),e}var O=function(e){if(null==e)throw new TypeError("can't convert "+e+" to object");return Object(e)}})),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],(function(e,t,n){"use strict";e("./regexp"),e("./es5-shim")})),ace.define("ace/lib/dom",["require","exports","module"],(function(e,t,n){"use strict";var i="http://www.w3.org/1999/xhtml";t.getDocumentHead=function(e){return e||(e=document),e.head||e.getElementsByTagName("head")[0]||e.documentElement},t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||i,e):document.createElement(e)},t.hasCssClass=function(e,t){var n=(e.className+"").split(/\s+/g);return-1!==n.indexOf(t)},t.addCssClass=function(e,n){t.hasCssClass(e,n)||(e.className+=" "+n)},t.removeCssClass=function(e,t){var n=e.className.split(/\s+/g);while(1){var i=n.indexOf(t);if(-1==i)break;n.splice(i,1)}e.className=n.join(" ")},t.toggleCssClass=function(e,t){var n=e.className.split(/\s+/g),i=!0;while(1){var r=n.indexOf(t);if(-1==r)break;i=!1,n.splice(r,1)}return i&&n.push(t),e.className=n.join(" "),i},t.setCssClass=function(e,n,i){i?t.addCssClass(e,n):t.removeCssClass(e,n)},t.hasCssString=function(e,t){var n,i=0;if(t=t||document,t.createStyleSheet&&(n=t.styleSheets)){while(i=0?parseFloat((r.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((r.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,t.isOldGecko=t.isGecko&&parseInt((r.match(/rv:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(r.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(r.split(" Chrome/")[1])||void 0,t.isAIR=r.indexOf("AdobeAIR")>=0,t.isIPad=r.indexOf("iPad")>=0,t.isChromeOS=r.indexOf(" CrOS ")>=0,t.isIOS=/iPad|iPhone|iPod/.test(r)&&!window.MSStream,t.isIOS&&(t.isMac=!0)}})),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("./keys"),r=e("./useragent"),s=null,o=0;t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var i=function(){n.call(e,window.event)};n._wrapper=i,e.attachEvent("on"+t,i)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return"dblclick"==e.type?0:"contextmenu"==e.type||r.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,i){function r(e){n&&n(e),i&&i(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",r,!0),t.removeListener(document,"dragstart",r,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",r,!0),t.addListener(document,"dragstart",r,!0),r},t.addTouchMoveListener=function(e,n){var i,r;t.addListener(e,"touchstart",(function(e){var t=e.touches,n=t[0];i=n.clientX,r=n.clientY})),t.addListener(e,"touchmove",(function(e){var t=e.touches;if(!(t.length>1)){var s=t[0];e.wheelX=i-s.clientX,e.wheelY=r-s.clientY,i=s.clientX,r=s.clientY,n(e)}}))},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",(function(e){var t=8;void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),n(e)})):"onwheel"in e?t.addListener(e,"wheel",(function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=5*(e.deltaX||0),e.wheelY=5*(e.deltaY||0);break}n(e)})):t.addListener(e,"DOMMouseScroll",(function(e){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)),n(e)}))},t.addMultiMouseDownListener=function(e,n,i,s){var o,a,c,l=0,u={2:"dblclick",3:"tripleclick",4:"quadclick"};function h(e){if(0!==t.getButton(e)?l=0:e.detail>1?(l++,l>4&&(l=1)):l=1,r.isIE){var h=Math.abs(e.clientX-o)>5||Math.abs(e.clientY-a)>5;c&&!h||(l=1),c&&clearTimeout(c),c=setTimeout((function(){c=null}),n[l-1]||600),1==l&&(o=e.clientX,a=e.clientY)}if(e._clicks=l,i[s]("mousedown",e),l>4)l=0;else if(l>1)return i[s](u[l],e)}function f(e){l=2,c&&clearTimeout(c),c=setTimeout((function(){c=null}),n[l-1]||600),i[s]("mousedown",e),i[s](u[l],e)}Array.isArray(e)||(e=[e]),e.forEach((function(e){t.addListener(e,"mousedown",h),r.isOldIE&&t.addListener(e,"dblclick",f)}))};var a=r.isMac&&r.isOpera&&!("KeyboardEvent"in window)?function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)}:function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)};function c(e,t,n){var c=a(t);if(!r.isMac&&s){if(t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(c|=8),s.altGr){if(3==(3&c))return;s.altGr=0}if(18===n||17===n){var l="location"in t?t.location:t.keyLocation;if(17===n&&1===l)1==s[n]&&(o=t.timeStamp);else if(18===n&&3===c&&2===l){var u=t.timeStamp-o;u<50&&(s.altGr=!0)}}}if(n in i.MODIFIER_KEYS&&(n=-1),8&c&&n>=91&&n<=93&&(n=-1),!c&&13===n){l="location"in t?t.location:t.keyLocation;if(3===l&&(e(t,c,-n),t.defaultPrevented))return}if(r.isChromeOS&&8&c){if(e(t,c,n),t.defaultPrevented)return;c&=-9}return!!(c||n in i.FUNCTION_KEYS||n in i.PRINTABLE_KEYS)&&e(t,c,n)}function l(){s=Object.create(null)}if(t.getModifierString=function(e){return i.KEY_MODS[a(e)]},t.addCommandKeyListener=function(e,n){var i=t.addListener;if(r.isOldGecko||r.isOpera&&!("KeyboardEvent"in window)){var o=null;i(e,"keydown",(function(e){o=e.keyCode})),i(e,"keypress",(function(e){return c(n,e,o)}))}else{var a=null;i(e,"keydown",(function(e){s[e.keyCode]=(s[e.keyCode]||0)+1;var t=c(n,e,e.keyCode);return a=e.defaultPrevented,t})),i(e,"keypress",(function(e){a&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),a=null)})),i(e,"keyup",(function(e){s[e.keyCode]=null})),s||(l(),i(window,"focus",l))}},"object"==typeof window&&window.postMessage&&!r.isOldIE){var u=1;t.nextTick=function(e,n){n=n||window;var i="zero-timeout-message-"+u;t.addListener(n,"message",(function r(s){s.data==i&&(t.stopPropagation(s),t.removeListener(n,"message",r),e())})),n.postMessage(i,"*")}}t.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}})),ace.define("ace/lib/lang",["require","exports","module"],(function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0)1&t&&(n+=e),(t>>=1)&&(e+=e);return n};var i=/^\s\s*/,r=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(i,"")},t.stringTrimRight=function(e){return e.replace(r,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){for(var t=[],n=0,i=e.length;nh.length?e=e.substr(9):e.substr(0,4)==h.substr(0,4)?e=e.substr(4,e.length-h.length+1):e.charAt(e.length-1)==h.charAt(0)&&(e=e.slice(0,-1)),e==h.charAt(0)||e.charAt(e.length-1)==h.charAt(0)&&(e=e.slice(0,-1)),e&&t.onTextInput(e)),f&&(f=!1),S&&(S=!1))},_=function(e){if(!g){var t=n.value;x(t),E()}},B=function(e,t,n){var i=e.clipboardData||window.clipboardData;if(i&&!l){var r=u||n?"Text":"text/plain";try{return t?!1!==i.setData(r,t):i.getData(r)}catch(e){if(!n)return B(e,t,!0)}}},$=function(e,s){var o=t.getCopyText();if(!o)return i.preventDefault(e);B(e,o)?(r.isIOS&&(d=s,n.value="\n aa"+o+"a a\n",n.setSelectionRange(4,4+o.length),f={value:o}),s?t.onCut():t.onCopy(),r.isIOS||i.preventDefault(e)):(f=!0,n.value=o,n.select(),setTimeout((function(){f=!1,E(),A(),s?t.onCut():t.onCopy()})))},D=function(e){$(e,!0)},L=function(e){$(e,!1)},T=function(e){var s=B(e);"string"==typeof s?(s&&t.onPaste(s,e),r.isIE&&setTimeout(A),i.preventDefault(e)):(n.value="",p=!0)};i.addCommandKeyListener(n,t.onCommandKey.bind(t)),i.addListener(n,"select",F),i.addListener(n,"input",_),i.addListener(n,"cut",D),i.addListener(n,"copy",L),i.addListener(n,"paste",T);var R,O=function(e){g||!t.onCompositionStart||t.$readOnly||(g={},g.canUndo=t.session.$undoManager,t.onCompositionStart(),setTimeout(M,0),t.on("mousedown",I),g.canUndo&&!t.selection.isEmpty()&&(t.insert(""),t.session.markUndoGroup(),t.selection.clearSelection()),t.session.markUndoGroup())},M=function(){if(g&&t.onCompositionUpdate&&!t.$readOnly){var e=n.value.replace(/\x01/g,"");if(g.lastValue!==e&&(t.onCompositionUpdate(e),g.lastValue&&t.undo(),g.canUndo&&(g.lastValue=e),g.lastValue)){var i=t.selection.getRange();t.insert(g.lastValue),t.session.markUndoGroup(),g.range=t.selection.getRange(),t.selection.setRange(i),t.selection.clearSelection()}}},I=function(e){if(t.onCompositionEnd&&!t.$readOnly){var i=g;g=!1;var s=setTimeout((function(){s=null;var e=n.value.replace(/\x01/g,"");g||(e==i.lastValue?E():!i.lastValue&&e&&(E(),x(e)))}));k=function(e){return s&&clearTimeout(s),e=e.replace(/\x01/g,""),e==i.lastValue?"":(i.lastValue&&s&&t.undo(),e)},t.onCompositionEnd(),t.removeListener("mousedown",I),"compositionend"==e.type&&i.range&&t.selection.setRange(i.range);var o=!!r.isChrome&&r.isChrome>=53||!!r.isWebKit&&r.isWebKit>=603;o&&_()}},P=o.delayedCall(M,50);function N(){clearTimeout(R),R=setTimeout((function(){m&&(n.style.cssText=m,m=""),null==t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=!0,t.renderer.$moveTextAreaToCursor())}),0)}i.addListener(n,"compositionstart",O),r.isGecko?i.addListener(n,"text",(function(){P.schedule()})):(i.addListener(n,"keyup",(function(){P.schedule()})),i.addListener(n,"keydown",(function(){P.schedule()}))),i.addListener(n,"compositionend",I),this.getElement=function(){return n},this.setReadOnly=function(e){n.readOnly=e},this.onContextMenu=function(e){S=!0,A(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,o){m||(m=n.style.cssText),n.style.cssText=(o?"z-index:100000;":"")+"height:"+n.style.height+";"+(r.isIE?"opacity:0.1;":"");var a=t.container.getBoundingClientRect(),c=s.computedStyle(t.container),l=a.top+(parseInt(c.borderTopWidth)||0),u=a.left+(parseInt(a.borderLeftWidth)||0),h=a.bottom-l-n.clientHeight-2,f=function(e){n.style.left=e.clientX-u-2+"px",n.style.top=Math.min(e.clientY-l-2,h)+"px"};f(e),"mousedown"==e.type&&(t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout(R),r.isWin&&i.capture(t.container,f,N))},this.onContextMenuClose=N;var j=function(e){t.textInput.onContextMenu(e),N()};if(i.addListener(n,"mouseup",j),i.addListener(n,"mousedown",(function(e){e.preventDefault(),N()})),i.addListener(t.renderer.scroller,"contextmenu",j),i.addListener(n,"contextmenu",j),r.isIOS){var U=null,H=!1;e.addEventListener("keydown",(function(e){U&&clearTimeout(U),H=!0})),e.addEventListener("keyup",(function(e){U=setTimeout((function(){H=!1}),100)}));var z=function(e){if(document.activeElement===n&&!H){if(d)return setTimeout((function(){d=!1}),100);var i=n.selectionStart,r=n.selectionEnd;if(n.setSelectionRange(4,5),i==r)switch(i){case 0:t.onCommandKey(null,0,a.up);break;case 1:t.onCommandKey(null,0,a.home);break;case 2:t.onCommandKey(null,c.option,a.left);break;case 4:t.onCommandKey(null,0,a.left);break;case 5:t.onCommandKey(null,0,a.right);break;case 7:t.onCommandKey(null,c.option,a.right);break;case 8:t.onCommandKey(null,0,a.end);break;case 9:t.onCommandKey(null,0,a.down);break}else{switch(r){case 6:t.onCommandKey(null,c.shift,a.right);break;case 7:t.onCommandKey(null,c.shift|c.option,a.right);break;case 8:t.onCommandKey(null,c.shift,a.end);break;case 9:t.onCommandKey(null,c.shift,a.down);break}switch(i){case 0:t.onCommandKey(null,c.shift,a.up);break;case 1:t.onCommandKey(null,c.shift,a.home);break;case 2:t.onCommandKey(null,c.shift|c.option,a.left);break;case 3:t.onCommandKey(null,c.shift,a.left);break}}}};document.addEventListener("selectionchange",z),t.on("destroy",(function(){document.removeEventListener("selectionchange",z)}))}};t.TextInput=h})),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/keyboard/textinput_ios"],(function(e,t,n){"use strict";var i=e("../lib/event"),r=e("../lib/useragent"),s=e("../lib/dom"),o=e("../lib/lang"),a=r.isChrome<18,c=r.isIE,l=e("./textinput_ios").TextInput,u=function(e,t){if(r.isIOS)return l.call(this,e,t);var n=s.createElement("textarea");n.className="ace_text-input",n.setAttribute("wrap","off"),n.setAttribute("autocorrect","off"),n.setAttribute("autocapitalize","off"),n.setAttribute("spellcheck",!1),n.style.opacity="0",e.insertBefore(n,e.firstChild);var u="\u2028\u2028",h=!1,f=!1,d=!1,p="",g=!0;try{var m=document.activeElement===n}catch(N){}i.addListener(n,"blur",(function(e){t.onBlur(e),m=!1})),i.addListener(n,"focus",(function(e){m=!0,t.onFocus(e),w()})),this.focus=function(){if(p)return n.focus();var e=n.style.top;n.style.position="fixed",n.style.top="0px",n.focus(),setTimeout((function(){n.style.position="","0px"==n.style.top&&(n.style.top=e)}),0)},this.blur=function(){n.blur()},this.isFocused=function(){return m};var v=o.delayedCall((function(){m&&w(g)})),b=o.delayedCall((function(){d||(n.value=u,m&&w())}));function w(e){if(!d){if(d=!0,C)var t=0,i=e?0:n.value.length-1;else t=e?2:1,i=2;try{n.setSelectionRange(t,i)}catch(N){}d=!1}}function y(){d||(n.value=u,r.isWebKit&&b.schedule())}r.isWebKit||t.addEventListener("changeSelection",(function(){t.selection.isEmpty()!=g&&(g=!g,v.schedule())})),y(),m&&t.onFocus();var A=function(e){return 0===e.selectionStart&&e.selectionEnd===e.value.length},E=function(e){h?h=!1:A(n)?(t.selectAll(),w()):C&&w(t.selection.isEmpty())},C=null;this.setInputHandler=function(e){C=e},this.getInputHandler=function(){return C};var F=!1,k=function(e){C&&(e=C(e),C=null),f?(w(),e&&t.onPaste(e),f=!1):e==u.charAt(0)?F?t.execCommand("del",{source:"ace"}):t.execCommand("backspace",{source:"ace"}):(e.substring(0,2)==u?e=e.substr(2):e.charAt(0)==u.charAt(0)?e=e.substr(1):e.charAt(e.length-1)==u.charAt(0)&&(e=e.slice(0,-1)),e.charAt(e.length-1)==u.charAt(0)&&(e=e.slice(0,-1)),e&&t.onTextInput(e)),F&&(F=!1)},S=function(e){if(!d){var t=n.value;k(t),y()}},x=function(e,t,n){var i=e.clipboardData||window.clipboardData;if(i&&!a){var r=c||n?"Text":"text/plain";try{return t?!1!==i.setData(r,t):i.getData(r)}catch(e){if(!n)return x(e,t,!0)}}},_=function(e,r){var s=t.getCopyText();if(!s)return i.preventDefault(e);x(e,s)?(r?t.onCut():t.onCopy(),i.preventDefault(e)):(h=!0,n.value=s,n.select(),setTimeout((function(){h=!1,y(),w(),r?t.onCut():t.onCopy()})))},B=function(e){_(e,!0)},$=function(e){_(e,!1)},D=function(e){var s=x(e);"string"==typeof s?(s&&t.onPaste(s,e),r.isIE&&setTimeout(w),i.preventDefault(e)):(n.value="",f=!0)};i.addCommandKeyListener(n,t.onCommandKey.bind(t)),i.addListener(n,"select",E),i.addListener(n,"input",S),i.addListener(n,"cut",B),i.addListener(n,"copy",$),i.addListener(n,"paste",D),"oncut"in n&&"oncopy"in n&&"onpaste"in n||i.addListener(e,"keydown",(function(e){if((!r.isMac||e.metaKey)&&e.ctrlKey)switch(e.keyCode){case 67:$(e);break;case 86:D(e);break;case 88:B(e);break}}));var L,T=function(e){d||!t.onCompositionStart||t.$readOnly||(d={},d.canUndo=t.session.$undoManager,t.onCompositionStart(),setTimeout(R,0),t.on("mousedown",O),d.canUndo&&!t.selection.isEmpty()&&(t.insert(""),t.session.markUndoGroup(),t.selection.clearSelection()),t.session.markUndoGroup())},R=function(){if(d&&t.onCompositionUpdate&&!t.$readOnly){var e=n.value.replace(/\u2028/g,"");if(d.lastValue!==e&&(t.onCompositionUpdate(e),d.lastValue&&t.undo(),d.canUndo&&(d.lastValue=e),d.lastValue)){var i=t.selection.getRange();t.insert(d.lastValue),t.session.markUndoGroup(),d.range=t.selection.getRange(),t.selection.setRange(i),t.selection.clearSelection()}}},O=function(e){if(t.onCompositionEnd&&!t.$readOnly){var i=d;d=!1;var s=setTimeout((function(){s=null;var e=n.value.replace(/\u2028/g,"");d||(e==i.lastValue?y():!i.lastValue&&e&&(y(),k(e)))}));C=function(e){return s&&clearTimeout(s),e=e.replace(/\u2028/g,""),e==i.lastValue?"":(i.lastValue&&s&&t.undo(),e)},t.onCompositionEnd(),t.removeListener("mousedown",O),"compositionend"==e.type&&i.range&&t.selection.setRange(i.range);var o=!!r.isChrome&&r.isChrome>=53||!!r.isWebKit&&r.isWebKit>=603;o&&S()}},M=o.delayedCall(R,50);function I(){clearTimeout(L),L=setTimeout((function(){p&&(n.style.cssText=p,p=""),null==t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=!0,t.renderer.$moveTextAreaToCursor())}),0)}i.addListener(n,"compositionstart",T),r.isGecko?i.addListener(n,"text",(function(){M.schedule()})):(i.addListener(n,"keyup",(function(){M.schedule()})),i.addListener(n,"keydown",(function(){M.schedule()}))),i.addListener(n,"compositionend",O),this.getElement=function(){return n},this.setReadOnly=function(e){n.readOnly=e},this.onContextMenu=function(e){F=!0,w(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,o){p||(p=n.style.cssText),n.style.cssText=(o?"z-index:100000;":"")+"height:"+n.style.height+";"+(r.isIE?"opacity:0.1;":"");var a=t.container.getBoundingClientRect(),c=s.computedStyle(t.container),l=a.top+(parseInt(c.borderTopWidth)||0),u=a.left+(parseInt(a.borderLeftWidth)||0),h=a.bottom-l-n.clientHeight-2,f=function(e){n.style.left=e.clientX-u-2+"px",n.style.top=Math.min(e.clientY-l-2,h)+"px"};f(e),"mousedown"==e.type&&(t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout(L),r.isWin&&i.capture(t.container,f,I))},this.onContextMenuClose=I;var P=function(e){t.textInput.onContextMenu(e),I()};i.addListener(n,"mouseup",P),i.addListener(n,"mousedown",(function(e){e.preventDefault(),I()})),i.addListener(t.renderer.scroller,"contextmenu",P),i.addListener(n,"contextmenu",P)};t.TextInput=u})),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],(function(e,t,n){"use strict";e("../lib/dom"),e("../lib/event");var i=e("../lib/useragent"),r=0,s=250;function o(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),t.setDefaultHandler("touchmove",this.onTouchMove.bind(e));var n=["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"];n.forEach((function(t){e[t]=this[t]}),this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function a(e,t,n,i){return Math.sqrt(Math.pow(n-e,2)+Math.pow(i-t,2))}function c(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else if(e.start.row!=e.end.row-1||e.start.column||e.end.column)n=2*t.row-e.start.row-e.end.row;else var n=t.column-4;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var r=this.editor,s=e.getButton();if(0!==s){var o=r.getSelectionRange(),a=o.isEmpty();return r.$blockScrolling++,(a||1==s)&&r.selection.moveToPosition(n),r.$blockScrolling--,void(2==s&&(r.textInput.onContextMenu(e.domEvent),i.isMozilla||e.preventDefault()))}return this.mousedownEvent.time=Date.now(),!t||r.isFocused()||(r.focus(),!this.$focusTimout||this.$clickSelection||r.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()):(this.setState("focusWait"),void this.captureMouse(e))},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;n.$blockScrolling++,this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select"),n.$blockScrolling--},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);if(t.$blockScrolling++,this.$clickSelection){var i=this.$clickSelection.comparePoint(n);if(-1==i)e=this.$clickSelection.end;else if(1==i)e=this.$clickSelection.start;else{var r=c(this.$clickSelection,n);n=r.cursor,e=r.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,i=n.renderer.screenToTextCoordinates(this.x,this.y),r=n.selection[e](i.row,i.column);if(n.$blockScrolling++,this.$clickSelection){var s=this.$clickSelection.comparePoint(r.start),o=this.$clickSelection.comparePoint(r.end);if(-1==s&&o<=0)t=this.$clickSelection.end,r.end.row==i.row&&r.end.column==i.column||(i=r.start);else if(1==o&&s>=0)t=this.$clickSelection.start,r.start.row==i.row&&r.start.column==i.column||(i=r.end);else if(-1==s&&1==o)i=r.end,t=r.start;else{var a=c(this.$clickSelection,i);i=a.cursor,t=a.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(i),n.$blockScrolling--,n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>r||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,i=n.session,r=i.getBracketRange(t);r?(r.isEmpty()&&(r.start.column--,r.end.column++),this.setState("select")):(r=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=r,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var i=n.getSelectionRange();i.isMultiLine()&&i.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(i.start.row),this.$clickSelection.end=n.selection.getLineRange(i.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var n=this.$lastScroll,i=e.domEvent.timeStamp,r=i-n.t,o=e.wheelX/r,a=e.wheelY/r;r=1&&t.renderer.isScrollableBy(e.wheelX*e.speed,0)&&(l=!0),c<=1&&t.renderer.isScrollableBy(0,e.wheelY*e.speed)&&(l=!0),l)n.allowed=i;else if(i-n.allowedo.session.documentToScreenRow(u.row,u.column))return h()}if(r!=i)if(r=i.text.join("
"),l.setHtml(r),l.show(),o._signal("showGutterTooltip",l),o.on("mousewheel",h),e.$tooltipFollowsMouse)f(n);else{var d=n.domEvent.target,p=d.getBoundingClientRect(),g=l.getElement().style;g.left=p.right+"px",g.top=p.bottom+"px"}}function h(){t&&(t=clearTimeout(t)),r&&(l.hide(),r=null,o._signal("hideGutterTooltip",l),o.removeEventListener("mousewheel",h))}function f(e){l.setPosition(e.x,e.y)}e.editor.setDefaultHandler("guttermousedown",(function(t){if(o.isFocused()&&0==t.getButton()){var n=a.getRegion(t);if("foldWidgets"!=n){var i=t.getDocumentPosition().row,r=o.session.selection;if(t.getShiftKey())r.selectTo(i,0);else{if(2==t.domEvent.detail)return o.selectAll(),t.preventDefault();e.$clickSelection=o.selection.getLineRange(i)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}}})),e.editor.setDefaultHandler("guttermousemove",(function(s){var o=s.domEvent.target||s.domEvent.srcElement;if(i.hasCssClass(o,"ace_fold-widget"))return h();r&&e.$tooltipFollowsMouse&&f(s),n=s,t||(t=setTimeout((function(){t=null,n&&!e.isMousePressed?u():h()}),50))})),s.addListener(o.renderer.$gutter,"mouseout",(function(e){n=null,r&&!t&&(t=setTimeout((function(){t=null,h()}),50))})),o.on("changeSession",h)}function c(e){o.call(this,e)}r.inherits(c,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,i=window.innerHeight||document.documentElement.clientHeight,r=this.getWidth(),s=this.getHeight();e+=15,t+=15,e+r>n&&(e-=e+r-n),t+s>i&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(c.prototype),t.GutterHandler=a})),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("../lib/event"),r=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){i.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){i.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return 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 e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},this.getButton=function(){return i.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=r.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)})),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("../lib/dom"),r=e("../lib/event"),s=e("../lib/useragent"),o=200,a=200,c=5;function l(e){var t=e.editor,n=i.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var l=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];l.forEach((function(t){e[t]=this[t]}),this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var h,f,d,p,g,m,v,b,w,y,A,E=t.container,C=0;function F(e,n){var i=Date.now(),r=!n||e.row!=n.row,s=!n||e.column!=n.column;if(!y||r||s)t.$blockScrolling+=1,t.moveCursorToPosition(e),t.$blockScrolling-=1,y=i,A={x:f,y:d};else{var o=u(A.x,A.y,f,d);o>c?y=null:i-y>=a&&(t.renderer.scrollCursorIntoView(),y=null)}}function k(e,n){var i=Date.now(),r=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,a=t.renderer.scroller.getBoundingClientRect(),c={x:{left:f-a.left,right:a.right-f},y:{top:d-a.top,bottom:a.bottom-d}},l=Math.min(c.x.left,c.x.right),u=Math.min(c.y.top,c.y.bottom),h={row:e.row,column:e.column};l/s<=2&&(h.column+=c.x.left=o&&t.renderer.scrollCursorIntoView(h):w=i:w=null}function S(){var e=m;m=t.renderer.screenToTextCoordinates(f,d),F(m,e),k(m,e)}function x(){g=t.selection.toOrientedRange(),h=t.session.addMarker(g,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(p),S(),p=setInterval(S,20),C=0,r.addListener(document,"mousemove",$)}function _(){clearInterval(p),t.session.removeMarker(h),h=null,t.$blockScrolling+=1,t.selection.fromOrientedRange(g),t.$blockScrolling-=1,t.isFocused()&&!b&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),g=null,m=null,C=0,w=null,y=null,r.removeListener(document,"mousemove",$)}this.onDragStart=function(e){if(this.cancelDrag||!E.draggable){var i=this;return setTimeout((function(){i.startSelect(),i.captureMouse(e)}),0),e.preventDefault()}g=t.getSelectionRange();var r=e.dataTransfer;r.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n.scrollTop=0),r.setDragImage&&r.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),r.clearData(),r.setData("Text",t.session.getTextRange()),b=!0,this.setState("drag")},this.onDragEnd=function(e){if(E.draggable=!1,b=!1,this.setState(null),!t.getReadOnly()){var n=e.dataTransfer.dropEffect;v||"move"!=n||t.session.remove(t.getSelectionRange()),t.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(!t.getReadOnly()&&D(e.dataTransfer))return f=e.clientX,d=e.clientY,h||x(),C++,e.dataTransfer.dropEffect=v=L(e),r.preventDefault(e)},this.onDragOver=function(e){if(!t.getReadOnly()&&D(e.dataTransfer))return f=e.clientX,d=e.clientY,h||(x(),C++),null!==B&&(B=null),e.dataTransfer.dropEffect=v=L(e),r.preventDefault(e)},this.onDragLeave=function(e){if(C--,C<=0&&h)return _(),v=null,r.preventDefault(e)},this.onDrop=function(e){if(m){var n=e.dataTransfer;if(b)switch(v){case"move":g=g.contains(m.row,m.column)?{start:m,end:m}:t.moveText(g,m);break;case"copy":g=t.moveText(g,m,!0);break}else{var i=n.getData("Text");g={start:m,end:t.session.insert(m,i)},t.focus(),v=null}return _(),r.preventDefault(e)}},r.addListener(E,"dragstart",this.onDragStart.bind(e)),r.addListener(E,"dragend",this.onDragEnd.bind(e)),r.addListener(E,"dragenter",this.onDragEnter.bind(e)),r.addListener(E,"dragover",this.onDragOver.bind(e)),r.addListener(E,"dragleave",this.onDragLeave.bind(e)),r.addListener(E,"drop",this.onDrop.bind(e));var B=null;function $(){null==B&&(B=setTimeout((function(){null!=B&&h&&_()}),20))}function D(e){var t=e.types;return!t||Array.prototype.some.call(t,(function(e){return"text/plain"==e||"Text"==e}))}function L(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],i=s.isMac?e.altKey:e.ctrlKey,r="uninitialized";try{r=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return i&&t.indexOf(r)>=0?o="copy":n.indexOf(r)>=0?o="move":t.indexOf(r)>=0&&(o="copy"),o}}function u(e,t,n,i){return Math.sqrt(Math.pow(n-e,2)+Math.pow(i-t,2))}(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var n=s.isWin?"default":"move";e.renderer.setCursorStyle(n),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(s.isIE&&"dragReady"==this.state){var n=u(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if("dragWait"===this.state){n=u(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),i=e.getButton(),r=e.domEvent.detail||1;if(1===r&&0===i&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;if("unselectable"in o&&(o.unselectable="on"),t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var a=t.container;a.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(l.prototype),t.DragdropHandler=l})),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],(function(e,t,n){"use strict";var i=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){4===n.readyState&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=i.getDocumentHead(),r=document.createElement("script");r.src=e,n.appendChild(r),r.onload=r.onreadystatechange=function(e,n){!n&&r.readyState&&"loaded"!=r.readyState&&"complete"!=r.readyState||(r=r.onload=r.onreadystatechange=null,n||t())}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}})),ace.define("ace/lib/event_emitter",["require","exports","module"],(function(e,t,n){"use strict";var i={},r=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};i._emit=i._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],i=this._defaultHandlers[e];if(n.length||i){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=r),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o1&&(r=n[n.length-2]);var o=c[t+"Path"];return null==o?o=c.basePath:"/"==i&&(t=i=""),o&&"/"!=o.slice(-1)&&(o+="/"),o+t+i+r+this.get("suffix")},t.setModuleUrl=function(e,t){return c.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,i){var r,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{r=e(n)}catch(c){}if(r&&!t.$loading[n])return i&&i(r);if(t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(i),!(t.$loading[n].length>1)){var a=function(){e([n],(function(e){t._emit("load.module",{name:n,module:e});var i=t.$loading[n];t.$loading[n]=null,i.forEach((function(t){t&&t(e)}))}))};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a)}},l(!0),t.init=l})),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_handler","ace/config"],(function(e,t,n){"use strict";var i=e("../lib/event"),r=e("../lib/useragent"),s=e("./default_handlers").DefaultHandlers,o=e("./default_gutter_handler").GutterHandler,a=e("./mouse_event").MouseEvent,c=e("./dragdrop_handler").DragdropHandler,l=e("../config"),u=function(e){var t=this;this.editor=e,new s(this),new o(this),new c(this);var n=function(t){var n=!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement());n&&window.focus(),e.focus()},a=e.renderer.getMouseEventTarget();i.addListener(a,"click",this.onMouseEvent.bind(this,"click")),i.addListener(a,"mousemove",this.onMouseMove.bind(this,"mousemove")),i.addMultiMouseDownListener([a,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),i.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),i.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var l=e.renderer.$gutter;i.addListener(l,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),i.addListener(l,"click",this.onMouseEvent.bind(this,"gutterclick")),i.addListener(l,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),i.addListener(l,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),i.addListener(a,"mousedown",n),i.addListener(l,"mousedown",n),r.isIE&&e.renderer.scrollBarV&&(i.addListener(e.renderer.scrollBarV.element,"mousedown",n),i.addListener(e.renderer.scrollBarH.element,"mousedown",n)),e.on("mousemove",(function(n){if(!t.state&&!t.$dragDelay&&t.$dragEnabled){var i=e.renderer.screenToTextCoordinates(n.x,n.y),r=e.session.selection.getRange(),s=e.renderer;!r.isEmpty()&&r.insideStart(i.row,i.column)?s.setCursorStyle("default"):s.setCursorStyle("")}}))};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new a(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;n&&n.length&&this.editor._emit(e,new a(t,this.editor))},this.onMouseWheel=function(e,t){var n=new a(t,this.editor);n.speed=2*this.$scrollSpeed,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.onTouchMove=function(e,t){var n=new a(t,this.editor);n.speed=1,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var s=this,o=function(e){if(e){if(r.isWebKit&&!e.which&&s.releaseMouse)return s.releaseMouse();s.x=e.clientX,s.y=e.clientY,t&&t(e),s.mouseEvent=new a(e,s.editor),s.$mouseMoved=!0}},c=function(e){clearInterval(u),l(),s[s.state+"End"]&&s[s.state+"End"](e),s.state="",null==n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),s.isMousePressed=!1,s.$onCaptureMouseMove=s.releaseMouse=null,e&&s.onMouseEvent("mouseup",e)},l=function(){s[s.state]&&s[s.state](),s.$mouseMoved=!1};if(r.isOldIE&&"dblclick"==e.domEvent.type)return setTimeout((function(){c(e)}));s.$onCaptureMouseMove=o,s.releaseMouse=i.capture(this.editor.container,o,c);var u=setInterval(l,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){t&&t.domEvent&&"contextmenu"!=t.domEvent.type||(this.editor.off("nativecontextmenu",e),t&&t.domEvent&&i.stopEvent(t.domEvent))}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(u.prototype),l.defineOptions(u.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:r.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=u})),ace.define("ace/mouse/fold_handler",["require","exports","module"],(function(e,t,n){"use strict";function i(e){e.on("click",(function(t){var n=t.getDocumentPosition(),i=e.session,r=i.getFoldAt(n.row,n.column,1);r&&(t.getAccelKey()?i.removeFold(r):i.expandFold(r),t.stop())})),e.on("gutterclick",(function(t){var n=e.renderer.$gutterLayer.getRegion(t);if("foldWidgets"==n){var i=t.getDocumentPosition().row,r=e.session;r.foldWidgets&&r.foldWidgets[i]&&e.session.onFoldWidgetClick(i,t),e.isFocused()||e.focus(),t.stop()}})),e.on("gutterdblclick",(function(t){var n=e.renderer.$gutterLayer.getRegion(t);if("foldWidgets"==n){var i=t.getDocumentPosition().row,r=e.session,s=r.getParentFoldRangeData(i,!0),o=s.range||s.firstRange;if(o){i=o.start.row;var a=r.getFoldAt(i,r.getLine(i).length,1);a?r.removeFold(a):(r.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}}))}t.FoldHandler=i})),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],(function(e,t,n){"use strict";var i=e("../lib/keys"),r=e("../lib/event"),s=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]!=e){while(t[t.length-1]&&t[t.length-1]!=this.$defaultHandler)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)}},this.addKeyboardHandler=function(e,t){if(e){"function"!=typeof e||e.handleKeyboard||(e.handleKeyboard=e);var n=this.$handlers.indexOf(e);-1!=n&&this.$handlers.splice(n,1),void 0==t?this.$handlers.push(e):this.$handlers.splice(t,0,e),-1==n&&e.attach&&e.attach(this.$editor)}},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return-1!=t&&(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map((function(n){return n.getStatusText&&n.getStatusText(t,e)||""})).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,n,i){for(var s,o=!1,a=this.$editor.commands,c=this.$handlers.length;c--;)if(s=this.$handlers[c].handleKeyboard(this.$data,e,t,n,i),s&&s.command&&(o="null"==s.command||a.exec(s.command,this.$editor,s.args,i),o&&i&&-1!=e&&1!=s.passEvent&&1!=s.command.passEvent&&r.stopEvent(i),o))break;return o||-1!=e||(s={command:"insertstring"},o=a.exec("insertstring",this.$editor,t)),o&&this.$editor._signal&&this.$editor._signal("keyboardActivity",s),o},this.onCommandKey=function(e,t,n){var r=i.keyCodeToString(n);this.$callKeyboardHandlers(t,r,n,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(s.prototype),t.KeyBinding=s})),ace.define("ace/lib/bidiutil",["require","exports","module"],(function(e,t,n){"use strict";var i=0,r=0,s=!1,o=!1,a=!1,c=[[0,3,0,1,0,0,0],[0,3,0,1,2,2,0],[0,3,0,17,2,0,1],[0,3,5,5,4,1,0],[0,3,21,21,4,0,1],[0,3,5,5,4,2,0]],l=[[2,0,1,1,0,1,0],[2,0,1,1,0,2,0],[2,0,2,1,3,2,0],[2,0,2,33,3,1,1]],u=0,h=1,f=0,d=1,p=2,g=3,m=4,v=5,b=6,w=7,y=8,A=9,E=10,C=11,F=12,k=13,S=14,x=15,_=16,B=17,$=18,D=[$,$,$,$,$,$,$,$,$,b,v,b,y,v,$,$,$,$,$,$,$,$,$,$,$,$,$,$,v,v,v,b,y,m,m,C,C,C,m,m,m,m,m,E,A,E,A,A,p,p,p,p,p,p,p,p,p,p,A,m,m,m,m,m,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,m,m,m,m,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,m,m,m,$,$,$,$,$,$,v,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,A,m,C,C,C,C,m,m,m,m,f,m,m,$,m,m,C,C,p,p,m,f,m,m,m,p,f,m,m,m,m,m],L=[y,y,y,y,y,y,y,y,y,y,y,$,$,$,f,d,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,y,v,k,S,x,_,B,A,C,C,C,C,C,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,A,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,y];function T(e,t,n,u){var h=i?l:c,f=null,d=null,p=null,g=0,m=null,w=null,A=-1,E=null,C=null,F=[];if(!u)for(E=0,u=[];E0)if(16==m){for(E=A;E-1){for(E=A;E=0;k--){if(u[k]!=y)break;t[k]=i}}}function R(e,t,n){if(!(r=e){s=f+1;while(s=e)s++;for(a=f,c=s-1;a=t.length||(c=n[r-1])!=p&&c!=g||(l=t[r+1])!=p&&l!=g?m:(s&&(l=g),l==c?l:m);case E:return c=r>0?n[r-1]:v,c==p&&r+10&&n[r-1]==p)return p;if(s)return m;h=r+1,u=t.length;while(h=1425&&L<=2303||64286==L;if(c=t[h],T&&(c==d||c==w))return d}return r<1||(c=t[r-1])==v?m:n[r-1];case v:return s=!1,o=!0,i;case b:return a=!0,m;case k:case S:case _:case B:case x:s=!1;case $:return m}}function M(e){var t=e.charCodeAt(0),n=t>>8;return 0==n?t>191?f:D[t]:5==n?/[\u0591-\u05f4]/.test(e)?d:f:6==n?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(e)?F:/[\u0660-\u0669\u066b-\u066c]/.test(e)?g:1642==t?C:/[\u06f0-\u06f9]/.test(e)?p:w:32==n&&t<=8287?L[255&t]:254==n&&t>=65136?w:m}t.L=f,t.R=d,t.EN=p,t.ON_R=3,t.AN=4,t.R_H=5,t.B=6,t.DOT="·",t.doBidiReorder=function(e,n,r){if(e.length<2)return{};var s=e.split(""),o=new Array(s.length),a=new Array(s.length),c=[];i=r?h:u,T(s,c,s.length,n);for(var l=0;lw&&n[l]0&&"ل"===s[l-1]&&/\u0622|\u0623|\u0625|\u0627/.test(s[l])&&(c[l-1]=c[l]=t.R_H,l++);s[s.length-1]===t.DOT&&(c[s.length-1]=t.B);for(l=0;l=0&&(e=this.session.$docRowCache[n])}return e},this.getSplitIndex=function(){var e=0,t=this.session.$screenRowCache;if(t.length){var n,i=this.session.$getRowCacheIndex(t,this.currentRow);while(this.currentRow-e>0){if(n=this.session.$getRowCacheIndex(t,this.currentRow-e-1),n!==i)break;i=n,e++}}return e},this.updateRowLine=function(e,t){if(void 0===e&&(e=this.getDocumentRow()),this.wrapIndent=0,this.isLastRow=e===this.session.getLength()-1,this.line=this.session.getLine(e),this.session.$useWrapMode){var n=this.session.$wrapData[e];n&&(void 0===t&&(t=this.getSplitIndex()),t>0&&n.length?(this.wrapIndent=n.indent,this.line=t0?e-1:0,this.bidiMap),n=this.bidiMap.bidiLevels,r=0;0===e&&n[t]%2!==0&&t++;for(var s=0;s=l&&rn+o/2){if(n+=o,r===s.length-1){o=0;break}o=this.charWidths[s[++r]]}return r>0&&s[r-1]%2!==0&&s[r]%2===0?(e0&&s[r-1]%2===0&&s[r]%2!==0?t=1+(e>n?this.bidiMap.logicalFromVisual[r]:this.bidiMap.logicalFromVisual[r-1]):this.isRtlDir&&r===s.length-1&&0===o&&s[r-1]%2===0||!this.isRtlDir&&0===r&&s[r]%2!==0?t=1+this.bidiMap.logicalFromVisual[r]:(r>0&&s[r-1]%2!==0&&0!==o&&r--,t=this.bidiMap.logicalFromVisual[r]),t+this.wrapIndent}}).call(a.prototype),t.BidiHandler=a})),ace.define("ace/range",["require","exports","module"],(function(e,t,n){"use strict";var i=function(e,t){return e.row-t.row||e.column-t.column},r=function(e,t,n,i){this.start={row:e,column:t},this.end={row:n,column:i}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return 0==this.compare(e,t)},this.compareRange=function(e){var t,n=e.end,i=e.start;return t=this.compare(n.row,n.column),1==t?(t=this.compare(i.row,i.column),1==t?2:0==t?1:0):-1==t?-2:(t=this.compare(i.row,i.column),-1==t?-1:1==t?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},this.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return 0==this.compare(e,t)&&(!this.isEnd(e,t)&&!this.isStart(e,t))},this.insideStart=function(e,t){return 0==this.compare(e,t)&&!this.isEnd(e,t)},this.insideEnd=function(e,t){return 0==this.compare(e,t)&&!this.isStart(e,t)},this.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:tthis.end.column?1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var i={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection((function(){this.moveCursorTo(e,t)}))},this.selectToPosition=function(e){this.$moveSelection((function(){this.moveCursorToPosition(e)}))},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},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(e,t){if("undefined"==typeof t){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n,i="number"==typeof e?e:this.lead.row,r=this.session.getFoldLine(i);return r?(i=r.start.row,n=r.end.row):n=i,!0===t?new o(i,0,n,this.session.getLine(n).length):new o(i,0,n+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.wouldMoveIntoSoftTab=function(e,t,n){var i=e.column,r=e.column+t;return n<0&&(i=e.column-t,r=e.column),this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(i,r).split(" ").length-1==t},this.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var n=this.session.getTabSize();this.wouldMoveIntoSoftTab(t,n,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=i)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),i=n.substring(t);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var r=this.session.getFoldAt(e,t,1);if(r)this.moveCursorTo(r.end.row,r.end.column);else{if(this.session.nonTokenRe.exec(i)&&(t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,i=n.substring(t)),t>=n.length)return this.moveCursorTo(e,n.length),this.moveCursorRight(),void(e0&&this.moveCursorWordLeft());this.session.tokenRe.exec(s)&&(n-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(t,n)}},this.$shortWordEndIndex=function(e){var t,n=0,i=/\s/,r=this.session.tokenRe;if(r.lastIndex=0,this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((t=e[n])&&i.test(t))n++;if(n<1){r.lastIndex=0;while((t=e[n])&&!r.test(t))if(r.lastIndex=0,n++,i.test(t)){if(n>2){n--;break}while((t=e[n])&&i.test(t))n++;if(n>2)break}}}return r.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),i=n.substring(t),r=this.session.getFoldAt(e,t,1);if(r)return this.moveCursorTo(r.end.row,r.end.column);if(t==n.length){var s=this.doc.getLength();do{e++,i=this.doc.getLine(e)}while(e0&&/^\s*$/.test(i));n=i.length,/\s+$/.test(i)||(i="")}var s=r.stringReverse(i),o=this.$shortWordEndIndex(s);return this.moveCursorTo(t,n-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n,i=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===t&&(0!==e&&(this.session.$bidiHandler.isBidiRow(i.row,this.lead.row)?(n=this.session.$bidiHandler.getPosLeft(i.column),i.column=Math.round(n/this.session.$bidiHandler.charWidths[0])):n=i.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column);var r=this.session.screenToDocumentPosition(i.row+e,i.column,n);0!==e&&0===t&&r.row===this.lead.row&&r.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[r.row]&&(r.row>0||e>0)&&r.row++,this.moveCursorTo(r.row,r.column+t,0===t)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var i=this.session.getFoldAt(e,t,1);i&&(e=i.start.row,t=i.start.column),this.$keepDesiredColumnOnChange=!0;var r=this.session.getLine(e);/[\uDC00-\uDFFF]/.test(r.charAt(t))&&r.charAt(t-1)&&(this.lead.row==e&&this.lead.column==t+1?t-=1:t+=1),this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var i=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(i.row,i.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var n=this.getCursor();return o.fromPoints(t,n)}catch(i){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map((function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t}));else{e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(void 0==e.start){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(a.prototype),t.Selection=a})),ace.define("ace/tokenizer",["require","exports","module","ace/config"],(function(e,t,n){"use strict";var i=e("./config"),r=2e3,s=function(e){for(var t in this.states=e,this.regExps={},this.matchMappings={},this.states){for(var n=this.states[t],i=[],r=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",a=[],c=0;c1?this.$applyToken:l.token),h>1&&(/\\\d/.test(l.regex)?u=l.regex.replace(/\\([0-9]+)/g,(function(e,t){return"\\"+(parseInt(t,10)+r+1)})):(h=1,u=this.removeCapturingGroups(l.regex)),l.splitRegex||"string"==typeof l.token||a.push(l)),s[r]=c,r+=h,i.push(u),l.onMatch||(l.onMatch=null)}}i.length||(s[0]=0,i.push("$")),a.forEach((function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)}),this),this.regExps[t]=new RegExp("("+i.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){r=0|e},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if("string"===typeof n)return[{type:n,value:e}];for(var i=[],r=0,s=n.length;ru){var v=e.substring(u,m-g.length);f.type==d?f.value+=v:(f.type&&l.push(f),f={type:d,value:v})}for(var b=0;br){h>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});while(u1&&n[0]!==i&&n.unshift("#tmp",i),{tokens:l,state:n.length?n:i}},this.reportError=i.reportError}).call(s.prototype),t.Tokenizer=s})),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],(function(e,t,n){"use strict";var i=e("../lib/lang"),r=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(t)for(var n in e){for(var i=e[n],r=0;r=this.$rowTokens.length){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-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 e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(void 0!==n)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},this.getCurrentTokenRange=function(){var e=this.$rowTokens[this.$tokenIndex],t=this.getCurrentTokenColumn();return new i(this.$row,t,this.$row,t+e.value.length)}}).call(r.prototype),t.TokenIterator=r})),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],(function(e,t,n){"use strict";var i,r=e("../../lib/oop"),s=e("../behaviour").Behaviour,o=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),c=["text","paren.rparen","punctuation.operator"],l=["text","paren.rparen","punctuation.operator","comment"],u={},h={'"':'"',"'":"'"},f=function(e){var t=-1;if(e.multiSelect&&(t=e.selection.index,u.rangeCount!=e.multiSelect.rangeCount&&(u={rangeCount:e.multiSelect.rangeCount})),u[t])return i=u[t];i=u[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},d=function(e,t,n,i){var r=e.end.row-e.start.row;return{text:n+t+i,selection:[0,e.start.column+1,r,e.end.column+(r?0:1)]}},p=function(e){this.add("braces","insertion",(function(t,n,r,s,o){var c=r.getCursorPosition(),l=s.doc.getLine(c.row);if("{"==o){f(r);var u=r.getSelectionRange(),h=s.doc.getTextRange(u);if(""!==h&&"{"!==h&&r.getWrapBehavioursEnabled())return d(u,h,"{","}");if(p.isSaneInsertion(r,s))return/[\]\}\)]/.test(l[c.column])||r.inMultiSelectMode||e&&e.braces?(p.recordAutoInsert(r,s,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(r,s,"{"),{text:"{",selection:[1,1]})}else if("}"==o){f(r);var g=l.substring(c.column,c.column+1);if("}"==g){var m=s.$findOpeningBracket("}",{column:c.column+1,row:c.row});if(null!==m&&p.isAutoInsertedClosing(c,l,o))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if("\n"==o||"\r\n"==o){f(r);var v="";p.isMaybeInsertedClosing(c,l)&&(v=a.stringRepeat("}",i.maybeInsertedBrackets),p.clearMaybeInsertedClosing());g=l.substring(c.column,c.column+1);if("}"===g){var b=s.findMatchingBracket({row:c.row,column:c.column+1},"}");if(!b)return null;var w=this.$getIndent(s.getLine(b.row))}else{if(!v)return void p.clearMaybeInsertedClosing();w=this.$getIndent(l)}var y=w+s.getTabString();return{text:"\n"+y+"\n"+w+v,selection:[1,y.length,1,y.length]}}p.clearMaybeInsertedClosing()}})),this.add("braces","deletion",(function(e,t,n,r,s){var o=r.doc.getTextRange(s);if(!s.isMultiLine()&&"{"==o){f(n);var a=r.doc.getLine(s.start.row),c=a.substring(s.end.column,s.end.column+1);if("}"==c)return s.end.column++,s;i.maybeInsertedBrackets--}})),this.add("parens","insertion",(function(e,t,n,i,r){if("("==r){f(n);var s=n.getSelectionRange(),o=i.doc.getTextRange(s);if(""!==o&&n.getWrapBehavioursEnabled())return d(s,o,"(",")");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,")"),{text:"()",selection:[1,1]}}else if(")"==r){f(n);var a=n.getCursorPosition(),c=i.doc.getLine(a.row),l=c.substring(a.column,a.column+1);if(")"==l){var u=i.$findOpeningBracket(")",{column:a.column+1,row:a.row});if(null!==u&&p.isAutoInsertedClosing(a,c,r))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}})),this.add("parens","deletion",(function(e,t,n,i,r){var s=i.doc.getTextRange(r);if(!r.isMultiLine()&&"("==s){f(n);var o=i.doc.getLine(r.start.row),a=o.substring(r.start.column+1,r.start.column+2);if(")"==a)return r.end.column++,r}})),this.add("brackets","insertion",(function(e,t,n,i,r){if("["==r){f(n);var s=n.getSelectionRange(),o=i.doc.getTextRange(s);if(""!==o&&n.getWrapBehavioursEnabled())return d(s,o,"[","]");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,"]"),{text:"[]",selection:[1,1]}}else if("]"==r){f(n);var a=n.getCursorPosition(),c=i.doc.getLine(a.row),l=c.substring(a.column,a.column+1);if("]"==l){var u=i.$findOpeningBracket("]",{column:a.column+1,row:a.row});if(null!==u&&p.isAutoInsertedClosing(a,c,r))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}})),this.add("brackets","deletion",(function(e,t,n,i,r){var s=i.doc.getTextRange(r);if(!r.isMultiLine()&&"["==s){f(n);var o=i.doc.getLine(r.start.row),a=o.substring(r.start.column+1,r.start.column+2);if("]"==a)return r.end.column++,r}})),this.add("string_dquotes","insertion",(function(e,t,n,i,r){var s=i.$mode.$quotes||h;if(1==r.length&&s[r]){if(this.lineCommentStart&&-1!=this.lineCommentStart.indexOf(r))return;f(n);var o=r,a=n.getSelectionRange(),c=i.doc.getTextRange(a);if(!(""===c||1==c.length&&s[c])&&n.getWrapBehavioursEnabled())return d(a,c,o,o);if(!c){var l=n.getCursorPosition(),u=i.doc.getLine(l.row),p=u.substring(l.column-1,l.column),g=u.substring(l.column,l.column+1),m=i.getTokenAt(l.row,l.column),v=i.getTokenAt(l.row,l.column+1);if("\\"==p&&m&&/escape/.test(m.type))return null;var b,w=m&&/string|escape/.test(m.type),y=!v||/string|escape/.test(v.type);if(g==o)b=w!==y,b&&/string\.end/.test(v.type)&&(b=!1);else{if(w&&!y)return null;if(w&&y)return null;var A=i.$mode.tokenRe;A.lastIndex=0;var E=A.test(p);A.lastIndex=0;var C=A.test(p);if(E||C)return null;if(g&&!/[\s;,.})\]\\]/.test(g))return null;b=!0}return{text:b?o+o:"",selection:[1,1]}}}})),this.add("string_dquotes","deletion",(function(e,t,n,i,r){var s=i.doc.getTextRange(r);if(!r.isMultiLine()&&('"'==s||"'"==s)){f(n);var o=i.doc.getLine(r.start.row),a=o.substring(r.start.column+1,r.start.column+2);if(a==s)return r.end.column++,r}}))};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),i=new o(t,n.row,n.column);if(!this.$matchTokenType(i.getCurrentToken()||"text",c)){var r=new o(t,n.row,n.column+1);if(!this.$matchTokenType(r.getCurrentToken()||"text",c))return!1}return i.stepForward(),i.getCurrentTokenRow()!==n.row||this.$matchTokenType(i.getCurrentToken()||"text",l)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),s=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,s,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=r.row,i.autoInsertedLineEnd=n+s.substr(r.column),i.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),s=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,s)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=r.row,i.maybeInsertedLineStart=s.substr(0,r.column)+n,i.maybeInsertedLineEnd=s.substr(r.column),i.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return i.autoInsertedBrackets>0&&e.row===i.autoInsertedRow&&n===i.autoInsertedLineEnd[0]&&t.substr(e.column)===i.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return i.maybeInsertedBrackets>0&&e.row===i.maybeInsertedRow&&t.substr(e.column)===i.maybeInsertedLineEnd&&t.substr(0,e.column)==i.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},r.inherits(p,s),t.CstyleBehaviour=p})),ace.define("ace/unicode",["require","exports","module"],(function(e,t,n){"use strict";function i(e){var n=/\w{4}/g;for(var i in e)t.packages[i]=e[i].replace(n,"\\u$&")}t.packages={},i({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"})})),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],(function(e,t,n){"use strict";var i=e("../tokenizer").Tokenizer,r=e("./text_highlight_rules").TextHighlightRules,s=e("./behaviour/cstyle").CstyleBehaviour,o=e("../unicode"),a=e("../lib/lang"),c=e("../token_iterator").TokenIterator,l=e("../range").Range,u=function(){this.HighlightRules=r};(function(){this.$defaultBehaviour=new s,this.tokenRe=new RegExp("^["+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules(this.$highlightRuleConfig),this.$tokenizer=new i(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,n,i){var r=t.doc,s=!0,o=!0,c=1/0,l=t.getTabSize(),u=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))g=this.lineCommentStart.map(a.escapeRegExp).join("|"),d=this.lineCommentStart[0];else g=a.escapeRegExp(this.lineCommentStart),d=this.lineCommentStart;g=new RegExp("^(\\s*)(?:"+g+") ?"),u=t.getUseSoftTabs();b=function(e,t){var n=e.match(g);if(n){var i=n[1].length,s=n[0].length;f(e,i,s)||" "!=n[0][s-1]||s--,r.removeInLine(t,i,s)}};var h=d+" ",f=(v=function(e,t){s&&!/\S/.test(e)||(f(e,c,c)?r.insertInLine({row:t,column:c},h):r.insertInLine({row:t,column:c},d))},w=function(e,t){return g.test(e)},function(e,t,n){var i=0;while(t--&&" "==e.charAt(t))i++;if(i%l!=0)return!1;i=0;while(" "==e.charAt(n++))i++;return l>2?i%l!=l-1:i%l==0})}else{if(!this.blockComment)return!1;var d=this.blockComment.start,p=this.blockComment.end,g=new RegExp("^(\\s*)(?:"+a.escapeRegExp(d)+")"),m=new RegExp("(?:"+a.escapeRegExp(p)+")\\s*$"),v=function(e,t){w(e,t)||s&&!/\S/.test(e)||(r.insertInLine({row:t,column:e.length},p),r.insertInLine({row:t,column:c},d))},b=function(e,t){var n;(n=e.match(m))&&r.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(g))&&r.removeInLine(t,n[1].length,n[0].length)},w=function(e,n){if(g.test(e))return!0;for(var i=t.getTokens(n),r=0;re.length&&(A=e.length)})),c==1/0&&(c=A,s=!1,o=!1),u&&c%l!=0&&(c=Math.floor(c/l)*l),y(o?b:v)},this.toggleBlockComment=function(e,t,n,i){var r=this.blockComment;if(r){!r.start&&r[0]&&(r=r[0]);var s,o,a=new c(t,i.row,i.column),u=a.getCurrentToken(),h=(t.selection,t.selection.toOrientedRange());if(u&&/comment/.test(u.type)){var f,d;while(u&&/comment/.test(u.type)){var p=u.value.indexOf(r.start);if(-1!=p){var g=a.getCurrentTokenRow(),m=a.getCurrentTokenColumn()+p;f=new l(g,m,g,m+r.start.length);break}u=a.stepBackward()}a=new c(t,i.row,i.column),u=a.getCurrentToken();while(u&&/comment/.test(u.type)){p=u.value.indexOf(r.end);if(-1!=p){g=a.getCurrentTokenRow(),m=a.getCurrentTokenColumn()+p;d=new l(g,m,g,m+r.end.length);break}u=a.stepForward()}d&&t.remove(d),f&&(t.remove(f),s=f.start.row,o=-r.start.length)}else o=r.start.length,s=n.start.row,t.insert(n.end,r.end),t.insert(n.start,r.start);h.start.row==s&&(h.start.column+=o),h.end.row==s&&(h.end.column+=o),t.selection.fromOrientedRange(h)}},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){for(var t in this.$embeds=[],this.$modes={},e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);var n=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(t=0;tthis.row)){var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)}},this.setPosition=function(e,t,n){var i;if(i=n?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=i.row||this.column!=i.column){var r={row:this.row,column:this.column};this.row=i.row,this.column=i.column,this._signal("change",{old:r,value:i})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)})),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],(function(e,t,n){"use strict";var i=e("./lib/oop"),r=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,a=e("./anchor").Anchor,c=function(e){this.$lines=[""],0===e.length?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){i.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new a(this,e,t)},0==="aaa".split(/a/).length?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){this.$newLineMode!==e&&(this.$newLineMode=e,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return"\r\n"==e||"\r"==e||"\n"==e},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),i=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:i,action:"insert",lines:[t]},!0),this.clonePos(i)},this.clippedPos=function(e,t){var n=this.getLength();void 0===e?e=n:e<0?e=0:e>=n&&(e=n-1,t=void 0);var i=this.getLine(e);return void 0==t&&(t=i.length),t=Math.min(Math.max(t,0),i.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e0,i=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){return e instanceof o||(e=o.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty()?e.start:t==this.getTextRange(e)?e.end:(this.remove(e),n=t?this.insert(e.start,t):e.start,n);var n},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n="insert"==e.action;(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))||(n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),r(this.$lines,e,t),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,i=n.length,r=e.start.row,s=e.start.column,o=0,a=0;do{o=a,a+=t-1;var c=n.slice(o,a);if(a>i){e.lines=c,e.start.row=r+o,e.start.column=s;break}c.push(""),this.applyDelta({start:this.pos(r+o,s),end:this.pos(r+a,s=0),action:e.action,lines:c},!0)}while(1)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:"insert"==e.action?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){for(var n=this.$lines||this.getAllLines(),i=this.getNewLineCharacter().length,r=t||0,s=n.length;r20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,-1==i&&(i=t),s<=i&&n.fireUpdateEvent(s,i)}}};(function(){i.implement(this,r),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||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.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(0===n)this.lines[t]=null;else if("remove"==e.action)this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var i=Array(n+1);i.unshift(t,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],i=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!==i.state+""?(this.states[e]=i.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=i.tokens}}).call(s.prototype),t.BackgroundTokenizer=s})),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],(function(e,t,n){"use strict";var i=e("./lib/lang"),r=(e("./lib/oop"),e("./range").Range),s=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){this.regExp+""!=e+""&&(this.regExp=e,this.cache=[])},this.update=function(e,t,n,s){if(this.regExp)for(var o=s.firstRow,a=s.lastRow,c=o;c<=a;c++){var l=this.cache[c];null==l&&(l=i.getMatchOffsets(n.getLine(c),this.regExp),l.length>this.MAX_RANGES&&(l=l.slice(0,this.MAX_RANGES)),l=l.map((function(e){return new r(c,e.offset,c,e.offset+e.length)})),this.cache[c]=l.length?l:"");for(var u=l.length;u--;)t.drawSingleLineMarker(e,l[u].toScreenRange(n),this.clazz,s)}}}).call(s.prototype),t.SearchHighlight=s})),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=e("../range").Range;function r(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new i(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach((function(e){e.setFoldLine(this)}),this)}(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach((function(t){t.start.row+=e,t.end.row+=e}))},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort((function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)})),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var i,r,s,o=0,a=this.folds,c=!0;null==t&&(t=this.end.row,n=this.end.column);for(var l=0;l0)){var c=r(e,o.start);return 0===a?t&&0!==c?-s-2:s:c>0||0===c&&!t?s:-s-1}}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var i=this.pointIndex(e.end,t,n);return i<0?i=-i-1:i++,this.ranges.splice(n,i-n,e)},this.addList=function(e){for(var t=[],n=e.length;n--;)t.push.apply(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort((function(e,t){return r(e.start,t.start)}));for(var n,i=t[0],s=1;s=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.rowi)break;if(u.start.row==i&&u.start.column>=t.column&&(u.start.column==t.column&&this.$insertRight||(u.start.column+=o,u.start.row+=s)),u.end.row==i&&u.end.column>=t.column){if(u.end.column==t.column&&this.$insertRight)continue;u.end.column==t.column&&o>0&&cu.start.column&&u.end.column==a[c+1].start.column&&(u.end.column-=o),u.end.column+=o,u.end.row+=s}}}if(0!=s&&c=e)return r;if(r.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,i=0;for(t&&(i=n.indexOf(t)),-1==i&&(i=0),i;i=e)return r}return null},this.getFoldedRowCount=function(e,t){for(var n=this.$foldData,i=t-e+1,r=0;r=t){a=e?i-=t-a:i=0);break}o>=e&&(i-=a>=e?o-a:o-e+1)}return i},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort((function(e,t){return e.start.row-t.start.row})),e},this.addFold=function(e,t){var n,i=this.$foldData,o=!1;e instanceof s?n=e:(n=new s(t,e),n.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(n.range);var a=n.start.row,c=n.start.column,l=n.end.row,u=n.end.column;if(!(a0&&(this.removeFolds(d),d.forEach((function(e){n.addSubFold(e)})));for(var p=0;p0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach((function(e){this.expandFold(e)}),this)},this.unfold=function(e,t){var n,r;if(null==e?(n=new i(0,0,this.getLength(),0),t=!0):n="number"==typeof e?new i(e,0,e,this.getLine(e).length):"row"in e?i.fromPoints(e,e):e,r=this.getFoldsInRangeList(n),t)this.removeFolds(r);else{var s=r;while(s.length)this.expandFolds(s),s=this.getFoldsInRangeList(n)}if(r.length)return r},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,i,r){null==i&&(i=e.start.row),null==r&&(r=0),null==t&&(t=e.end.row),null==n&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk((function(e,t,n,a){if(!(tu)break}while(s&&c.test(s.type));s=r.stepBackward()}else s=r.getCurrentToken();return l.end.row=r.getCurrentTokenRow(),l.end.column=r.getCurrentTokenColumn()+s.value.length-2,l}},this.foldAll=function(e,t,n){void 0==n&&(n=1e5);var i=this.foldWidgets;if(i){t=t||this.getLength(),e=e||0;for(var r=e;r=e){r=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(a){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=e){this.$foldStyle=e,"manual"==e&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)}},this.$setFolding=function(e){this.$foldMode!=e&&(this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),e&&"manual"!=this.$foldStyle?(this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)):this.foldWidgets=null)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};var i,r=e-1;while(r>=0){var s=n[r];if(null==s&&(s=n[r]=this.getFoldWidget(r)),"start"==s){var o=this.getFoldWidgetRange(r);if(i||(i=o),o&&o.end.row>=e)break}r--}return{range:-1!==r&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},i=this.$toggleFoldWidget(e,n);if(!i){var r=t.target||t.srcElement;r&&/ace_fold-widget/.test(r.className)&&(r.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var n=this.getFoldWidget(e),i=this.getLine(e),r="end"===n?-1:1,s=this.getFoldAt(e,-1===r?0:i.length,r);if(s)return t.children||t.all?this.removeFold(s):this.expandFold(s),s;var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()&&(s=this.getFoldAt(o.start.row,o.start.column,1),s&&o.isEqual(s.range)))return this.removeFold(s),s;if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var c=a.range.start.row+1,l=a.range.end.row;this.foldAll(c,l,t.all?1e4:0)}else t.children?(l=o?o.end.row:this.getLength(),this.foldAll(e+1,l,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(!n){var i=this.getParentFoldRangeData(t,!0);if(n=i.range||i.firstRange,n){t=n.start.row;var r=this.getFoldAt(t,this.getLine(t).length,1);r?this.removeFold(r):this.addFold("...",n)}}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(0===n)this.foldWidgets[t]=null;else if("remove"==e.action)this.foldWidgets.splice(t,n+1,null);else{var i=Array(n+1);i.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,i)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}t.Folding=a})),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],(function(e,t,n){"use strict";var i=e("../token_iterator").TokenIterator,r=e("../range").Range;function s(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(""==n)return null;var i=n.match(/([\(\[\{])|([\)\]\}])/);return i?i[1]?this.$findClosingBracket(i[1],e):this.$findOpeningBracket(i[2],e):null},this.getBracketRange=function(e){var t,n=this.getLine(e.row),i=!0,s=n.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);if(o||(s=n.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),i=!1),!o)return null;if(o[1]){var a=this.$findClosingBracket(o[1],e);if(!a)return null;t=r.fromPoints(e,a),i||(t.end.column++,t.start.column--),t.cursor=t.end}else{a=this.$findOpeningBracket(o[2],e);if(!a)return null;t=r.fromPoints(a,e),i||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,n){var r=this.$brackets[e],s=1,o=new i(this,t.row,t.column),a=o.getCurrentToken();if(a||(a=o.stepForward()),a){n||(n=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));var c=t.column-o.getCurrentTokenColumn()-2,l=a.value;while(1){while(c>=0){var u=l.charAt(c);if(u==r){if(s-=1,0==s)return{row:o.getCurrentTokenRow(),column:c+o.getCurrentTokenColumn()}}else u==e&&(s+=1);c-=1}do{a=o.stepBackward()}while(a&&!n.test(a.type));if(null==a)break;l=a.value,c=l.length-1}return null}},this.$findClosingBracket=function(e,t,n){var r=this.$brackets[e],s=1,o=new i(this,t.row,t.column),a=o.getCurrentToken();if(a||(a=o.stepForward()),a){n||(n=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));var c=t.column-o.getCurrentTokenColumn();while(1){var l=a.value,u=l.length;while(cn&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,i=e.length-1;while(n<=i){var r=n+i>>1,s=e[r];if(t>s)n=r+1;else{if(!(t=t)break;return n=i[s],n?(n.index=s,n.start=r-n.value.length,n):null},this.setUndoManager=function(e){if(this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=r.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()?r.stringRepeat(" ",this.getTabSize()):"\t"},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.setNavigateWithinSoftTabs=function(e){this.setOption("navigateWithinSoftTabs",e)},this.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(i=!!n.charAt(t-1).match(this.tokenRe)),i||(i=!!n.charAt(t).match(this.tokenRe)),i)var r=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))r=/\s/;else r=this.nonTokenRe;var s=t;if(s>0){do{s--}while(s>=0&&n.charAt(s).match(r));s++}var o=t;while(oe&&(e=t.screenWidth)})),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),n=this.$rowLengthCache,i=0,r=0,s=this.$foldData[r],o=s?s.start.row:1/0,a=t.length,c=0;co){if(c=s.end.row+1,c>=a)break;s=this.$foldData[r++],o=s?s.start.row:1/0}null==n[c]&&(n[c]=this.$getStringScreenWidth(t[c])[0]),n[c]>i&&(i=n[c])}this.screenWidth=i}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var n=null,i=e.length-1;-1!=i;i--){var r=e[i];"doc"==r.group?(this.doc.revertDeltas(r.deltas),n=this.$getUndoSelection(r.deltas,!0,n)):r.deltas.forEach((function(e){this.addFolds(e.folds)}),this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n}},this.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var n=null,i=0;ie.end.column&&(s.start.column+=a),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=a)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}if(s.end=this.insert(s.start,i),r.length){var c=e.start,l=s.start;o=l.row-c.row,a=l.column-c.column;this.addFolds(r.map((function(e){return e=e.clone(),e.start.row==c.row&&(e.start.column+=a),e.end.row==c.row&&(e.end.column+=a),e.start.row+=o,e.end.row+=o,e})))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var i=e;i<=t;i++)this.doc.insertInLine({row:i,column:0},n)},this.outdentRows=function(e){for(var t=e.collapseRows(),n=new u(0,0,0,0),i=this.getTabSize(),r=t.start.row;r<=t.end.row;++r){var s=this.getLine(r);n.start.row=r,n.end.row=r;for(var o=0;o0){i=this.getRowFoldEnd(t+n);if(i>this.doc.getLength()-1)return 0;r=i-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);r=t-e+1}var s=new u(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map((function(e){return e=e.clone(),e.start.row+=r,e.end.row+=r,e})),a=0==n?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+r,a),o.length&&this.addFolds(o),r},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){this.$wrapLimitRange.min===e&&this.$wrapLimitRange.max===t||(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var i=this.$constrainWrapLimit(e,n.min,n.max);return i!=this.$wrapLimit&&i>1&&(this.$wrapLimit=i,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0)},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,i=e.start,r=e.end,s=i.row,o=r.row,a=o-s,c=null;if(this.$updating=!0,0!=a)if("remove"===n){this[t?"$wrapData":"$rowLengthCache"].splice(s,a);var l=this.$foldData;c=this.getFoldsInRange(e),this.removeFolds(c);var u=this.getFoldLine(r.row),h=0;if(u){u.addRemoveChars(r.row,r.column,i.column-r.column),u.shiftRow(-a);var f=this.getFoldLine(s);f&&f!==u&&(f.merge(u),u=f),h=l.indexOf(u)+1}for(h;h=r.row&&u.shiftRow(-a)}o=s}else{var d=Array(a);d.unshift(s,0);var p=t?this.$wrapData:this.$rowLengthCache;p.splice.apply(p,d);l=this.$foldData,u=this.getFoldLine(s),h=0;if(u){var g=u.range.compareInside(i.row,i.column);0==g?(u=u.split(i.row,i.column),u&&(u.shiftRow(a),u.addRemoveChars(o,0,r.column-i.column))):-1==g&&(u.addRemoveChars(s,0,r.column-i.column),u.shiftRow(a)),h=l.indexOf(u)+1}for(h;h=s&&u.shiftRow(a)}}else{a=Math.abs(e.start.column-e.end.column),"remove"===n&&(c=this.getFoldsInRange(e),this.removeFolds(c),a=-a);u=this.getFoldLine(s);u&&u.addRemoveChars(s,i.column,a)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(s,o):this.$updateRowLengthCache(s,o),c},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var i,r,o=this.doc.getAllLines(),a=this.getTabSize(),c=this.$wrapData,l=this.$wrapLimit,u=e;t=Math.min(t,o.length-1);while(u<=t)r=this.getFoldLine(u,r),r?(i=[],r.walk(function(e,t,r,a){var c;if(null!=e){c=this.$getDisplayTokens(e,i.length),c[0]=n;for(var l=1;l=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510)}this.$computeWrapSplits=function(e,i,r){if(0==e.length)return[];var o=[],a=e.length,l=0,u=0,f=this.$wrapAsCode,d=this.$indentedSoftWrap,m=i<=Math.max(2*r,8)||!1===d?0:Math.floor(i/2);function v(){var t=0;if(0===m)return t;if(d)for(var n=0;ni-w){var y=l+i-w;if(e[y-1]>=h&&e[y]>=h)b(y);else if(e[y]!=n&&e[y]!=s){var A=Math.max(y-(i-(i>>2)),l-1);while(y>A&&e[y]A&&e[y]A&&e[y]==c)y--}else while(y>A&&e[y]A?b(++y):(y=l+i,e[y]==t&&y--,b(y-w))}else{for(y;y!=l-1;y--)if(e[y]==n)break;if(y>l){b(y);continue}for(y=l+i,y;y39&&a<48||a>57&&a<64?s.push(c):a>=4352&&m(a)?s.push(e,t):s.push(e)}return s},this.$getStringScreenWidth=function(e,t,n){if(0==t)return[0,0];var i,r;for(null==t&&(t=1/0),n=n||0,r=0;r=4352&&m(i)?n+=2:n+=1,n>t)break;return[n,r]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0){a=l[u],s=this.$docRowCache[u];var f=e>l[h-1]}else f=!h;var d=this.getLength()-1,p=this.getNextFoldLine(s),g=p?p.start.row:1/0;while(a<=e){if(c=this.getRowLength(s),a+c>e||s>=d)break;a+=c,s++,s>g&&(s=p.end.row+1,p=this.getNextFoldLine(s,p),g=p?p.start.row:1/0),f&&(this.$docRowCache.push(s),this.$screenRowCache.push(a))}if(p&&p.start.row<=s)i=this.getFoldDisplayLine(p),s=p.start.row;else{if(a+c<=e||s>d)return{row:d,column:this.getLine(d).length};i=this.getLine(s),p=null}var m=0,v=Math.floor(e-a);if(this.$useWrapMode){var b=this.$wrapData[s];b&&(r=b[v],v>0&&b.length&&(m=b.indent,o=b[v-1]||b[b.length-1],i=i.substring(o)))}return void 0!==n&&this.$bidiHandler.isBidiRow(a+v,s,v)&&(t=this.$bidiHandler.offsetToCol(n)),o+=this.$getStringScreenWidth(i,t-m)[1],this.$useWrapMode&&o>=r&&(o=r-1),p?p.idxToPosition(o):{row:s,column:o}},this.documentToScreenPosition=function(e,t){if("undefined"===typeof t)var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var i=0,r=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,a=0,c=this.$docRowCache,l=this.$getRowCacheIndex(c,e),u=c.length;if(u&&l>=0){a=c[l],i=this.$screenRowCache[l];var h=e>c[u-1]}else h=!u;var f=this.getNextFoldLine(a),d=f?f.start.row:1/0;while(a=d){if(o=f.end.row+1,o>e)break;f=this.getNextFoldLine(o,f),d=f?f.start.row:1/0}else o=a+1;i+=this.getRowLength(a),a=o,h&&(this.$docRowCache.push(a),this.$screenRowCache.push(i))}var p="";f&&a>=d?(p=this.getFoldDisplayLine(f,e,t),r=f.start.row):(p=this.getLine(e).substring(0,t),r=e);var g=0;if(this.$useWrapMode){var m=this.$wrapData[r];if(m){var v=0;while(p.length>=m[v])i++,v++;p=p.substring(m[v-1]||0,p.length),g=v>0?m.indent:0}}return{row:i,column:g+this.$getStringScreenWidth(p)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode){var n=this.$wrapData.length,i=0,r=(a=0,t=this.$foldData[a++],t?t.start.row:1/0);while(ir&&(i=t.end.row+1,t=this.$foldData[a++],r=t?t.start.row:1/0)}}else{e=this.getLength();for(var o=this.$foldData,a=0;an)break;return[i,s]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()},this.isFullWidth=m}.call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),o.defineOptions(p.prototype,"session",{wrap:{set:function(e){if(e&&"off"!=e?"free"==e?e=!0:"printMargin"==e?e=-1:"string"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t="number"==typeof e?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e="auto"==e?"text"!=this.$mode.type:"text"!=e,e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){isNaN(e)||this.$tabSize===e||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=p})),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],(function(e,t,n){"use strict";var i=e("./lib/lang"),r=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};function a(e,t){function n(e){return/\w/.test(e)||t.regExp?"\\b":""}return n(e[0])+e+n(e[e.length-1])}(function(){this.set=function(e){return r.mixin(this.$options,e),this},this.getOptions=function(){return i.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var i=null;return n.forEach((function(e,n,r,o){return i=new s(e,n,r,o),!(n==o&&t.start&&t.start.start&&0!=t.skipCurrent&&i.isEqual(t.start))||(i=null,!1)})),i},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,r=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],a=t.re;if(t.$isMultiLine){var c,l=a.length,u=r.length-l;e:for(var h=a.offset||0;h<=u;h++){for(var f=0;fg||(o.push(c=new s(h,g,h+l-1,m)),l>2&&(h=h+l-2))}}else for(var v=0;vA&&o[f].end.row==n.end.row)f--;for(o=o.slice(v,f+1),v=0,f=o.length;v=a;n--)if(h(n,Number.MAX_VALUE,e))return;if(0!=t.wrap)for(n=c,a=o.row;n>=a;n--)if(h(n,Number.MAX_VALUE,e))return}};else l=function(e){var n=o.row;if(!h(n,o.column,e)){for(n+=1;n<=c;n++)if(h(n,0,e))return;if(0!=t.wrap)for(n=a,c=o.row;n<=c;n++)if(h(n,0,e))return}};if(t.$isMultiLine)var u=n.length,h=function(t,r,s){var o=i?t-u+1:t;if(!(o<0)){var a=e.getLine(o),c=a.search(n[0]);if(!(!i&&cr))return!!s(o,c,o+u-1,h)||void 0}}};else if(i)h=function(t,i,r){var s,o=e.getLine(t),a=[],c=0;n.lastIndex=0;while(s=n.exec(o)){var l=s[0].length;if(c=s.index,!l){if(c>=o.length)break;n.lastIndex=c+=1}if(s.index+l>i)break;a.push(s.index,l)}for(var u=a.length-1;u>=0;u-=2){var h=a[u-1];l=a[u];if(r(t,h,t,h+l))return!0}};else h=function(t,i,r){var s,o=e.getLine(t),a=i;n.lastIndex=i;while(s=n.exec(o)){var c=s[0].length;if(a=s.index,r(t,a,t,a+c))return!0;if(!c&&(n.lastIndex=a+=1,a>=o.length))return!1}};return{forEach:l}}}).call(o.prototype),t.Search=o})),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("../lib/keys"),r=e("../lib/useragent"),s=i.KEY_MODS;function o(e,t){this.platform=t||(r.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function a(e,t){o.call(this,e,t),this.$singleCommand=!1}a.prototype=o.prototype,function(){function e(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||(e.isDefault?-100:0)}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&("string"===typeof e?e:e.name);e=this.commands[n],t||delete this.commands[n];var i=this.commandKeyBinding;for(var r in i){var s=i[r];if(s==e)delete i[r];else if(Array.isArray(s)){var o=s.indexOf(e);-1!=o&&(s.splice(o,1),1==s.length&&(i[r]=s[0]))}}},this.bindKey=function(e,t,n){if("object"==typeof e&&e&&(void 0==n&&(n=e.position),e=e[this.platform]),e)return"function"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split("|").forEach((function(e){var i="";if(-1!=e.indexOf(" ")){var r=e.split(/\s+/);e=r.pop(),r.forEach((function(e){var t=this.parseKeys(e),n=s[t.hashId]+t.key;i+=(i?" ":"")+n,this._addCommandToBinding(i,"chainKeys")}),this),i+=" "}var o=this.parseKeys(e),a=s[o.hashId]+o.key;this._addCommandToBinding(i+a,t,n)}),this)},this._addCommandToBinding=function(t,n,i){var r,s=this.commandKeyBinding;if(n)if(!s[t]||this.$singleCommand)s[t]=n;else{Array.isArray(s[t])?-1!=(r=s[t].indexOf(n))&&s[t].splice(r,1):s[t]=[s[t]],"number"!=typeof i&&(i=e(n));var o=s[t];for(r=0;ri)break}o.splice(r,0,n)}else delete s[t]},this.addCommands=function(e){e&&Object.keys(e).forEach((function(t){var n=e[t];if(n){if("string"===typeof n)return this.bindKey(n,t);"function"===typeof n&&(n={exec:n}),"object"===typeof n&&(n.name||(n.name=t),this.addCommand(n))}}),this)},this.removeCommands=function(e){Object.keys(e).forEach((function(t){this.removeCommand(e[t])}),this)},this.bindKeys=function(e){Object.keys(e).forEach((function(t){this.bindKey(t,e[t])}),this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter((function(e){return e})),n=t.pop(),r=i[n];if(i.FUNCTION_KEYS[r])n=i.FUNCTION_KEYS[r].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(1==t.length&&"shift"==t[0])return{key:n.toUpperCase(),hashId:-1}}for(var s=0,o=t.length;o--;){var a=i.KEY_MODS[t[o]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=a}return{key:n,hashId:s}},this.findKeyCommand=function(e,t){var n=s[e]+t;return this.commandKeyBinding[n]},this.handleKeyboard=function(e,t,n,i){if(!(i<0)){var r=s[t]+n,o=this.commandKeyBinding[r];return e.$keyChain&&(e.$keyChain+=" "+r,o=this.commandKeyBinding[e.$keyChain]||o),!o||"chainKeys"!=o&&"chainKeys"!=o[o.length-1]?(e.$keyChain&&(t&&4!=t||1!=n.length?(-1==t||i>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-r.length-1)),{command:o}):(e.$keyChain=e.$keyChain||r,{command:"null"})}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(o.prototype),t.HashHandler=o,t.MultiHashHandler=a})),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],(function(e,t,n){"use strict";var i=e("../lib/oop"),r=e("../keyboard/hash_handler").MultiHashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){r.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",(function(e){return e.command.exec(e.editor,e.args||{})}))};i.inherits(o,r),function(){i.implement(this,s),this.exec=function(e,t,n){if(Array.isArray(e)){for(var i=e.length;i--;)if(this.exec(e[i],t,n))return!0;return!1}if("string"===typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;if(e.isAvailable&&!e.isAvailable(t))return!1;var r={editor:t,command:e,args:n};return r.returnValue=this._emit("exec",r),this._signal("afterExec",r),!1!==r.returnValue},this.toggleRecording=function(e){if(!this.$inReplay)return e&&e._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(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach((function(t){"string"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])}),this)}finally{this.$inReplay=!1}}},this.trimMacro=function(e){return e.map((function(e){return"string"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e}))}}.call(o.prototype),t.CommandManager=o})),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],(function(e,t,n){"use strict";var i=e("../lib/lang"),r=e("../config"),s=e("../range").Range;function o(e,t){return{win:e,mac:t}}t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){r.loadModule("ace/ext/settings_menu",(function(t){t.init(e),e.showSettingsMenu()}))},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","F4"),exec:function(e){r.loadModule("ace/ext/error_marker",(function(t){t.showErrorMarker(e,1)}))},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Shift-F4"),exec:function(e){r.loadModule("ace/ext/error_marker",(function(t){t.showErrorMarker(e,-1)}))},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:o("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:o("Ctrl-F","Command-F"),exec:function(e){r.loadModule("ace/ext/searchbox",(function(t){t.Search(e)}))},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:o("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:o("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:o("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:o("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:o("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:o("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:o("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:o("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:o("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:o("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:o("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){r.loadModule("ace/ext/searchbox",(function(t){t.Search(e,!0)}))}},{name:"undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:o("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",bindKey:o("Ctrl-Shift-Backspace",null),exec:function(e){var t=e.selection.getRange();t.start.column=0,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",bindKey:o("Ctrl-Shift-Delete",null),exec:function(e){var t=e.selection.getRange();t.end.column=Number.MAX_VALUE,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(i.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:o("Alt-Shift-X","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:o(null,null),exec:function(e){for(var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),r=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,a=e.session.doc.getTextRange(e.selection.getRange()),c=a.replace(/\n\s*/," ").length,l=e.session.doc.getLine(n.row),u=n.row+1;u<=r.row+1;u++){var h=i.stringTrimLeft(i.stringTrimRight(e.session.doc.getLine(u)));0!==h.length&&(h=" "+h),l+=h}r.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+c)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,i=e.selection.rangeList.ranges,r=[];i.length<1&&(i=[e.selection.getRange()]);for(var o=0;o0&&this.$blockScrolling--;var n=t&&t.scrollIntoView;if(n){switch(n){case"center-animate":n="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var i=this.selection.getRange(),r=this.renderer.layerConfig;(i.start.row>=r.lastRow||i.end.row<=r.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:break}"animate"==n&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,n=this.$mergeableCommands,i=t.command&&e.command.name==t.command.name;if("insertstring"==e.command.name){var r=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),i=i&&this.mergeNextCommand&&(!/\s/.test(r)||/\s/.test(t.args)),this.mergeNextCommand=!0}else i=i&&-1!==n.indexOf(e.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(i=!1),i?this.session.mergeUndoDeltas=!0:-1!==n.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(e,t){if(e&&"string"===typeof e){this.$keybindingId=e;var n=this;v.loadModule(["keybinding",e],(function(i){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(i&&i.handler),t&&t()}))}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session!=e){this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.off("changeCursor",this.$onCursorChange),n.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("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.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this}),e&&e.bgTokenizer&&e.bgTokenizer.scheduleStart()}},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||r.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout((function(){e.$highlightPending=!1;var t=e.session;if(t&&t.bgTokenizer){var n=t.findMatchingBracket(e.getCursorPosition());if(n)var i=new d(n.row,n.column,n.row,n.column+1);else if(t.$mode.getMatching)i=t.$mode.getMatching(e.session);i&&(t.$bracketHighlight=t.addMarker(i,"ace_bracket","text"))}}),50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var e=this;this.$highlightTagPending=!0,setTimeout((function(){e.$highlightTagPending=!1;var t=e.session;if(t&&t.bgTokenizer){var n=e.getCursorPosition(),i=new b(e.session,n.row,n.column),r=i.getCurrentToken();if(!r||!/\b(?:tag-open|tag-name)/.test(r.type))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);if(-1==r.type.indexOf("tag-open")||(r=i.stepForward(),r)){var s=r.value,o=0,a=i.stepBackward();if("<"==a.value)do{a=r,r=i.stepForward(),r&&r.value===s&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?o++:"=0);else{do{r=a,a=i.stepBackward(),r&&r.value===s&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?o++:"1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var n=new d(e.row,e.column,e.row,1/0);n.id=t.addMarker(n,"ace_active-line","screenLine"),t.$highlightLineMarker=n}else e&&(t.$highlightLineMarker.start.row=e.row,t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var n=this.selection.getRange(),i=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",i)}var r=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(r),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var n=t.start.column-1,i=t.end.column+1,r=e.getLine(t.start.row),s=r.length,o=r.substring(Math.max(n,0),Math.min(i,s));if(!(n>=0&&/^[\w\d]/.test(o)||i<=s&&/[\w\d]$/.test(o))&&(o=r.substring(t.start.column,t.end.column),/^[\w\d]+$/.test(o))){var a=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return a}}},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.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var n={text:e,event:t};this.commands.exec("paste",this,n)},this.$handlePaste=function(e){"string"==typeof e&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var n=t.split(/\r\n|\r|\n/),i=this.selection.rangeList.ranges;if(n.length>i.length||n.length<2||!n[1])return this.commands.exec("insertstring",this,t);for(var r=i.length;r--;){var s=i[r];s.isEmpty()||this.session.remove(s),this.session.insert(s.start,n[r])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,i=n.getMode(),r=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var s=i.transformAction(n.getState(r.row),"insertion",this,n,e);s&&(e!==s.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=s.text)}if("\t"==e&&(e=this.session.getTabString()),this.selection.isEmpty()){if(this.session.getOverwrite()&&-1==e.indexOf("\n")){o=new d.fromPoints(r,r);o.end.column+=e.length,this.session.remove(o)}}else{var o=this.getSelectionRange();r=this.session.remove(o),this.clearSelection()}if("\n"==e||"\r\n"==e){var a=n.getLine(r.row);if(r.column>a.search(/\S|$/)){var c=a.substr(r.column).search(/\S|$/);n.doc.removeInLine(r.row,r.column,r.column+c)}}this.clearSelection();var l=r.column,u=n.getState(r.row),h=(a=n.getLine(r.row),i.checkOutdent(u,a,e));n.insert(r,e);if(s&&s.selection&&(2==s.selection.length?this.selection.setSelectionRange(new d(r.row,l+s.selection[0],r.row,l+s.selection[1])):this.selection.setSelectionRange(new d(r.row+s.selection[0],s.selection[1],r.row+s.selection[2],s.selection[3]))),n.getDocument().isNewLine(e)){var f=i.getNextLineIndent(u,a.slice(0,r.column),n.getTabString());n.insert({row:r.row+1,column:0},f)}h&&i.autoOutdent(u,n,r.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&("left"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,i=n.getState(t.start.row),r=n.getMode().transformAction(i,"deletion",this,n,t);if(0===t.end.column){var s=n.getTextRange(t);if("\n"==s[s.length-1]){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}r&&(t=r)}this.session.remove(t),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 e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var n,i,r=this.session.getLine(e.row);tt.toLowerCase()?1:0}));var r=new d(0,0,0,0);for(i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var i=this.session.getLine(e);while(n.lastIndex=t){var s={value:r[0],start:r.index,end:r.index+r[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,i=new d(t,n-1,t,n),r=this.session.getTextRange(i);if(!isNaN(parseFloat(r))&&isFinite(r)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,a=s.start+s.value.length-o,c=parseFloat(s.value);c*=Math.pow(10,a),o!==s.end&&nd+1)break;d=p.last}u--,a=this.session.$moveLines(f,d,t?0:e),t&&-1==e&&(h=u+1);while(h<=u)o[h].moveBy(a,0),h++;t||(a=0),c+=a}r.fromOrientedRange(r.ranges[0]),r.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,i=this.renderer.layerConfig,r=e*Math.floor(i.height/i.lineHeight);this.$blockScrolling++,!0===t?this.selection.$moveSelection((function(){this.moveCursorBy(r,0)})):!1===t&&(this.selection.moveCursorBy(r,0),this.selection.clearSelection()),this.$blockScrolling--;var s=n.scrollTop;n.scrollBy(0,r*i.lineHeight),null!=t&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},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(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,i){this.renderer.scrollToLine(e,t,n,i)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.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(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),i=new b(this.session,n.row,n.column),r=i.getCurrentToken(),s=r||i.stepForward();if(s){var o,a,c=!1,l={},u=n.column-s.start,h={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g)){for(;u=0;--s)this.$tryReplace(n[s],e)&&i++;return this.selection.setSelectionRange(r),this.$blockScrolling-=1,i},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),null!==t?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&i.mixin(t,e);var r=this.selection.getRange();null==t.needle&&(e=this.session.getTextRange(r)||this.$search.$options.needle,e||(r=this.session.getWordRange(r.start.row,r.start.column),e=this.session.getTextRange(r)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:r});var s=this.$search.find(this.session);return t.preventScroll?s:s?(this.revealRange(s,n),s):(t.backwards?r.start=r.end:r.end=r.start,void this.selection.setRange(r))},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),!1!==t&&this.renderer.animateScrolling(n)},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._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(e){var t,n=this,i=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var r=this.$scrollAnchor;r.style.cssText="position:absolute",this.container.insertBefore(r,this.container.firstChild);var s=this.on("changeSelection",(function(){i=!0})),o=this.renderer.on("beforeRender",(function(){i&&(t=n.renderer.container.getBoundingClientRect())})),a=this.renderer.on("afterRender",(function(){if(i&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,a=s.top-o.offset;i=s.top>=0&&a+t.top<0||!(s.topwindow.innerHeight)&&null,null!=i&&(r.style.top=a+"px",r.style.left=s.left+"px",r.style.height=o.lineHeight+"px",r.scrollIntoView(i)),i=t=null}}));this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",s),this.renderer.off("afterRender",a),this.renderer.off("beforeRender",o))}}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&"wide"!=e,r.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))}}.call(w.prototype),v.defineOptions(w.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=w})),ace.define("ace/undomanager",["require","exports","module"],(function(e,t,n){"use strict";var i=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:1==e.lines.length?null:e.lines,text:1==e.lines.length?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function n(e,t){for(var n=new Array(e.length),i=0;i0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(t){return n(t,e)},this.$deserializeDeltas=function(e){return n(e,t)}}).call(i.prototype),t.UndoManager=i})),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],(function(e,t,n){"use strict";var i=e("../lib/dom"),r=e("../lib/oop"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){r.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;to&&(g=s.end.row+1,s=t.getNextFoldLine(g,s),o=s?s.start.row:1/0),g>r){while(this.$cells.length>p+1)d=this.$cells.pop(),this.element.removeChild(d.element);break}d=this.$cells[++p],d||(d={element:null,textNode:null,foldWidget:null},d.element=i.createElement("div"),d.textNode=document.createTextNode(""),d.element.appendChild(d.textNode),this.element.appendChild(d.element),this.$cells[p]=d);var m="ace_gutter-cell ";c[g]&&(m+=c[g]),l[g]&&(m+=l[g]),this.$annotations[g]&&(m+=this.$annotations[g].className),d.element.className!=m&&(d.element.className=m);var v=t.getRowLength(g)*e.lineHeight+"px";if(v!=d.element.style.height&&(d.element.style.height=v),a){var b=a[g];null==b&&(b=a[g]=t.getFoldWidget(g))}if(b){d.foldWidget||(d.foldWidget=i.createElement("span"),d.element.appendChild(d.foldWidget));m="ace_fold-widget ace_"+b;"start"==b&&g==o&&gn.right-t.right?"foldWidgets":void 0}}).call(a.prototype),t.Gutter=a})),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],(function(e,t,n){"use strict";var i=e("../range").Range,r=e("../lib/dom"),s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,n,i){return(e?1:0)|(t?2:0)|(n?4:0)|(i?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){if(e){this.config=e;var t=[];for(var n in this.markers){var i=this.markers[n];if(i.range){var r=i.range.clipRows(e.firstRow,e.lastRow);if(!r.isEmpty())if(r=r.toScreenRange(this.session),i.renderer){var s=this.$getTop(r.start.row,e),o=this.$padding+(this.session.$bidiHandler.isBidiRow(r.start.row)?this.session.$bidiHandler.getPosLeft(r.start.column):r.start.column*e.characterWidth);i.renderer(t,r,o,s,e)}else"fullLine"==i.type?this.drawFullLineMarker(t,r,i.clazz,e):"screenLine"==i.type?this.drawScreenLineMarker(t,r,i.clazz,e):r.isMultiLine()?"text"==i.type?this.drawTextMarker(t,r,i.clazz,e):this.drawMultiLineMarker(t,r,i.clazz,e):this.session.$bidiHandler.isBidiRow(r.start.row)?this.drawBidiSingleLineMarker(t,r,i.clazz+" ace_start ace_br15",e):this.drawSingleLineMarker(t,r,i.clazz+" ace_start ace_br15",e)}else i.update(t,this,this.session,e)}this.element.innerHTML=t.join("")}},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,n,r,s,o){for(var a=this.session,c=n.start.row,l=n.end.row,u=c,h=0,f=0,d=a.getScreenLastRowColumn(u),p=null,g=new i(u,n.start.column,u,f);u<=l;u++)g.start.row=g.end.row=u,g.start.column=u==c?n.start.column:a.getRowWrapIndent(u),g.end.column=d,h=f,f=d,d=u+1d,u==l),this.session.$bidiHandler.isBidiRow(u)?this.drawBidiSingleLineMarker(t,g,p,s,u==l?0:1,o):this.drawSingleLineMarker(t,g,p,s,u==l?0:1,o)},this.drawMultiLineMarker=function(e,t,n,i,r){var s,o,a,c=this.$padding;if(r=r||"",this.session.$bidiHandler.isBidiRow(t.start.row)){var l=t.clone();l.end.row=l.start.row,l.end.column=this.session.getLine(l.start.row).length,this.drawBidiSingleLineMarker(e,l,n+" ace_br1 ace_start",i,null,r)}else s=i.lineHeight,o=this.$getTop(t.start.row,i),a=c+t.start.column*i.characterWidth,e.push("
");if(this.session.$bidiHandler.isBidiRow(t.end.row)){l=t.clone();l.start.row=l.end.row,l.start.column=0,this.drawBidiSingleLineMarker(e,l,n+" ace_br12",i,null,r)}else{var u=t.end.column*i.characterWidth;s=i.lineHeight,o=this.$getTop(t.end.row,i),e.push("
")}if(s=(t.end.row-t.start.row-1)*i.lineHeight,!(s<=0)){o=this.$getTop(t.start.row+1,i);var h=(t.start.column?1:0)|(t.end.column?0:8);e.push("
")}},this.drawSingleLineMarker=function(e,t,n,i,r,s){var o=i.lineHeight,a=(t.end.column+(r||0)-t.start.column)*i.characterWidth,c=this.$getTop(t.start.row,i),l=this.$padding+t.start.column*i.characterWidth;e.push("
")},this.drawBidiSingleLineMarker=function(e,t,n,i,r,s){var o=i.lineHeight,a=this.$getTop(t.start.row,i),c=this.$padding,l=this.session.$bidiHandler.getSelections(t.start.column,t.end.column);l.forEach((function(t){e.push("
")}))},this.drawFullLineMarker=function(e,t,n,i,r){var s=this.$getTop(t.start.row,i),o=i.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,i)-s),e.push("
")},this.drawScreenLineMarker=function(e,t,n,i,r){var s=this.$getTop(t.start.row,i),o=i.lineHeight;e.push("
")}}).call(s.prototype),t.Marker=s})),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(e,t,n){"use strict";var i=e("../lib/oop"),r=e("../lib/dom"),s=e("../lib/lang"),o=(e("../lib/useragent"),e("../lib/event_emitter").EventEmitter),a=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){i.implement(this,o),this.EOF_CHAR="¶",this.EOL_CHAR_LF="¬",this.EOL_CHAR_CRLF="¤",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="—",this.SPACE_CHAR="·",this.$padding=0,this.$updateEolChar=function(){var e="\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles!=e&&(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides!=e&&(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],n=1;n"+s.stringRepeat(this.TAB_CHAR,n)+""):t.push(s.stringRepeat(" ",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var i="ace_indent-guide",r="",o="";if(this.showInvisibles){i+=" ace_invisible",r=" ace_invisible_space",o=" ace_invisible_tab";var a=s.stringRepeat(this.SPACE_CHAR,this.tabSize),c=s.stringRepeat(this.TAB_CHAR,this.tabSize)}else a=s.stringRepeat(" ",this.tabSize),c=a;this.$tabStrings[" "]=""+a+"",this.$tabStrings["\t"]=""+c+""}},this.updateLines=function(e,t,n){this.config.lastRow==e.lastRow&&this.config.firstRow==e.firstRow||this.scrollLines(e),this.config=e;for(var i=Math.max(t,e.firstRow),r=Math.min(n,e.lastRow),s=this.element.childNodes,o=0,a=e.firstRow;al&&(a=c.end.row+1,c=this.session.getNextFoldLine(a,c),l=c?c.start.row:1/0),a>r)break;var u=s[o++];if(u){var h=[];this.$renderLine(h,a,!this.$useLineGroups(),a==l&&c),u.style.height=e.lineHeight*this.session.getRowLength(a)+"px",u.innerHTML=h.join("")}a++}},this.scrollLines=function(e){var t=this.config;if(this.config=e,!t||t.lastRow0;i--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(i=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);i>0;i--)n.removeChild(n.lastChild);if(e.firstRowt.lastRow){r=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(r)}},this.$renderLinesFragment=function(e,t,n){var i=this.element.ownerDocument.createDocumentFragment(),s=t,o=this.session.getNextFoldLine(s),a=o?o.start.row:1/0;while(1){if(s>a&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),a=o?o.start.row:1/0),s>n)break;var c=r.createElement("div"),l=[];if(this.$renderLine(l,s,!1,s==a&&o),c.innerHTML=l.join(""),this.$useLineGroups())c.className="ace_line_group",i.appendChild(c),c.style.height=e.lineHeight*this.session.getRowLength(s)+"px";else while(c.firstChild)i.appendChild(c.firstChild);s++}return i},this.update=function(e){this.config=e;var t=[],n=e.firstRow,i=e.lastRow,r=n,s=this.session.getNextFoldLine(r),o=s?s.start.row:1/0;while(1){if(r>o&&(r=s.end.row+1,s=this.session.getNextFoldLine(r,s),o=s?s.start.row:1/0),r>i)break;this.$useLineGroups()&&t.push("
"),this.$renderLine(t,r,!1,r==o&&s),this.$useLineGroups()&&t.push("
"),r++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,i){var r=this,o=/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\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]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,a=function(e,n,i,o,a){if(n)return r.showInvisibles?""+s.stringRepeat(r.SPACE_CHAR,e.length)+"":e;if("&"==e)return"&";if("<"==e)return"<";if(">"==e)return">";if("\t"==e){var c=r.session.getScreenTabSize(t+o);return t+=c-1,r.$tabStrings[c]}if(" "==e){var l=r.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",u=r.showInvisibles?r.SPACE_CHAR:"";return t+=1,""+u+""}return i?""+r.SPACE_CHAR+"":(t+=1,""+e+"")},c=i.replace(o,a);if(this.$textToken[n.type])e.push(c);else{var l="ace_"+n.type.replace(/\./g," ace_"),u="";"fold"==n.type&&(u=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("",c,"")}return t+i.length},this.renderIndentGuide=function(e,t,n){var i=t.search(this.$indentGuideRe);return i<=0||i>=n?t:" "==t[0]?(i-=i%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[" "],i/this.tabSize)),t.substr(i)):"\t"==t[0]?(e.push(s.stringRepeat(this.$tabStrings["\t"],i)),t.substr(i)):t},this.$renderWrappedLine=function(e,t,n,i){for(var r=0,o=0,a=n[0],c=0,l=0;l=a)c=this.$renderToken(e,c,u,h.substring(0,a-r)),h=h.substring(a-r),r=a,i||e.push("","
"),e.push(s.stringRepeat(" ",n.indent)),o++,c=0,a=n[o]||Number.MAX_VALUE;0!=h.length&&(r+=h.length,c=this.$renderToken(e,c,u,h))}}},this.$renderSimpleLine=function(e,t){var n=0,i=t[0],r=i.value;this.displayIndentGuides&&(r=this.renderIndentGuide(e,r)),r&&(n=this.$renderToken(e,n,i,r));for(var s=1;s"),r.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,r,s,n):this.$renderSimpleLine(e,r)}this.showInvisibles&&(i&&(t=i.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),n||e.push("
")},this.$getFoldLineTokens=function(e,t){var n=this.session,i=[];function r(e,t,n){var r=0,s=0;while(s+e[r].value.lengthn-t&&(o=o.substring(0,n-t)),i.push({type:e[r].type,value:o}),s=t+o.length,r+=1}while(sn?i.push({type:e[r].type,value:o.substring(0,n-s)}):i.push(e[r]),s+=o.length,r+=1}}var s=n.getTokens(e);return t.walk((function(e,t,o,a,c){null!=e?i.push({type:"fold",value:e}):(c&&(s=n.getTokens(t)),s.length&&r(s,a,o))}),t.end.row,this.session.getLine(t.end.row).length),i},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(a.prototype),t.Text=a})),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],(function(e,t,n){"use strict";var i,r=e("../lib/dom"),s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),void 0===i&&(i=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(i?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){for(var t=this.cursors,n=t.length;n--;)t[n].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){for(var t=this.cursors,n=t.length;n--;)t[n].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e==this.smoothBlinking||i||(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout((function(){e(!1)}),.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval((function(){e(!0),t()}),this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),i=this.$padding+(this.session.$bidiHandler.isBidiRow(n.row,e.row)?this.session.$bidiHandler.getPosLeft(n.column):n.column*this.config.characterWidth),r=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:i,top:r}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,i=0;void 0!==t&&0!==t.length||(t=[{cursor:null}]);n=0;for(var r=t.length;ne.height+e.offset||s.top<0)&&n>1)){var o=(this.cursors[i++]||this.addCursor()).style;this.drawCursor?this.drawCursor(o,s,e,t[n],this.session):(o.left=s.left+"px",o.top=s.top+"px",o.width=e.characterWidth+"px",o.height=e.lineHeight+"px")}}while(this.cursors.length>i)this.removeCursor();var a=this.session.getOverwrite();this.$setOverwrite(a),this.$pixelPos=s,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(s.prototype),t.Cursor=s})),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],(function(e,t,n){"use strict";var i=e("./lib/oop"),r=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,a=32768,c=function(e){this.element=r.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=r.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){i.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1}}).call(c.prototype);var l=function(e,t){c.call(this,e),this.scrollTop=0,this.scrollHeight=0,t.$scrollbarWidth=this.width=r.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px",this.$minWidth=0};i.inherits(l,c),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,1!=this.coeff){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=this.setScrollHeight=function(e){this.scrollHeight=e,e>a?(this.coeff=a/e,e=a):1!=this.coeff&&(this.coeff=1),this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)}}.call(l.prototype);var u=function(e,t){c.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};i.inherits(u,c),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(u.prototype),t.ScrollBar=l,t.ScrollBarV=l,t.ScrollBarH=u,t.VScrollBar=l,t.HScrollBar=u})),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],(function(e,t,n){"use strict";var i=e("./lib/event"),r=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){if(this.changes=this.changes|e,!this.pending&&this.changes){this.pending=!0;var t=this;i.nextFrame((function(){var e;t.pending=!1;while(e=t.changes)t.changes=0,t.onRender(e)}),this.window)}}}).call(r.prototype),t.RenderLoop=r})),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],(function(e,t,n){var i=e("../lib/oop"),r=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,c=0,l=t.FontMetrics=function(e){this.el=r.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=r.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=r.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),c||this.$testFractionalRect(),this.$measureNode.innerHTML=s.stringRepeat("X",c),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){i.implement(this,a),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=r.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;c=t>0&&t<1?50:100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",o.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval((function(){e.checkForSizeChanges()}),500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===c){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(n){e={width:0,height:0}}var t={height:e.height,width:e.width/c}}else t={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/c};return 0===t.width||0===t.height?null:t},this.$measureCharWidth=function(e){this.$main.innerHTML=s.stringRepeat(e,c);var t=this.$main.getBoundingClientRect();return t.width/c},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(l.prototype)})),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],(function(e,t,n){"use strict";var i=e("./lib/oop"),r=e("./lib/dom"),s=e("./config"),o=e("./lib/useragent"),a=e("./layer/gutter").Gutter,c=e("./layer/marker").Marker,l=e("./layer/text").Text,u=e("./layer/cursor").Cursor,h=e("./scrollbar").HScrollBar,f=e("./scrollbar").VScrollBar,d=e("./renderloop").RenderLoop,p=e("./layer/font_metrics").FontMetrics,g=e("./lib/event_emitter").EventEmitter,m='.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;text-align: left;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.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,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;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;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {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;border-left: 2px solid;transform: translatez(0);}.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {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;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_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;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.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: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);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);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.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 {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 {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-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;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_text-input-ios {position: absolute !important;top: -100000px !important;left: -100000px !important;}';r.importCssString(m,"ace_editor.css");var v=function(e,t){var n=this;this.container=e||r.createElement("div"),this.$keepTextAreaAtCursor=!o.isOldIE,r.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=r.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.$gutter.setAttribute("aria-hidden",!0),this.scroller=r.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=r.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new c(this.content);var i=this.$textLayer=new l(this.content);this.canvas=i.element,this.$markerFront=new c(this.content),this.$cursorLayer=new u(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new f(this.container,this),this.scrollBarH=new h(this.container,this),this.scrollBarV.addEventListener("scroll",(function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)})),this.scrollBarH.addEventListener("scroll",(function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)})),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new p(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",(function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)})),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new d(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),s.resetOptions(this),s._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,i.implement(this,g),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(e,t,n){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},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(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,i){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var r=this.container;i||(i=r.clientHeight||r.scrollHeight),n||(n=r.clientWidth||r.scrollWidth);var s=this.$updateCachedSize(e,t,n,i);if(!this.$size.scrollerHeight||!n&&!i)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(e,t,n,i){i-=this.$extraHeight||0;var r=0,s=this.$size,o={width:s.width,height:s.height,scrollerHeight:s.scrollerHeight,scrollerWidth:s.scrollerWidth};return i&&(e||s.height!=i)&&(s.height=i,r|=this.CHANGE_SIZE,s.scrollerHeight=s.height,this.$horizScroll&&(s.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",r|=this.CHANGE_SCROLL),n&&(e||s.width!=n)&&(r|=this.CHANGE_SIZE,s.width=n,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",s.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(r|=this.CHANGE_FULL)),s.$dirty=!n||!i,r&&this._signal("resize",o),r},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()||this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e),this.session.$bidiHandler.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=r.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=r.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var i=this.textarea.style,r=this.lineHeight;if(t<0||t>e.height-r)i.top=i.left="0";else{var s=this.characterWidth;if(this.$composition){var o=this.textarea.value.replace(/^\x01+/,"");s*=this.session.$getStringScreenWidth(o)[0]+2,r+=2}n-=this.scrollLeft,n>this.$size.scrollerWidth-s&&(n=this.$size.scrollerWidth-s),n+=this.gutterWidth,i.height=r+"px",i.width=s+"px",i.left=Math.min(n,this.$size.scrollerWidth-s)+"px",i.top=Math.min(t,this.$size.height-r)+"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 e=this.layerConfig,t=e.lastRow,n=this.session.documentToScreenRow(t,0)*e.lineHeight;return n-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,i){var r=this.scrollMargin;r.top=0|e,r.bottom=0|t,r.right=0|i,r.left=0|n,r.v=r.top+r.bottom,r.h=r.left+r.right,r.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-r.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),this.session&&this.container.offsetWidth&&!this.$frozen&&(e||t)){if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender"),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig(),n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var i=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;i>0&&(this.scrollTop=i,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-n.offset+"px",this.content.style.marginTop=-n.offset+"px",this.content.style.width=n.width+2*this.$padding+"px",this.content.style.height=n.minHeight+"px"}if(e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),e&this.CHANGE_FULL)return this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender");if(e&this.CHANGE_SCROLL)return e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender");e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")}else this.$changes|=e},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var i=e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||i!=this.$vScroll){i!=this.$vScroll&&(this.$vScroll=i,this.scrollBarV.setVisible(i));var r=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,r,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,i=this.session.getScreenLength(),r=i*this.lineHeight,s=this.$getLongestLine(),o=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-s-2*this.$padding<0),a=this.$horizScroll!==o;a&&(this.$horizScroll=o,this.scrollBarH.setVisible(o));var c=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var l=this.scrollTop%this.lineHeight,u=t.scrollerHeight+this.lineHeight,h=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;r+=h;var f=this.scrollMargin;this.session.setScrollTop(Math.max(-f.top,Math.min(this.scrollTop,r-t.scrollerHeight+f.bottom))),this.session.setScrollLeft(Math.max(-f.left,Math.min(this.scrollLeft,s+2*this.$padding-t.scrollerWidth+f.right)));var d=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-r+h<0||this.scrollTop>f.top),p=c!==d;p&&(this.$vScroll=d,this.scrollBarV.setVisible(d));var g,m,v=Math.ceil(u/this.lineHeight)-1,b=Math.max(0,Math.round((this.scrollTop-l)/this.lineHeight)),w=b+v,y=this.lineHeight;b=e.screenToDocumentRow(b,0);var A=e.getFoldLine(b);A&&(b=A.start.row),g=e.documentToScreenRow(b,0),m=e.getRowLength(b)*y,w=Math.min(e.screenToDocumentRow(w,0),e.getLength()-1),u=t.scrollerHeight+e.getRowLength(w)*y+m,l=this.scrollTop-g*y;var E=0;return this.layerConfig.width!=s&&(E=this.CHANGE_H_SCROLL),(a||p)&&(E=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),p&&(s=this.$getLongestLine())),this.layerConfig={width:s,padding:this.$padding,firstRow:b,firstRowScreen:g,lastRow:w,lineHeight:y,characterWidth:this.characterWidth,minHeight:u,maxHeight:r,offset:l,gutterOffset:y?Math.max(0,Math.ceil((l+t.height-t.scrollerHeight)/y)):0,height:this.$size.scrollerHeight},E},this.$updateLines=function(){if(this.$changedLines){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(!(e>n.lastRow+1)&&!(ts?(t&&c+o>s+this.lineHeight&&(s-=t*this.$size.scrollerHeight),0===s&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):c+this.$size.scrollerHeight-ar?(r=1-this.scrollMargin.top||(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right||void 0)))},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),i=e+this.scrollLeft-n.left-this.$padding,r=i/this.characterWidth,s=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),o=Math.round(r);return{row:s,column:o,side:r-o>0?1:-1,offsetX:i}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),i=e+this.scrollLeft-n.left-this.$padding,r=Math.round(i/this.characterWidth),s=(t+this.scrollTop-n.top)/this.lineHeight;return this.session.screenToDocumentPosition(s,Math.max(r,0),i)},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),i=this.session.documentToScreenPosition(e,t),r=this.$padding+(this.session.$bidiHandler.isBidiRow(i.row,e)?this.session.$bidiHandler.getPosLeft(i.column):Math.round(i.column*this.characterWidth)),s=i.row*this.lineHeight;return{pageX:n.left+r-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){r.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){r.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,r.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(r.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(e,t){var n=this;if(this.$themeId=e,n._dispatchEvent("themeChange",{theme:e}),e&&"string"!=typeof e)o(e);else{var i=e||this.$options.theme.initialValue;s.loadModule(["theme",i],o)}function o(i){if(n.$themeId!=e)return t&&t();if(!i||!i.cssClass)throw new Error("couldn't load module "+e+" or it didn't call define");r.importCssString(i.cssText,i.cssClass,n.container.ownerDocument),n.theme&&r.removeCssClass(n.container,n.theme.cssClass);var s="padding"in i?i.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&s!=n.$padding&&n.setPadding(s),n.$theme=i.cssClass,n.theme=i,r.addCssClass(n.container,i.cssClass),r.setCssClass(n.container,"ace_dark",i.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:i}),t&&t()}},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){r.setCssClass(this.container,e,!1!==t)},this.unsetStyle=function(e){r.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(v.prototype),s.defineOptions(v.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&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(e){"number"==typeof e&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){r.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight)return this.$gutterLineHighlight=r.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight);this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){"number"==typeof e&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},maxPixelHeight:{set:function(e){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(e){e=+e||0,this.$scrollPastEnd!=e&&(this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=v})),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],(function(e,t,n){"use strict";var i=e("../lib/oop"),r=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,o=e("../config");function a(e,t){var n=t.src;r.qualifyURL(e);try{return new Blob([n],{type:"application/javascript"})}catch(o){var i=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,s=new i;return s.append(n),s.getBlob("application/javascript")}}function c(e,t){var n=a(e,t),i=window.URL||window.webkitURL,r=i.createObjectURL(n);return new Worker(r)}var l=function(t,n,i,r,s){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),o.get("packaged")||!e.toUrl)r=r||o.moduleUrl(n.id,"worker");else{var a=this.$normalizePath;r=r||a(e.toUrl("ace/worker/worker.js",null,"_"));var l={};t.forEach((function(t){l[t]=a(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))}))}this.$worker=c(r,n),s&&this.send("importScripts",s),this.$worker.postMessage({init:!0,tlns:l,module:n.id,classname:i}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){i.implement(this,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data);break}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return r.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var i=this.callbackId++;this.callbacks[i]=n,t.push(i)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(n){console.error(n.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==e.action?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))}}).call(l.prototype);var u=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var i=null,r=!1,a=Object.create(s),c=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){c.messageBuffer.push(e),i&&(r?setTimeout(l):l())},this.setEmitSync=function(e){r=e};var l=function(){var e=c.messageBuffer.shift();e.command?i[e.command].apply(i,e.args):e.event&&a._signal(e.event,e.data)};a.postMessage=function(e){c.onMessage({data:e})},a.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},a.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],(function(e){i=new e[n](a);while(c.messageBuffer.length)l()}))};u.prototype=l.prototype,t.UIWorkerClient=u,t.WorkerClient=l,t.createWorker=c})),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],(function(e,t,n){"use strict";var i=e("./range").Range,r=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,i,r,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=r,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=i,this.$onCursorChange=function(){setTimeout((function(){o.onCursorChange()}))},this.$pos=n;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,r),this.setup=function(){var e=this,t=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var r=this.pos;r.$insertRight=!0,r.detach(),r.markerId=n.addMarker(new i(r.row,r.column,r.row,r.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach((function(n){var i=t.createAnchor(n.row,n.column);i.$insertRight=!0,i.detach(),e.others.push(i)})),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach((function(n){n.markerId=e.addMarker(new i(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1)}))}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,s=t.start.column-this.pos.column;if(this.updateAnchors(e),r&&(this.length+=n),r&&!this.session.$fromUndo)if("insert"===e.action)for(var o=this.others.length-1;o>=0;o--){var a=this.others[o],c={row:a.row,column:a.column+s};this.doc.insertMergedLines(c,e.lines)}else if("remove"===e.action)for(o=this.others.length-1;o>=0;o--){a=this.others[o],c={row:a.row,column:a.column+s};this.doc.remove(new i(c.row,c.column,c.row,c.column-n))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,n=function(n,r){t.removeMarker(n.markerId),n.markerId=t.addMarker(new i(n.row,n.column,n.row,n.column+e.length),r,null,!1)};n(this.pos,this.mainClass);for(var r=this.others.length;r--;)n(this.others[r],this.othersClass)}},this.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,n=0;n1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var i=this.ranges.indexOf(e[n]);this.ranges.splice(i,1)}this._signal("removeRange",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new i,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=r.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{n=this.getRange();var i=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(i)var a=n.end,c=n.start;else a=n.start,c=n.end;return this.addRange(r.fromPoints(c,c)),void this.addRange(r.fromPoints(a,a))}var l=[],u=this.getLineRange(s,!0);u.start.column=n.start.column,l.push(u);for(var h=s+1;h1){var e=this.rangeList.ranges,t=e[e.length-1],n=r.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var i=this.session.documentToScreenPosition(this.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(i,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var i=[],s=e.column0)v--;if(v>0){var b=0;while(i[b].isEmpty())b++}for(var w=v;w>=b;w--)i[w].isEmpty()&&i.splice(w,1)}return i}}.call(s.prototype);var p=e("./editor").Editor;function g(e,t){return e.row==t.row&&e.column==t.column}function m(e){e.$multiselectOnSessionChange||(e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),e.$multiselectOnSessionChange=t.onSessionChange.bind(e),e.$checkMultiselectChange=e.$checkMultiselectChange.bind(e),e.$multiselectOnSessionChange(e),e.on("changeSession",e.$multiselectOnSessionChange),e.on("mousedown",o),e.commands.addCommands(l.defaultCommands),v(e))}function v(e){var t=e.textInput.getElement(),n=!1;function i(t){n&&(e.renderer.setMouseCursor(""),n=!1)}a.addListener(t,"keydown",(function(t){var r=18==t.keyCode&&!(t.ctrlKey||t.shiftKey||t.metaKey);e.$blockSelectEnabled&&r?n||(e.renderer.setMouseCursor("crosshair"),n=!0):n&&i()})),a.addListener(t,"keyup",i),a.addListener(t,"blur",i)}(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,n=e.length;n--;){var i=e[n];if(i.marker){this.session.removeMarker(i.marker);var r=t.indexOf(i);-1!=r&&t.splice(r,1)}}this.session.selectionMarkerCount=t.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(e){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(l.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(l.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(n.multiSelect){if(t.multiSelectAction)"forEach"==t.multiSelectAction?i=n.forEachSelection(t,e.args):"forEachLine"==t.multiSelectAction?i=n.forEachSelection(t,e.args,!0):"single"==t.multiSelectAction?(n.exitMultiSelectMode(),i=t.exec(n,e.args||{})):i=t.multiSelectAction(n,e.args||{});else{var i=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}return i}},this.forEachSelection=function(e,t,n){if(!this.inVirtualSelectionMode){var i,r=n&&n.keepOrder,o=1==n||n&&n.$byLines,a=this.session,c=this.selection,l=c.rangeList,u=(r?c:l).ranges;if(!u.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var h=c._eventRegistry;c._eventRegistry={};var f=new s(a);this.inVirtualSelectionMode=!0;for(var d=u.length;d--;){if(o)while(d>0&&u[d].start.row==u[d-1].end.row)d--;f.fromOrientedRange(u[d]),f.index=d,this.selection=a.selection=f;var p=e.exec?e.exec(this,t||{}):e(this,t||{});i||void 0===p||(i=p),f.toOrientedRange(u[d])}f.detach(),this.selection=a.selection=c,this.inVirtualSelectionMode=!1,c._eventRegistry=h,c.mergeOverlappingRanges();var g=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),g&&g.from==g.to&&this.renderer.animateScrolling(g.from),i}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,n=[],i=0;io&&(o=n.column),ru?e.insert(i,c.stringRepeat(" ",s-u)):e.remove(new r(i.row,i.column,i.row,i.column-s+u)),t.start.column=t.end.column=o,t.start.row=t.end.row=i.row,t.cursor=t.end})),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var u=this.selection.getRange(),h=u.start.row,f=u.end.row,d=h==f;if(d){var p,g=this.session.getLength();do{p=this.session.getLine(f)}while(/[=:]/.test(p)&&++f0);h<0&&(h=0),f>=g&&(f=g-1)}var m=this.session.removeFullLines(h,f);m=this.$reAlignText(m,d),this.session.insert({row:h,column:0},m.join("\n")+"\n"),d||(u.start.column=0,u.end.column=m[m.length-1].length),this.selection.setRange(u)}},this.$reAlignText=function(e,t){var n,i,r,s=!0,o=!0;return e.map((function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?null==n?(n=t[1].length,i=t[2].length,r=t[3].length,t):(n+i+r!=t[1].length+t[2].length+t[3].length&&(o=!1),n!=t[1].length&&(s=!1),n>t[1].length&&(n=t[1].length),it[3].length&&(r=t[3].length),t):[e]})).map(t?l:s?o?u:l:h);function a(e){return c.stringRepeat(" ",e)}function l(e){return e[2]?a(n)+e[2]+a(i-e[2].length+r)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function u(e){return e[2]?a(n+i-e[2].length)+e[2]+a(r," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function h(e){return e[2]?a(n)+e[2]+a(r)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}}}).call(p.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(p.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})})),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=e("../../range").Range,r=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);return this.foldingStartMarker.test(i)?"start":"markbeginend"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(i)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var r=/\S/,s=e.getLine(t),o=s.search(r);if(-1!=o){var a=n||s.length,c=e.getLength(),l=t,u=t;while(++tl){var f=e.getLine(u).length;return new i(l,a,u,f)}}},this.openingBracketBlock=function(e,t,n,r,s){var o={row:n,column:r+1},a=e.$findClosingBracket(t,o,s);if(a){var c=e.foldWidgets[a.row];return null==c&&(c=e.getFoldWidget(a.row)),"start"==c&&a.row>o.row&&(a.row--,a.column=e.getLine(a.row).length),i.fromPoints(o,a)}},this.closingBracketBlock=function(e,t,n,r,s){var o={row:n,column:r},a=e.$findOpeningBracket(t,o);if(a)return a.column++,o.column--,i.fromPoints(a,o)}}).call(r.prototype)})),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],(function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.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 {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: 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_heading {color: rgb(12, 7, 255);}.ace-tm .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;}.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 i=e("../lib/dom");i.importCssString(t.cssText,t.cssClass)})),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],(function(e,t,n){"use strict";e("./lib/oop");var i=e("./lib/dom");e("./range").Range;function r(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}(function(){this.getRowLength=function(e){var t;return t=this.lineWidgets&&this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0,this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach((function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)})),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach(),this.editor!=e&&(this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(e){var t=this.editor;if(t){this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach((function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))}))}},this.updateOnFold=function(e,t){var n=t.lineWidgets;if(n&&e.action){for(var i=e.data,r=i.start.row,s=i.end.row,o="add"==e.action,a=r+1;a0&&!i[r])r--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=r;o<=s;o++){var a=i[o];if(a&&a.el)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var c=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;a.coverLine||(c+=n.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=c-n.offset+"px";var l=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(l-=t.scrollLeft),a.el.style.left=l+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=n.width+2*n.padding+"px"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+"px":a.el.style.right=""}}}}}).call(r.prototype),t.LineWidgets=r})),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],(function(e,t,n){"use strict";var i=e("../line_widgets").LineWidgets,r=e("../lib/dom"),s=e("../range").Range;function o(e,t,n){var i=0,r=e.length-1;while(i<=r){var s=i+r>>1,o=n(t,e[s]);if(o>0)i=s+1;else{if(!(o<0))return s;r=s-1}}return-(i+1)}function a(e,t,n){var i=e.getAnnotations().sort(s.comparePoints);if(i.length){var r=o(i,{row:t,column:-1},s.comparePoints);r<0&&(r=-r-1),r>=i.length?r=n>0?0:i.length-1:0===r&&n<0&&(r=i.length-1);var a=i[r];if(a&&n){if(a.row===t){do{a=i[r+=n]}while(a&&a.row===t);if(!a)return i.slice()}var c=[];t=a.row;do{c[n<0?"unshift":"push"](a),a=i[r+=n]}while(a&&a.row==t);return c.length&&c}}}t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new i(n),n.widgetManager.attach(e));var s=e.getCursorPosition(),o=s.row,c=n.widgetManager.getWidgetsAtRow(o).filter((function(e){return"errorMarker"==e.type}))[0];c?c.destroy():o-=t;var l,u=a(n,o,t);if(u){var h=u[0];s.column=(h.pos&&"number"!=typeof h.column?h.pos.sc:h.column)||0,s.row=h.row,l=e.renderer.$gutterLayer.$annotations[s.row]}else{if(c)return;l={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveToPosition(s);var f={row:s.row,fixedWidth:!0,coverGutter:!0,el:r.createElement("div"),type:"errorMarker"},d=f.el.appendChild(r.createElement("div")),p=f.el.appendChild(r.createElement("div"));p.className="error_widget_arrow "+l.className;var g=e.renderer.$cursorLayer.getPixelPosition(s).left;p.style.left=g+e.renderer.gutterWidth-5+"px",f.el.className="error_widget_wrapper",d.className="error_widget "+l.className,d.innerHTML=l.text.join("
"),d.appendChild(r.createElement("div"));var m=function(e,t,n){if(0===t&&("esc"===n||"return"===n))return f.destroy(),{command:"null"}};f.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(f),e.off("changeSelection",f.destroy),e.off("changeSession",f.destroy),e.off("mouseup",f.destroy),e.off("change",f.destroy))},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",f.destroy),e.on("changeSession",f.destroy),e.on("mouseup",f.destroy),e.on("change",f.destroy),e.session.widgetManager.addLineWidget(f),f.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:f.el.offsetHeight})},r.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")})),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/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],(function(e,t,i){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),s=e("./lib/event"),o=e("./editor").Editor,a=e("./edit_session").EditSession,c=e("./undomanager").UndoManager,l=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.acequire=e,t.define=n("07d6"),t.edit=function(e){if("string"==typeof e){var n=e;if(e=document.getElementById(n),!e)throw new Error("ace.edit can't find div #"+n)}if(e&&e.env&&e.env.editor instanceof o)return e.env.editor;var i="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;i=a.value,e=r.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(i=r.getInnerText(e),e.innerHTML="");var c=t.createEditSession(i),u=new o(new l(e));u.setSession(c);var h={document:c,editor:u,onResize:u.resize.bind(u,null)};return a&&(h.textarea=a),s.addListener(window,"resize",h.onResize),u.on("destroy",(function(){s.removeListener(window,"resize",h.onResize),h.editor.container.env=null})),u.container.env=u.env=h,u},t.createEditSession=function(e,t){var n=new a(e,t);return n.setUndoManager(new c),n},t.EditSession=a,t.UndoManager=c,t.version="1.2.9"})),function(){ace.acequire(["ace/ace"],(function(e){for(var t in e&&(e.config.init(!0),e.define=ace.define),window.ace||(window.ace=e),e)e.hasOwnProperty(t)&&(window.ace[t]=e[t])}))}(),e.exports=window.ace.acequire("ace/ace")},"0624":function(e,t,n){"use strict";const i=n("a262"),r=n("42a7"),s=n("1c6f"),o=n("35ea"),a=n("6027"),c=[["base1","1","","1"],["base2","0",r,"01"],["base8","7",r,"01234567"],["base10","9",r,"0123456789"],["base16","f",s,"0123456789abcdef"],["base32","b",o,"abcdefghijklmnopqrstuvwxyz234567"],["base32pad","c",o,"abcdefghijklmnopqrstuvwxyz234567="],["base32hex","v",o,"0123456789abcdefghijklmnopqrstuv"],["base32hexpad","t",o,"0123456789abcdefghijklmnopqrstuv="],["base32z","h",o,"ybndrfg8ejkmcpqxot1uwisza345h769"],["base58flickr","Z",r,"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],["base58btc","z",r,"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"],["base64","m",a,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"],["base64pad","M",a,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="],["base64url","u",a,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"],["base64urlpad","U",a,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_="]],l=c.reduce((e,t)=>(e[t[0]]=new i(t[0],t[1],t[2],t[3]),e),{}),u=c.reduce((e,t)=>(e[t[1]]=l[t[0]],e),{});e.exports={names:l,codes:u}},"06b1":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("2540"),s=n("9878"),o=n("15e4");e.exports=s(e=>async function*(t,n={}){const s=await e.post("files/read",{timeout:n.timeout,signal:n.signal,searchParams:o({arg:t,count:n.count||n.length,...n}),headers:n.headers});for await(const e of r(s.body))yield i.from(e)})},"06cf":function(e,t,n){var i=n("83ab"),r=n("d1e7"),s=n("5c6c"),o=n("fc6a"),a=n("c04e"),c=n("5135"),l=n("0cfb"),u=Object.getOwnPropertyDescriptor;t.f=i?u:function(e,t){if(e=o(e),t=a(t,!0),l)try{return u(e,t)}catch(n){}if(c(e,t))return s(!r.f.call(e,t),e[t])}},"0701":function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async(t={})=>{const n=await e.post("bootstrap/list",{timeout:t.timeout,signal:t.signal,searchParams:r(t),headers:t.headers});return n.json()})},"0725":function(e,t,n){"use strict";const i=n("2054"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t={})=>{const n=await(await e.post("swarm/peers",{timeout:t.timeout,signal:t.signal,searchParams:s(t),headers:t.headers})).json();return(n.Peers||[]).map(e=>{const t={};try{t.addr=i(e.Addr),t.peer=e.Peer}catch(n){t.error=n,t.rawPeerInfo=e}return e.Muxer&&(t.muxer=e.Muxer),e.Latency&&(t.latency=e.Latency),e.Streams&&(t.streams=e.Streams),null!=e.Direction&&(t.direction=e.Direction),t})})},"07d6":function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},"08df":function(e,t,n){var i=n("91f5"),r=n("0d0f");e.exports=i,e.exports.parse=i,e.exports.stringify=r},"0ab2":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=e=>{const t=new Array(4);for(let n=0;n<4;n++)t[n]=255&e,e>>=8;return i.from(t)};e.exports={fromNumberTo32BitBuf:r}},"0abd":function(e,t,n){"use strict";const i=n("2054"),r=n("ff0e"),{isBrowser:s,isWebWorker:o}=n("2984"),{URL:a}=n("16af"),c=n("3cb9").default,l=n("34eb")("ipfs-http-client:lib:error-handler"),u=n("670b"),h=n("4fcb"),f=e=>{try{return i(e),!0}catch(t){return!1}},d=(e={})=>{f(e)?e={url:r(e)}:"string"===typeof e&&(e={url:e});const t=new a(e.url);return e.apiPath?t.pathname=e.apiPath:"/"!==t.pathname&&void 0!==t.pathname||(t.pathname="api/v0"),e.url||(s||o?(t.protocol=e.protocol||location.protocol,t.hostname=e.host||location.hostname,t.port=e.port||location.port):(t.hostname=e.host||"localhost",t.port=e.port||"5001",t.protocol=e.protocol||"http")),e.url=t,e},p=async e=>{let t;try{if((e.headers.get("Content-Type")||"").startsWith("application/json")){const n=await e.json();l(n),t=n.Message||n.message}else t=await e.text()}catch(i){l("Failed to parse error response",i),t=i.message}let n=new u.HTTPError(e);throw t&&t.includes("context deadline exceeded")&&(n=new u.TimeoutError(e)),t&&(n.message=t),n},g=/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,m=e=>e.replace(g,(function(e){return"-"+e.toLowerCase()})),v=e=>"string"===typeof e?c(e):e;class b extends u{constructor(e={}){const t=d(e);super({timeout:v(t.timeout)||12e5,headers:t.headers,base:d(t.url).toString(),handleError:p,transformSearchParams:e=>{const t=new URLSearchParams;for(const[n,i]of e)"undefined"!==i&&"null"!==i&&"signal"!==n&&t.append(m(n),i),"timeout"!==n||isNaN(i)||t.append(m(n),i);return t}}),delete this.get,delete this.put,delete this.delete,delete this.options;const n=this.fetch;this.fetch=(e,t={})=>n.call(this,e,h(t,{method:"POST"}))}}b.errorHandler=p,e.exports=b},"0ae1":function(e,t,n){"use strict";const i=n("7766"),r=n("9878"),s=n("15e4");e.exports=r(e=>async function*(t={}){const n=await e.post("refs/local",{timeout:t.timeout,signal:t.signal,transform:i,searchParams:s(t),headers:t.headers});yield*n.ndjson()})},"0cfb":function(e,t,n){var i=n("83ab"),r=n("d039"),s=n("cc12");e.exports=!i&&!r((function(){return 7!=Object.defineProperty(s("div"),"a",{get:function(){return 7}}).a}))},"0d0f":function(e,t){var n=function(e,t){var n=e.repeated?"repeated":e.required?"required":"optional";"map"===e.type&&(n="map<"+e.map.from+","+e.map.to+">"),e.oneof&&(n="");var i=Object.keys(e.options||{}).map((function(t){return t+" = "+e.options[t]})).join(",");return i&&(i=" ["+i+"]"),t.push((n?n+" ":"")+("map"===e.map?"":e.type+" ")+e.name+" = "+e.tag+i+";"),t},i=function(e,t){t.push("message "+e.name+" {"),e.options||(e.options={}),o(e.options,t),e.enums||(e.enums=[]),e.enums.forEach((function(e){t.push(r(e,[]))})),e.messages||(e.messages=[]),e.messages.forEach((function(e){t.push(i(e,[]))}));var s={};return e.fields||(e.fields=[]),e.fields.forEach((function(e){e.oneof?(s[e.oneof]||(s[e.oneof]=[]),s[e.oneof].push(n(e,[]))):t.push(n(e,[]))})),Object.keys(s).forEach((function(e){s[e].unshift("oneof "+e+" {"),s[e].push("}"),t.push(s[e])})),t.push("}",""),t},r=function(e,t){t.push("enum "+e.name+" {"),e.options||(e.options={});var n=o(e.options,[]);return n.length>1&&t.push(n.slice(0,-1)),Object.keys(e.values).map((function(n){var i=s(e.values[n]);t.push([n+" = "+i+";"])})),t.push("}",""),t},s=function(e,t){var n=Object.keys(e.options||{}).map((function(t){return t+" = "+e.options[t]})).join(",");n&&(n=" ["+n+"]");var i=e.value+n;return i},o=function(e,t){var n=Object.keys(e);return n.forEach((function(n){var i=e[n];~n.indexOf(".")&&(n="("+n+")");var r=typeof i;"object"===r?(i=a(i,[]),i.length&&t.push("option "+n+" = {",i,"};")):("string"===r&&"optimize_for"!==n&&(i='"'+i+'"'),t.push("option "+n+" = "+i+";"))})),n.length>0&&t.push(""),t},a=function(e,t){var n=Object.keys(e);return n.forEach((function(n){var i=e[n],r=typeof i;"object"===r?Array.isArray(i)?i.forEach((function(e){e=a(e,[]),e.length&&t.push(n+" {",e,"}")})):(i=a(i,[]),i.length&&t.push(n+" {",i,"}")):("string"===r&&(i='"'+i+'"'),t.push(n+": "+i))})),t},c=function(e,t){return t.push("service "+e.name+" {"),e.options||(e.options={}),o(e.options,t),e.methods||(e.methods=[]),e.methods.forEach((function(e){t.push(l(e,[]))})),t.push("}",""),t},l=function(e,t){var n="rpc "+e.name+"(";e.client_streaming&&(n+="stream "),n+=e.input_type+") returns (",e.server_streaming&&(n+="stream "),n+=e.output_type+")",e.options||(e.options={});var i=o(e.options,[]);return i.length>1?t.push(n+" {",i.slice(0,-1),"}"):t.push(n+";"),t},u=function(e){return function(t){return Array.isArray(t)?t.map(u(e+" ")).join("\n"):e+t}};e.exports=function(e){var t=[];return t.push('syntax = "proto'+e.syntax+'";',""),e.package&&t.push("package "+e.package+";",""),e.options||(e.options={}),o(e.options,t),e.enums||(e.enums=[]),e.enums.forEach((function(e){r(e,t)})),e.messages||(e.messages=[]),e.messages.forEach((function(e){i(e,t)})),e.services&&e.services.forEach((function(e){c(e,t)})),t.map(u("")).join("\n")}},"0db3":function(e,t,n){"use strict";const i=n("7766"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t,n={})=>{const r=await e.post("key/rm",{timeout:n.timeout,signal:n.signal,searchParams:s({arg:t,...n}),headers:n.headers}),o=await r.json();return i(o.Keys[0])})},"0db8":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("c449"),s=n("9878"),o=n("15e4");e.exports=s(e=>async function(t,n={}){const s=await e.post("object/data",{timeout:n.timeout,signal:n.signal,searchParams:o({arg:""+(i.isBuffer(t)?new r(t):t),...n}),headers:n.headers}),a=await s.arrayBuffer();return i.from(a)})},"0de0":function(e,t,n){"use strict";e.exports=AbortController},"0e02":function(e,t,n){"use strict";const i=n("aef6"),r=n("c449"),{Buffer:s}=n("b639"),o=n("9878"),a=n("15e4");e.exports=o(e=>async(t,n={})=>{t=new r(t);const o=await e.post("block/get",{timeout:n.timeout,signal:n.signal,searchParams:a({arg:t.toString(),...n}),headers:n.headers});return new i(s.from(await o.arrayBuffer()),t)})},"0e68":function(e,t,n){"use strict";const i=n("c449"),r=n("2054"),s=n("9878"),o=n("15e4"),{Provider:a}=n("a36d");e.exports=s(e=>async function*(t,n={}){const s=await e.post("dht/findprovs",{timeout:n.timeout,signal:n.signal,searchParams:o({arg:""+new i(t),...n}),headers:n.headers});for await(const e of s.ndjson())if(e.Type===a&&e.Responses)for(const{ID:t,Addrs:n}of e.Responses)yield{id:t,addrs:(n||[]).map(e=>r(e))}})},"0e80":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("b6aa"),s=n("354e"),o=n("4064");async function a(e,t,n){const i=await a.digest(e,t,n);return s.encode(i,t,n)}a.Buffer=i,a.multihash=s,a.digest=async(e,t,n)=>{const i=a.createHash(t),r=await i(e);return n?r.slice(0,n):r},a.createHash=function(e){if(!e)throw r(new Error("hash algorithm must be specified"),"ERR_HASH_ALGORITHM_NOT_SPECIFIED");if(e=s.coerceCode(e),!a.functions[e])throw r(new Error(`multihash function '${e}' not yet supported`),"ERR_HASH_ALGORITHM_NOT_SUPPORTED");return a.functions[e]},a.functions={0:o.identity,17:o.sha1,18:o.sha2256,19:o.sha2512,20:o.sha3512,21:o.sha3384,22:o.sha3256,23:o.sha3224,24:o.shake128,25:o.shake256,26:o.keccak224,27:o.keccak256,28:o.keccak384,29:o.keccak512,34:o.murmur3128,35:o.murmur332,86:o.dblSha2256},o.addBlake(a.functions),a.validate=async(e,t)=>{const n=await a(e,s.decode(t).name);return 0===i.compare(t,n)},e.exports=a},"0eff":function(e,t,n){"use strict";const i=n("c449"),r=n("ec12"),{Buffer:s}=n("b639");class o{constructor(e,t,n){if(!n)throw new Error("A link requires a cid to point to");Object.defineProperties(this,{Name:{value:e||"",writable:!1,enumerable:!0},Tsize:{value:t,writable:!1,enumerable:!0},Hash:{value:new i(n),writable:!1,enumerable:!0},_nameBuf:{value:null,writable:!0,enumerable:!1}})}toString(){return`DAGLink <${this.Hash.toBaseEncodedString()} - name: "${this.Name}", size: ${this.Tsize}>`}toJSON(){return this._json||(this._json=Object.freeze({name:this.Name,size:this.Tsize,cid:this.Hash.toBaseEncodedString()})),Object.assign({},this._json)}get nameAsBuffer(){return null!==this._nameBuf||(this._nameBuf=s.from(this.Name)),this._nameBuf}}e.exports=r(o,{className:"DAGLink",symbolName:"@ipld/js-ipld-dag-pb/daglink"})},"0f5d":function(e,t,n){const{Buffer:i}=n("b639"),r=n("3301");var s="0".charCodeAt(0),o=i.from("ustar\0","binary"),a=i.from("ustar ","binary"),c=i.from(" \0","binary"),l=257,u=263,h=function(e,t,n){return"number"!==typeof e?n:(e=~~e,e>=t?t:e>=0?e:(e+=t,e>=0?e:0))},f=function(e){switch(e){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},d=function(e,t,n,i){for(;n0;r--){var s=e.get(r);t?i.push(s):n&&0===s?i.push(0):n?(n=!1,i.push(256-s)):i.push(255-s)}var o=0,a=i.length;for(r=0;r{if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}},"0fc0":function(e,t,n){"use strict";const i=n("ec12"),{Buffer:r}=n("b639"),s=n("23bc"),o=n("0eff"),{serializeDAGNode:a}=n("f140"),c=n("adf6"),l=n("4706"),u=n("3e7a");class h{constructor(e,t=[],n=null){if(e||(e=r.alloc(0)),"string"===typeof e&&(e=r.from(e)),!r.isBuffer(e))throw new Error("Passed 'data' is not a buffer or a string!");if(null!==n&&"number"!==typeof n)throw new Error("Passed 'serializedSize' must be a number!");t=t.map(e=>o.isDAGLink(e)?e:o.util.createDagLinkFromB58EncodedHash(e)),s(t),Object.defineProperties(this,{Data:{value:e,writable:!1,enumerable:!0},Links:{value:t,writable:!1,enumerable:!0},_serializedSize:{value:n,writable:!0,enumerable:!1},_size:{value:null,writable:!0,enumerable:!1}})}toJSON(){return this._json||(this._json=Object.freeze({data:this.Data,links:this.Links.map(e=>e.toJSON()),size:this.size})),Object.assign({},this._json)}toString(){return`DAGNode `}_invalidateCached(){this._serializedSize=null,this._size=null}addLink(e){return this._invalidateCached(),l(this,e)}rmLink(e){return this._invalidateCached(),u(this,e)}toDAGLink(e){return c(this,e)}serialize(){return a(this)}get size(){return null===this._size&&(null===this._serializedSize&&(this._serializedSize=this.serialize().length),this._size=this.Links.reduce((e,t)=>e+t.Tsize,this._serializedSize)),this._size}set size(e){throw new Error("Can't set property: 'size' is immutable")}}e.exports=i(h,{className:"DAGNode",symbolName:"@ipld/js-ipld-dag-pb/dagnode"})},"0fcf":function(e,t,n){"use strict";const i=n("b6aa"),{Blob:r}=n("4196"),s=n("a127"),o=n("6017"),{isBytes:a,isBlob:c}=n("abb1");async function l(e){if(a(e)||"string"===typeof e||e instanceof String)return new r([e]);if(c(e))return e;if("function"===typeof e.getReader&&(e=o(e)),e[Symbol.iterator]||e[Symbol.asyncIterator]){const t=s(e),{value:n,done:i}=await t.peek();if(i)return u(t);if(t.push(n),Number.isInteger(n))return u(t);if(a(n)||"string"===typeof n||n instanceof String)return u(t)}throw i(new Error("Unexpected input: "+e),"ERR_UNEXPECTED_INPUT")}async function u(e){const t=[];for await(const n of e)t.push(n);return new r(t)}e.exports=l},1175:function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("e03b"),s=r,o=r.v4,a=r.v6,c=function(e,t,n){var r;if(n=~~n,o(e))r=t||i.alloc(n+4),e.split(/\./g).map((function(e){r[n++]=255&parseInt(e,10)}));else if(a(e)){var s,l=e.split(":",8);for(s=0;s0;s--)f.push("0");l.splice.apply(l,f)}for(r=t||i.alloc(n+16),s=0;s>8&255,r[n++]=255&d}}if(!r)throw Error("Invalid ip address: "+e);return r},l=function(e,t,n){t=~~t,n=n||e.length-t;var i,r=[];if(4===n){for(let i=0;iasync(t,n,r,o={})=>{"string"!==typeof r&&(o=r||{},r=null);const a=await e.post("key/import",{timeout:o.timeout,signal:o.signal,searchParams:s({arg:t,pem:n,password:r,...o}),headers:o.headers}),c=await a.json();return i(c)})},"12a6":function(e,t,n){"use strict";const i=n("c449"),r=n("2054"),s=n("7766"),o=n("9878"),a=n("15e4");e.exports=o(e=>async function*(t,n={}){t=Array.isArray(t)?t:[t];const o=await e.post("dht/provide",{timeout:n.timeout,signal:n.signal,searchParams:a({arg:t.map(e=>new i(e).toString()),...n}),headers:n.headers});for await(let e of o.ndjson())e=s(e),e.id=new i(e.id),e.responses?e.responses=e.responses.map(({ID:e,Addrs:t})=>({id:e,addrs:(t||[]).map(e=>r(e))})):e.responses=[],yield e})},"13c8":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("c8f6"),s=45569,o=45633,a={init:r.blake2bInit,update:r.blake2bUpdate,digest:r.blake2bFinal},c={init:r.blake2sInit,update:r.blake2sUpdate,digest:r.blake2sFinal},l=(e,t)=>async n=>{const r=t.init(e,null);return t.update(r,n),i.from(t.digest(r))};e.exports=e=>{for(let t=0;t<64;t++)e[s+t]=l(t+1,a);for(let t=0;t<32;t++)e[o+t]=l(t+1,c)}},1468:function(e,t){var n=1e3,i=60*n,r=60*i,s=24*r,o=7*s,a=365.25*s;function c(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var c=parseFloat(t[1]),l=(t[2]||"ms").toLowerCase();switch(l){case"years":case"year":case"yrs":case"yr":case"y":return c*a;case"weeks":case"week":case"w":return c*o;case"days":case"day":case"d":return c*s;case"hours":case"hour":case"hrs":case"hr":case"h":return c*r;case"minutes":case"minute":case"mins":case"min":case"m":return c*i;case"seconds":case"second":case"secs":case"sec":case"s":return c*n;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}}}function l(e){var t=Math.abs(e);return t>=s?Math.round(e/s)+"d":t>=r?Math.round(e/r)+"h":t>=i?Math.round(e/i)+"m":t>=n?Math.round(e/n)+"s":e+"ms"}function u(e){var t=Math.abs(e);return t>=s?h(e,t,s,"day"):t>=r?h(e,t,r,"hour"):t>=i?h(e,t,i,"minute"):t>=n?h(e,t,n,"second"):e+" ms"}function h(e,t,n,i){var r=t>=1.5*n;return Math.round(e/n)+" "+i+(r?"s":"")}e.exports=function(e,t){t=t||{};var n=typeof e;if("string"===n&&e.length>0)return c(e);if("number"===n&&isFinite(e))return t.long?u(e):l(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},"14c3":function(e,t,n){var i=n("c6b6"),r=n("9263");e.exports=function(e,t){var n=e.exec;if("function"===typeof n){var s=n.call(e,t);if("object"!==typeof s)throw TypeError("RegExp exec method returned something other than an Object or null");return s}if("RegExp"!==i(e))throw TypeError("RegExp#exec called on incompatible receiver");return r.call(e,t)}},"14ec":function(e,t,n){var i=n("8327");function r(e,t,n){var i=e[t]+e[n],r=e[t+1]+e[n+1];i>=4294967296&&r++,e[t]=i,e[t+1]=r}function s(e,t,n,i){var r=e[t]+n;n<0&&(r+=4294967296);var s=e[t+1]+i;r>=4294967296&&s++,e[t]=r,e[t+1]=s}function o(e,t){return e[t]^e[t+1]<<8^e[t+2]<<16^e[t+3]<<24}function a(e,t,n,i,o,a){var c=f[o],l=f[o+1],u=f[a],d=f[a+1];r(h,e,t),s(h,e,c,l);var p=h[i]^h[e],g=h[i+1]^h[e+1];h[i]=g,h[i+1]=p,r(h,n,i),p=h[t]^h[n],g=h[t+1]^h[n+1],h[t]=p>>>24^g<<8,h[t+1]=g>>>24^p<<8,r(h,e,t),s(h,e,u,d),p=h[i]^h[e],g=h[i+1]^h[e+1],h[i]=p>>>16^g<<16,h[i+1]=g>>>16^p<<16,r(h,n,i),p=h[t]^h[n],g=h[t+1]^h[n+1],h[t]=g>>>31^p<<1,h[t+1]=p>>>31^g<<1}var c=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),l=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],u=new Uint8Array(l.map((function(e){return 2*e}))),h=new Uint32Array(32),f=new Uint32Array(32);function d(e,t){var n=0;for(n=0;n<16;n++)h[n]=e.h[n],h[n+16]=c[n];for(h[24]=h[24]^e.t,h[25]=h[25]^e.t/4294967296,t&&(h[28]=~h[28],h[29]=~h[29]),n=0;n<32;n++)f[n]=o(e.b,4*n);for(n=0;n<12;n++)a(0,8,16,24,u[16*n+0],u[16*n+1]),a(2,10,18,26,u[16*n+2],u[16*n+3]),a(4,12,20,28,u[16*n+4],u[16*n+5]),a(6,14,22,30,u[16*n+6],u[16*n+7]),a(0,10,20,30,u[16*n+8],u[16*n+9]),a(2,12,22,24,u[16*n+10],u[16*n+11]),a(4,14,16,26,u[16*n+12],u[16*n+13]),a(6,8,18,28,u[16*n+14],u[16*n+15]);for(n=0;n<16;n++)e.h[n]=e.h[n]^h[n]^h[n+16]}function p(e,t){if(0===e||e>64)throw new Error("Illegal output length, expected 0 < length <= 64");if(t&&t.length>64)throw new Error("Illegal key, expected Uint8Array with 0 < length <= 64");for(var n={b:new Uint8Array(128),h:new Uint32Array(16),t:0,c:0,outlen:e},i=0;i<16;i++)n.h[i]=c[i];var r=t?t.length:0;return n.h[0]^=16842752^r<<8^e,t&&(g(n,t),n.c=128),n}function g(e,t){for(var n=0;n>2]>>8*(3&n);return t}function v(e,t,n){n=n||64,e=i.normalizeInput(e);var r=p(n,t);return g(r,e),m(r)}function b(e,t,n){var r=v(e,t,n);return i.toHex(r)}e.exports={blake2b:v,blake2bHex:b,blake2bInit:p,blake2bUpdate:g,blake2bFinal:m}},"15e4":function(e,t,n){"use strict";const i=n("257d"),r=n("82ad");e.exports=({arg:e,searchParams:t,hashAlg:n,mtime:s,mode:o,...a}={})=>{t&&(a={...a,...t}),n&&(a.hash=n),null!=s&&(s=r(s),a.mtime=s.secs,a.mtimeNsecs=s.nsecs),null!=o&&(a.mode=i(o)),a.timeout&&!isNaN(a.timeout)&&(a.timeout=a.timeout+"ms"),void 0===e||null===e?e=[]:Array.isArray(e)||(e=[e]);const c=new URLSearchParams(a);return e.forEach(e=>c.append("arg",e)),c}},"15f7":function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async(t,n={})=>{t=Array.isArray(t)?t:[t];const i=await e.post("swarm/disconnect",{timeout:n.timeout,signal:n.signal,searchParams:r({arg:t.map(e=>""+e),...n}),headers:n.headers}),{Strings:s}=await i.json();return s||[]})},"16af":function(e,t,n){"use strict";const{URLWithLegacySupport:i,format:r,URLSearchParams:s,defaultBase:o}=n("1f0b"),a=n("3d5e");e.exports={URL:i,URLSearchParams:s,format:r,relative:a,defaultBase:o}},"17b2":function(e,t,n){"use strict";const i=n("cfab"),r={};for(const[s,o]of Object.entries(i))void 0===r[o]&&(r[o]=s);e.exports=Object.freeze(r)},"19aa":function(e,t){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},"1bc1":function(e,t,n){"use strict";const i=(e,t,n)=>{const i={};for(let l=0;l=8&&(o-=8,s[c++]=255&a>>o)}if(o>=n||255&a<<8-o)throw new SyntaxError("Unexpected end of data");return s},r=(e,t,n)=>{const i="="===t[t.length-1],r=(1<n)o-=n,s+=t[r&a>>o]}if(o&&(s+=t[r&a<t=>({encode(n){return r(n,t,e)},decode(n){return i(n,t,e)}})},"1be4":function(e,t,n){var i=n("d066");e.exports=i("document","documentElement")},"1c0b":function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},"1c13":function(e,t,n){"use strict";const i=n("2612"),{Buffer:r}=n("b639");function s(e){return parseInt(e.toString("hex"),16)}function o(e){let t=e.toString(16);return t.length%2===1&&(t="0"+t),r.from(t,"hex")}function a(e){return r.from(i.encode(s(e)))}function c(e){return o(i.decode(e))}function l(e){return r.from(i.encode(e))}e.exports={numberToBuffer:o,bufferToNumber:s,varintBufferEncode:a,varintBufferDecode:c,varintEncode:l}},"1c55":function(e,t,n){(function(i,r){var s; +/** + * [js-sha3]{@link https://github.com/emn178/js-sha3} + * + * @version 0.8.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2015-2018 + * @license MIT + */(function(){"use strict";var o="input is invalid type",a="finalize already called",c="object"===typeof window,l=c?window:{};l.JS_SHA3_NO_WINDOW&&(c=!1);var u=!c&&"object"===typeof self,h=!l.JS_SHA3_NO_NODE_JS&&"object"===typeof i&&i.versions&&i.versions.node;h?l=r:u&&(l=self);var f=!l.JS_SHA3_NO_COMMON_JS&&"object"===typeof e&&e.exports,d=n("3c35"),p=!l.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!==typeof ArrayBuffer,g="0123456789abcdef".split(""),m=[31,7936,2031616,520093696],v=[4,1024,262144,67108864],b=[1,256,65536,16777216],w=[6,1536,393216,100663296],y=[0,8,16,24],A=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],E=[224,256,384,512],C=[128,256],F=["hex","buffer","arrayBuffer","array","digest"],k={128:168,256:136};!l.JS_SHA3_NO_NODE_JS&&Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),!p||!l.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(e){return"object"===typeof e&&e.buffer&&e.buffer.constructor===ArrayBuffer});for(var S=function(e,t,n){return function(i){return new W(e,t,e).update(i)[n]()}},x=function(e,t,n){return function(i,r){return new W(e,t,r).update(i)[n]()}},_=function(e,t,n){return function(t,i,r,s){return M["cshake"+e].update(t,i,r,s)[n]()}},B=function(e,t,n){return function(t,i,r,s){return M["kmac"+e].update(t,i,r,s)[n]()}},$=function(e,t,n,i){for(var r=0;r>5,this.byteCount=this.blockCount<<2,this.outputBlocks=n>>5,this.extraBytes=(31&n)>>3;for(var i=0;i<50;++i)this.s[i]=0}function V(e,t,n){W.call(this,e,t,n)}W.prototype.update=function(e){if(this.finalized)throw new Error(a);var t,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(o);if(null===e)throw new Error(o);if(p&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!Array.isArray(e)&&(!p||!ArrayBuffer.isView(e)))throw new Error(o);t=!0}var i,r,s=this.blocks,c=this.byteCount,l=e.length,u=this.blockCount,h=0,f=this.s;while(h>2]|=e[h]<>2]|=r<>2]|=(192|r>>6)<>2]|=(128|63&r)<=57344?(s[i>>2]|=(224|r>>12)<>2]|=(128|r>>6&63)<>2]|=(128|63&r)<>2]|=(240|r>>18)<>2]|=(128|r>>12&63)<>2]|=(128|r>>6&63)<>2]|=(128|63&r)<=c){for(this.start=i-c,this.block=s[u],i=0;i>=8,n=255&e;while(n>0)r.unshift(n),e>>=8,n=255&e,++i;return t?r.push(i):r.unshift(i),this.update(r),r.length},W.prototype.encodeString=function(e){var t,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(o);if(null===e)throw new Error(o);if(p&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!Array.isArray(e)&&(!p||!ArrayBuffer.isView(e)))throw new Error(o);t=!0}var i=0,r=e.length;if(t)i=r;else for(var s=0;s=57344?i+=3:(a=65536+((1023&a)<<10|1023&e.charCodeAt(++s)),i+=4)}return i+=this.encode(8*i),this.update(e),i},W.prototype.bytepad=function(e,t){for(var n=this.encode(t),i=0;i>2]|=this.padding[3&t],this.lastByteIndex===this.byteCount)for(e[0]=e[n],t=1;t>4&15]+g[15&e]+g[e>>12&15]+g[e>>8&15]+g[e>>20&15]+g[e>>16&15]+g[e>>28&15]+g[e>>24&15];o%t===0&&(G(n),s=0)}return r&&(e=n[s],a+=g[e>>4&15]+g[15&e],r>1&&(a+=g[e>>12&15]+g[e>>8&15]),r>2&&(a+=g[e>>20&15]+g[e>>16&15])),a},W.prototype.arrayBuffer=function(){this.finalize();var e,t=this.blockCount,n=this.s,i=this.outputBlocks,r=this.extraBytes,s=0,o=0,a=this.outputBits>>3;e=r?new ArrayBuffer(i+1<<2):new ArrayBuffer(a);var c=new Uint32Array(e);while(o>8&255,c[e+2]=t>>16&255,c[e+3]=t>>24&255;a%n===0&&G(i)}return s&&(e=a<<2,t=i[o],c[e]=255&t,s>1&&(c[e+1]=t>>8&255),s>2&&(c[e+2]=t>>16&255)),c},V.prototype=new W,V.prototype.finalize=function(){return this.encode(this.outputBits,!0),W.prototype.finalize.call(this)};var G=function(e){var t,n,i,r,s,o,a,c,l,u,h,f,d,p,g,m,v,b,w,y,E,C,F,k,S,x,_,B,$,D,L,T,R,O,M,I,P,N,j,U,H,z,W,V,G,K,Y,q,X,Q,J,Z,ee,te,ne,ie,re,se,oe,ae,ce,le,ue;for(i=0;i<48;i+=2)r=e[0]^e[10]^e[20]^e[30]^e[40],s=e[1]^e[11]^e[21]^e[31]^e[41],o=e[2]^e[12]^e[22]^e[32]^e[42],a=e[3]^e[13]^e[23]^e[33]^e[43],c=e[4]^e[14]^e[24]^e[34]^e[44],l=e[5]^e[15]^e[25]^e[35]^e[45],u=e[6]^e[16]^e[26]^e[36]^e[46],h=e[7]^e[17]^e[27]^e[37]^e[47],f=e[8]^e[18]^e[28]^e[38]^e[48],d=e[9]^e[19]^e[29]^e[39]^e[49],t=f^(o<<1|a>>>31),n=d^(a<<1|o>>>31),e[0]^=t,e[1]^=n,e[10]^=t,e[11]^=n,e[20]^=t,e[21]^=n,e[30]^=t,e[31]^=n,e[40]^=t,e[41]^=n,t=r^(c<<1|l>>>31),n=s^(l<<1|c>>>31),e[2]^=t,e[3]^=n,e[12]^=t,e[13]^=n,e[22]^=t,e[23]^=n,e[32]^=t,e[33]^=n,e[42]^=t,e[43]^=n,t=o^(u<<1|h>>>31),n=a^(h<<1|u>>>31),e[4]^=t,e[5]^=n,e[14]^=t,e[15]^=n,e[24]^=t,e[25]^=n,e[34]^=t,e[35]^=n,e[44]^=t,e[45]^=n,t=c^(f<<1|d>>>31),n=l^(d<<1|f>>>31),e[6]^=t,e[7]^=n,e[16]^=t,e[17]^=n,e[26]^=t,e[27]^=n,e[36]^=t,e[37]^=n,e[46]^=t,e[47]^=n,t=u^(r<<1|s>>>31),n=h^(s<<1|r>>>31),e[8]^=t,e[9]^=n,e[18]^=t,e[19]^=n,e[28]^=t,e[29]^=n,e[38]^=t,e[39]^=n,e[48]^=t,e[49]^=n,p=e[0],g=e[1],K=e[11]<<4|e[10]>>>28,Y=e[10]<<4|e[11]>>>28,B=e[20]<<3|e[21]>>>29,$=e[21]<<3|e[20]>>>29,ae=e[31]<<9|e[30]>>>23,ce=e[30]<<9|e[31]>>>23,z=e[40]<<18|e[41]>>>14,W=e[41]<<18|e[40]>>>14,O=e[2]<<1|e[3]>>>31,M=e[3]<<1|e[2]>>>31,m=e[13]<<12|e[12]>>>20,v=e[12]<<12|e[13]>>>20,q=e[22]<<10|e[23]>>>22,X=e[23]<<10|e[22]>>>22,D=e[33]<<13|e[32]>>>19,L=e[32]<<13|e[33]>>>19,le=e[42]<<2|e[43]>>>30,ue=e[43]<<2|e[42]>>>30,te=e[5]<<30|e[4]>>>2,ne=e[4]<<30|e[5]>>>2,I=e[14]<<6|e[15]>>>26,P=e[15]<<6|e[14]>>>26,b=e[25]<<11|e[24]>>>21,w=e[24]<<11|e[25]>>>21,Q=e[34]<<15|e[35]>>>17,J=e[35]<<15|e[34]>>>17,T=e[45]<<29|e[44]>>>3,R=e[44]<<29|e[45]>>>3,k=e[6]<<28|e[7]>>>4,S=e[7]<<28|e[6]>>>4,ie=e[17]<<23|e[16]>>>9,re=e[16]<<23|e[17]>>>9,N=e[26]<<25|e[27]>>>7,j=e[27]<<25|e[26]>>>7,y=e[36]<<21|e[37]>>>11,E=e[37]<<21|e[36]>>>11,Z=e[47]<<24|e[46]>>>8,ee=e[46]<<24|e[47]>>>8,V=e[8]<<27|e[9]>>>5,G=e[9]<<27|e[8]>>>5,x=e[18]<<20|e[19]>>>12,_=e[19]<<20|e[18]>>>12,se=e[29]<<7|e[28]>>>25,oe=e[28]<<7|e[29]>>>25,U=e[38]<<8|e[39]>>>24,H=e[39]<<8|e[38]>>>24,C=e[48]<<14|e[49]>>>18,F=e[49]<<14|e[48]>>>18,e[0]=p^~m&b,e[1]=g^~v&w,e[10]=k^~x&B,e[11]=S^~_&$,e[20]=O^~I&N,e[21]=M^~P&j,e[30]=V^~K&q,e[31]=G^~Y&X,e[40]=te^~ie&se,e[41]=ne^~re&oe,e[2]=m^~b&y,e[3]=v^~w&E,e[12]=x^~B&D,e[13]=_^~$&L,e[22]=I^~N&U,e[23]=P^~j&H,e[32]=K^~q&Q,e[33]=Y^~X&J,e[42]=ie^~se&ae,e[43]=re^~oe&ce,e[4]=b^~y&C,e[5]=w^~E&F,e[14]=B^~D&T,e[15]=$^~L&R,e[24]=N^~U&z,e[25]=j^~H&W,e[34]=q^~Q&Z,e[35]=X^~J&ee,e[44]=se^~ae&le,e[45]=oe^~ce&ue,e[6]=y^~C&p,e[7]=E^~F&g,e[16]=D^~T&k,e[17]=L^~R&S,e[26]=U^~z&O,e[27]=H^~W&M,e[36]=Q^~Z&V,e[37]=J^~ee&G,e[46]=ae^~le&te,e[47]=ce^~ue&ne,e[8]=C^~p&m,e[9]=F^~g&v,e[18]=T^~k&x,e[19]=R^~S&_,e[28]=z^~O&I,e[29]=W^~M&P,e[38]=Z^~V&K,e[39]=ee^~G&Y,e[48]=le^~te&ie,e[49]=ue^~ne&re,e[0]^=A[i],e[1]^=A[i+1]};if(f)e.exports=M;else{for(P=0;Pasync function(t,n={}){const o=await e.post("dht/findpeer",{timeout:n.timeout,signal:n.signal,searchParams:a({arg:""+(i.isBuffer(t)?new r(t):t),...n}),headers:n.headers});for await(const e of o.ndjson())if(e.Type===c&&e.Responses){const{ID:t,Addrs:n}=e.Responses[0];return{id:t,addrs:(n||[]).map(e=>s(e))}}throw new Error("not found")})},"1c6f":function(e,t,n){"use strict";const{Buffer:i}=n("b639");e.exports=function(e){return{encode(e){return"string"===typeof e?i.from(e).toString("hex"):e.toString("hex")},decode(t){for(const n of t)if(e.indexOf(n)<0)throw new Error("invalid base16 character");return i.from(t,"hex")}}}},"1c7e":function(e,t,n){var i=n("b622"),r=i("iterator"),s=!1;try{var o=0,a={next:function(){return{done:!!o++}},return:function(){s=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(c){}e.exports=function(e,t){if(!t&&!s)return!1;var n=!1;try{var i={};i[r]=function(){return{next:function(){return{done:n=!0}}}},e(i)}catch(c){}return n}},"1cba":function(e,t,n){"use strict";const i=n("c449"),{DAGNode:r}=n("8141"),{Buffer:s}=n("b639"),o=n("542b"),a=n("9878"),c=n("15e4"),l=n("74fd"),u=n("91d3");e.exports=a(e=>async(t,n={})=>{let a,h={Data:null,Links:[]};if(s.isBuffer(t))n.enc||(h={Data:t.toString(),Links:[]});else if(r.isDAGNode(t))h={Data:t.Data.toString(),Links:t.Links.map(e=>({Name:e.Name,Hash:e.Hash.toString(),Size:e.Tsize}))};else{if("object"!==typeof t)throw new Error("obj not recognized");h.Data=t.Data.toString(),h.Links=t.Links}s.isBuffer(t)&&n.enc?a=t:(n.enc="json",a=s.from(JSON.stringify(h)));const f=new u,d=l([f.signal,n.signal]),p=await e.post("object/put",{timeout:n.timeout,signal:d,searchParams:c(n),...await o(a,f,n.headers)}),{Hash:g}=await p.json();return new i(g)})},"1cdc":function(e,t,n){var i=n("342f");e.exports=/(iphone|ipod|ipad).*applewebkit/i.test(i)},"1d80":function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},"1da1":function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));n("d3b7");function i(e,t,n,i,r,s,o){try{var a=e[s](o),c=a.value}catch(l){return void n(l)}a.done?t(c):Promise.resolve(c).then(i,r)}function r(e){return function(){var t=this,n=arguments;return new Promise((function(r,s){var o=e.apply(t,n);function a(e){i(o,r,s,a,c,"next",e)}function c(e){i(o,r,s,a,c,"throw",e)}a(void 0)}))}}},"1f0b":function(e,t,n){"use strict";const i=self.location?self.location.protocol+"//"+self.location.host:"",r=self.URL;class s{constructor(e="",t=i){this.super=new r(e,t),this.path=this.pathname+this.search,this.auth=this.username&&this.password?this.username+":"+this.password:null,this.query=this.search&&this.search.startsWith("?")?this.search.slice(1):null}get hash(){return this.super.hash}get host(){return this.super.host}get hostname(){return this.super.hostname}get href(){return this.super.href}get origin(){return this.super.origin}get password(){return this.super.password}get pathname(){return this.super.pathname}get port(){return this.super.port}get protocol(){return this.super.protocol}get search(){return this.super.search}get searchParams(){return this.super.searchParams}get username(){return this.super.username}set hash(e){this.super.hash=e}set host(e){this.super.host=e}set hostname(e){this.super.hostname=e}set href(e){this.super.href=e}set origin(e){this.super.origin=e}set password(e){this.super.password=e}set pathname(e){this.super.pathname=e}set port(e){this.super.port=e}set protocol(e){this.super.protocol=e}set search(e){this.super.search=e}set searchParams(e){this.super.searchParams=e}set username(e){this.super.username=e}createObjectURL(e){return this.super.createObjectURL(e)}revokeObjectURL(e){this.super.revokeObjectURL(e)}toJSON(){return this.super.toJSON()}toString(){return this.super.toString()}format(){return this.toString()}}function o(e){if("string"===typeof e){const t=new r(e);return t.toString()}if(!(e instanceof r)){const t=e.username&&e.password?`${e.username}:${e.password}@`:"",n=e.auth?e.auth+"@":"",i=e.port?":"+e.port:"",r=e.protocol?e.protocol+"//":"",s=e.host||"",o=e.hostname||"",a=e.search||(e.query?"?"+e.query:""),c=e.hash||"",l=e.pathname||"",u=e.path||l+a;return`${r}${t||n}${s||o+i}${u}${c}`}}e.exports={URLWithLegacySupport:s,URLSearchParams:self.URLSearchParams,defaultBase:i,format:o}},"1f2a":function(e,t,n){"use strict";const i=n("c449"),r=n("2054"),s=n("7766"),o=n("9878"),a=n("15e4"),c=n("542b");e.exports=o(e=>async function*(t,n,o={}){const l=await e.post("dht/put",{timeout:o.timeout,signal:o.signal,searchParams:a({arg:t,...o}),...await c(n,o.headers)});for await(let e of l.ndjson())e=s(e),e.id=new i(e.id),e.responses&&(e.responses=e.responses.map(({ID:e,Addrs:t})=>({id:e,addrs:(t||[]).map(e=>r(e))}))),yield e})},"1fb5":function(e,t,n){"use strict";t.byteLength=u,t.toByteArray=f,t.fromByteArray=g;for(var i=[],r=[],s="undefined"!==typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,c=o.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");-1===n&&(n=t);var i=n===t?0:4-n%4;return[n,i]}function u(e){var t=l(e),n=t[0],i=t[1];return 3*(n+i)/4-i}function h(e,t,n){return 3*(t+n)/4-n}function f(e){var t,n,i=l(e),o=i[0],a=i[1],c=new s(h(e,o,a)),u=0,f=a>0?o-4:o;for(n=0;n>16&255,c[u++]=t>>8&255,c[u++]=255&t;return 2===a&&(t=r[e.charCodeAt(n)]<<2|r[e.charCodeAt(n+1)]>>4,c[u++]=255&t),1===a&&(t=r[e.charCodeAt(n)]<<10|r[e.charCodeAt(n+1)]<<4|r[e.charCodeAt(n+2)]>>2,c[u++]=t>>8&255,c[u++]=255&t),c}function d(e){return i[e>>18&63]+i[e>>12&63]+i[e>>6&63]+i[63&e]}function p(e,t,n){for(var i,r=[],s=t;sc?c:a+o));return 1===r?(t=e[n-1],s.push(i[t>>2]+i[t<<4&63]+"==")):2===r&&(t=(e[n-2]<<8)+e[n-1],s.push(i[t>>10]+i[t>>4&63]+i[t<<2&63]+"=")),s.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},2054:function(e,t,n){"use strict";const i=n("ba1f"),{Buffer:r}=n("b639"),s=n("956c"),o=n("2612"),a=n("40ff"),c=n("c449"),l=n("ec12"),u=Symbol.for("nodejs.util.inspect.custom"),h=l.proto((function(e){if(!(this instanceof h))return new h(e);if(null==e&&(e=""),e instanceof r)this.buffer=i.fromBuffer(e);else if("string"===typeof e||e instanceof String){if(e.length>0&&"/"!==e.charAt(0))throw new Error(`multiaddr "${e}" must start with a "/"`);this.buffer=i.fromString(e)}else{if(!(e.buffer&&e.protos&&e.protoCodes))throw new Error("addr must be a string, Buffer, or another Multiaddr");this.buffer=i.fromBuffer(e.buffer)}}),{className:"Multiaddr",symbolName:"@multiformats/js-multiaddr/multiaddr"});h.prototype.toString=function(){return i.bufferToString(this.buffer)},h.prototype.toJSON=h.prototype.toString,h.prototype.toOptions=function(){const e={},t=this.toString().split("/");return e.family="ip4"===t[1]?"ipv4":"ipv6",e.host=t[2],e.transport=t[3],e.port=parseInt(t[4]),e},h.prototype[u]=function(){return""},h.prototype.inspect=function(){return""},h.prototype.protos=function(){return this.protoCodes().map(e=>Object.assign({},s(e)))},h.prototype.protoCodes=function(){const e=[],t=this.buffer;let n=0;while(ne.name)},h.prototype.tuples=function(){return i.bufferToTuples(this.buffer)},h.prototype.stringTuples=function(){const e=i.bufferToTuples(this.buffer);return i.tuplesToStringTuples(e)},h.prototype.encapsulate=function(e){return e=h(e),h(this.toString()+e.toString())},h.prototype.decapsulate=function(e){e=e.toString();const t=this.toString(),n=t.lastIndexOf(e);if(n<0)throw new Error("Address "+this+" does not contain subaddress: "+e);return h(t.slice(0,n))},h.prototype.decapsulateCode=function(e){const t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return h(i.tuplesToBuffer(t.slice(0,n)));return this},h.prototype.getPeerId=function(){let e=null;try{const t=this.stringTuples().filter(e=>{if(e[0]===s.names.ipfs.code)return!0});e=t.pop()[1],e=a.encode("base58btc",new c(e).multihash).toString().slice(1)}catch(t){e=null}return e},h.prototype.getPath=function(){let e=null;try{e=this.stringTuples().filter(e=>{const t=s(e[0]);if(t.path)return!0})[0][1]}catch(t){e=null}return e},h.prototype.equals=function(e){return this.buffer.equals(e.buffer)},h.prototype.nodeAddress=function(){const e=this.protoCodes(),t=this.protoNames(),n=this.toString().split("/").slice(1);if(n.length<4)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6}/{address}/{tcp, udp}/{port}".');if(4!==e[0]&&41!==e[0]&&54!==e[0]&&55!==e[0])throw new Error(`no protocol with name: "'${t[0]}'". Must have a valid family name: "{ip4, ip6, dns4, dns6}".`);if("tcp"!==n[2]&&"udp"!==n[2])throw new Error(`no protocol with name: "'${t[1]}'". Must have a valid transport protocol: "{tcp, udp}".`);return{family:41===e[0]||55===e[0]?6:4,address:n[1],port:parseInt(n[3])}},h.fromNodeAddress=function(e,t){if(!e)throw new Error("requires node address object");if(!t)throw new Error("requires transport protocol");let n;switch(e.family){case"IPv4":n="ip4";break;case"IPv6":n="ip6";break;default:throw Error(`Invalid addr family. Got '${e.family}' instead of 'IPv4' or 'IPv6'`)}return h("/"+[n,e.address,t,e.port].join("/"))},h.prototype.isThinWaistAddress=function(e){const t=(e||this).protos();return 2===t.length&&((4===t[0].code||41===t[0].code)&&(6===t[1].code||273===t[1].code))},h.protocols=s,h.isName=function(e){return!!h.isMultiaddr(e)&&e.protos().some(e=>e.resolvable)},h.resolve=function(e){return h.isMultiaddr(e)&&h.isName(e)?Promise.reject(new Error("not implemented yet")):Promise.reject(Error("not a valid name"))},e.exports=h},2266:function(e,t,n){var i=n("825a"),r=n("e95a"),s=n("50c4"),o=n("0366"),a=n("35a1"),c=n("9bdd"),l=function(e,t){this.stopped=e,this.result=t},u=e.exports=function(e,t,n,u,h){var f,d,p,g,m,v,b,w=o(t,n,u?2:1);if(h)f=e;else{if(d=a(e),"function"!=typeof d)throw TypeError("Target is not iterable");if(r(d)){for(p=0,g=s(e.length);g>p;p++)if(m=u?w(i(b=e[p])[0],b[1]):w(e[p]),m&&m instanceof l)return m;return new l(!1)}f=d.call(e)}v=f.next;while(!(b=v.call(f)).done)if(m=c(f,w,b.value,u),"object"==typeof m&&m&&m instanceof l)return m;return new l(!1)};u.stop=function(e){return new l(!0,e)}},"22b4":function(e,t,n){"use strict";class i{constructor(e,t,n){if(this.tag=e,this.value=t,this.err=n,"number"!==typeof this.tag)throw new Error("Invalid tag type ("+typeof this.tag+")");if(this.tag<0||(0|this.tag)!==this.tag)throw new Error("Tag must be a positive integer: "+this.tag)}toString(){return`${this.tag}(${JSON.stringify(this.value)})`}encodeCBOR(e){return e._pushTag(this.tag),e.pushAny(this.value)}convert(e){var t,n;if(n=null!=e?e[this.tag]:void 0,"function"!==typeof n&&(n=i["_tag"+this.tag],"function"!==typeof n))return this;try{return n.call(i,this.value)}catch(r){return t=r,this.err=t,this}}}e.exports=i},"22bb":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("354e"),s=self.crypto||self.msCrypto,o=async(e,t)=>{if("undefined"===typeof self||!self.crypto&&!self.msCrypto)throw new Error("Please use a browser with webcrypto support and ensure the code has been delivered securely via HTTPS/TLS and run within a Secure Context");switch(t){case"sha1":return i.from(await s.subtle.digest({name:"SHA-1"},e));case"sha2-256":return i.from(await s.subtle.digest({name:"SHA-256"},e));case"sha2-512":return i.from(await s.subtle.digest({name:"SHA-512"},e));case"dbl-sha2-256":{const t=await s.subtle.digest({name:"SHA-256"},e);return i.from(await s.subtle.digest({name:"SHA-256"},t))}default:throw new Error(t+" is not a supported algorithm")}};e.exports={factory:e=>async t=>o(t,e),digest:o,multihashing:async(e,t,n)=>{const i=await o(e,t,n);return r.encode(i,t,n)}}},"23bc":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("7e03"),s=(e,t)=>i.compare(e.nameAsBuffer,t.nameAsBuffer),o=e=>{r.inplace(e,s)};e.exports=o},"23cb":function(e,t,n){var i=n("a691"),r=Math.max,s=Math.min;e.exports=function(e,t){var n=i(e);return n<0?r(n+t,0):s(n,t)}},"23e7":function(e,t,n){var i=n("da84"),r=n("06cf").f,s=n("9112"),o=n("6eeb"),a=n("ce4e"),c=n("e893"),l=n("94ca");e.exports=function(e,t){var n,u,h,f,d,p,g=e.target,m=e.global,v=e.stat;if(u=m?i:v?i[g]||a(g,{}):(i[g]||{}).prototype,u)for(h in t){if(d=t[h],e.noTargetGet?(p=r(u,h),f=p&&p.value):f=u[h],n=l(m?h:g+(v?".":"#")+h,e.forced),!n&&void 0!==f){if(typeof d===typeof f)continue;c(d,f)}(e.sham||f&&f.sham)&&s(d,"sham",!0),o(u,h,d,e)}}},"241c":function(e,t,n){var i=n("ca84"),r=n("7839"),s=r.concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return i(e,s)}},"24d2":function(e,t,n){(function(n,i){"use strict";var r={version:"3.0.0",x86:{},x64:{},inputValidation:!0};function s(e){if(!Array.isArray(e)&&!ArrayBuffer.isView(e))return!1;for(var t=0;t255)return!1;return!0}function o(e,t){return(65535&e)*t+(((e>>>16)*t&65535)<<16)}function a(e,t){return e<>>32-t}function c(e){return e^=e>>>16,e=o(e,2246822507),e^=e>>>13,e=o(e,3266489909),e^=e>>>16,e}function l(e,t){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],t=[t[0]>>>16,65535&t[0],t[1]>>>16,65535&t[1]];var n=[0,0,0,0];return n[3]+=e[3]+t[3],n[2]+=n[3]>>>16,n[3]&=65535,n[2]+=e[2]+t[2],n[1]+=n[2]>>>16,n[2]&=65535,n[1]+=e[1]+t[1],n[0]+=n[1]>>>16,n[1]&=65535,n[0]+=e[0]+t[0],n[0]&=65535,[n[0]<<16|n[1],n[2]<<16|n[3]]}function u(e,t){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],t=[t[0]>>>16,65535&t[0],t[1]>>>16,65535&t[1]];var n=[0,0,0,0];return n[3]+=e[3]*t[3],n[2]+=n[3]>>>16,n[3]&=65535,n[2]+=e[2]*t[3],n[1]+=n[2]>>>16,n[2]&=65535,n[2]+=e[3]*t[2],n[1]+=n[2]>>>16,n[2]&=65535,n[1]+=e[1]*t[3],n[0]+=n[1]>>>16,n[1]&=65535,n[1]+=e[2]*t[2],n[0]+=n[1]>>>16,n[1]&=65535,n[1]+=e[3]*t[1],n[0]+=n[1]>>>16,n[1]&=65535,n[0]+=e[0]*t[3]+e[1]*t[2]+e[2]*t[1]+e[3]*t[0],n[0]&=65535,[n[0]<<16|n[1],n[2]<<16|n[3]]}function h(e,t){return t%=64,32===t?[e[1],e[0]]:t<32?[e[0]<>>32-t,e[1]<>>32-t]:(t-=32,[e[1]<>>32-t,e[0]<>>32-t])}function f(e,t){return t%=64,0===t?e:t<32?[e[0]<>>32-t,e[1]<>>1]),e=u(e,[4283543511,3981806797]),e=d(e,[0,e[0]>>>1]),e=u(e,[3301882366,444984403]),e=d(e,[0,e[0]>>>1]),e}r.x86.hash32=function(e,t){if(r.inputValidation&&!s(e))return i;t=t||0;for(var n=e.length%4,l=e.length-n,u=t,h=0,f=3432918353,d=461845907,p=0;p>>0},r.x86.hash128=function(e,t){if(r.inputValidation&&!s(e))return i;t=t||0;for(var n=e.length%16,l=e.length-n,u=t,h=t,f=t,d=t,p=0,g=0,m=0,v=0,b=597399067,w=2869860233,y=951274213,A=2716044179,E=0;E>>0).toString(16)).slice(-8)+("00000000"+(h>>>0).toString(16)).slice(-8)+("00000000"+(f>>>0).toString(16)).slice(-8)+("00000000"+(d>>>0).toString(16)).slice(-8)},r.x64.hash128=function(e,t){if(r.inputValidation&&!s(e))return i;t=t||0;for(var n=e.length%16,o=e.length-n,a=[0,t],c=[0,t],g=[0,0],m=[0,0],v=[2277735313,289559509],b=[1291169091,658871167],w=0;w>>0).toString(16)).slice(-8)+("00000000"+(a[1]>>>0).toString(16)).slice(-8)+("00000000"+(c[0]>>>0).toString(16)).slice(-8)+("00000000"+(c[1]>>>0).toString(16)).slice(-8)},e.exports&&(t=e.exports=r),t.murmurHash3=r})()},2540:function(e,t){e.exports=e=>{if(e[Symbol.asyncIterator])return e;if(e.getReader)return async function*(){const t=e.getReader();try{while(1){const{done:e,value:n}=await t.read();if(e)return;yield n}}finally{t.releaseLock()}}();throw new Error("unknown stream")}},"257d":function(e,t,n){"use strict";e.exports=e=>{if(void 0!==e&&null!==e)return"string"===typeof e||e instanceof String?e:e.toString(8).padStart(4,"0")}},2612:function(e,t,n){e.exports={encode:n("af3a"),decode:n("fa45"),encodingLength:n("61f1")}},2626:function(e,t,n){"use strict";var i=n("d066"),r=n("9bf2"),s=n("b622"),o=n("83ab"),a=s("species");e.exports=function(e){var t=i(e),n=r.f;o&&t&&!t[a]&&n(t,a,{configurable:!0,get:function(){return this}})}},"26d5":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("354e"),s=self.crypto||self.msCrypto,o=async(e,t)=>{if("undefined"===typeof self||!self.crypto&&!self.msCrypto)throw new Error("Please use a browser with webcrypto support and ensure the code has been delivered securely via HTTPS/TLS and run within a Secure Context");switch(t){case"sha1":return i.from(await s.subtle.digest({name:"SHA-1"},e));case"sha2-256":return i.from(await s.subtle.digest({name:"SHA-256"},e));case"sha2-512":return i.from(await s.subtle.digest({name:"SHA-512"},e));case"dbl-sha2-256":{const t=await s.subtle.digest({name:"SHA-256"},e);return i.from(await s.subtle.digest({name:"SHA-256"},t))}default:throw new Error(t+" is not a supported algorithm")}};e.exports={factory:e=>async t=>o(t,e),digest:o,multihashing:async(e,t,n)=>{const i=await o(e,t,n);return r.encode(i,t,n)}}},"271f":function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async(t={})=>{const n=await e.post("name/pubsub/subs",{timeout:t.timeout,signal:t.signal,searchParams:r(t),headers:t.headers}),i=await n.json();return i.Strings||[]})},"273a":function(e,t,n){"use strict";const{TimeoutError:i,AbortError:r}=n("d2aa"),s=(e,t={})=>{const n=new XMLHttpRequest;n.open(t.method||"GET",e.toString(),!0);const{timeout:s}=t;if(s>0&&s<1/0&&(n.timeout=t.timeout),null!=t.overrideMimeType&&n.overrideMimeType(t.overrideMimeType),t.headers)for(const[i,r]of t.headers.entries())n.setRequestHeader(i,r);return t.signal&&(t.signal.onabort=()=>n.abort()),t.onDownloadProgress&&(n.onprogress=t.onDownloadProgress),t.onUploadProgress&&(n.upload.onprogress=t.onUploadProgress),new Promise((e,s)=>{const c=t=>{switch(t.type){case"error":e(Response.error());break;case"load":e(new a(n.responseURL,n.response,{status:n.status,statusText:n.statusText,headers:o(n.getAllResponseHeaders())}));break;case"timeout":s(new i);break;case"abort":s(new r);break;default:break}};n.onerror=c,n.onload=c,n.ontimeout=c,n.onabort=c,n.send(t.body)})};t.fetch=s,t.Request=Request,t.Headers=Headers;const o=e=>{const t=new Headers;for(const n of e.trim().split(/[\r\n]+/)){const e=n.indexOf(": ");e>0&&t.set(n.slice(0,e),n.slice(e+1))}return t};class a extends Response{constructor(e,t,n){super(t,n),Object.defineProperty(this,"url",{value:e})}}},2877:function(e,t,n){"use strict";function i(e,t,n,i,r,s,o,a){var c,l="function"===typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),s&&(l._scopeId="data-v-"+s),o?(c=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},l._ssrRegister=c):r&&(c=a?function(){r.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(e,t){return c.call(t),u(e,t)}}else{var h=l.beforeCreate;l.beforeCreate=h?[].concat(h,c):[c]}return{exports:e,options:l}}n.d(t,"a",(function(){return i}))},2984:function(e,t,n){"use strict";(function(t){const i=n("63a6"),r="object"===typeof window&&"object"===typeof document&&9===document.nodeType,s=i(),o=r&&!s,a=s&&!r,c=s&&r,l="undefined"!==typeof t&&"undefined"!==typeof t.release&&"node"===t.release.name&&!s,u="function"===typeof importScripts&&"undefined"!==typeof self&&"undefined"!==typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,h="undefined"!==typeof t&&!1;e.exports={isTest:h,isElectron:s,isElectronMain:a,isElectronRenderer:c,isNode:l,isBrowser:o,isWebWorker:u,isEnvWithDom:r}}).call(this,n("4362"))},"2b0e":function(e,t,n){"use strict";n.r(t),function(e){ +/*! + * Vue.js v2.6.12 + * (c) 2014-2020 Evan You + * Released under the MIT License. + */ +var n=Object.freeze({});function i(e){return void 0===e||null===e}function r(e){return void 0!==e&&null!==e}function s(e){return!0===e}function o(e){return!1===e}function a(e){return"string"===typeof e||"number"===typeof e||"symbol"===typeof e||"boolean"===typeof e}function c(e){return null!==e&&"object"===typeof e}var l=Object.prototype.toString;function u(e){return"[object Object]"===l.call(e)}function h(e){return"[object RegExp]"===l.call(e)}function f(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function d(e){return r(e)&&"function"===typeof e.then&&"function"===typeof e.catch}function p(e){return null==e?"":Array.isArray(e)||u(e)&&e.toString===l?JSON.stringify(e,null,2):String(e)}function g(e){var t=parseFloat(e);return isNaN(t)?e:t}function m(e,t){for(var n=Object.create(null),i=e.split(","),r=0;r-1)return e.splice(n,1)}}var w=Object.prototype.hasOwnProperty;function y(e,t){return w.call(e,t)}function A(e){var t=Object.create(null);return function(n){var i=t[n];return i||(t[n]=e(n))}}var E=/-(\w)/g,C=A((function(e){return e.replace(E,(function(e,t){return t?t.toUpperCase():""}))})),F=A((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})),k=/\B([A-Z])/g,S=A((function(e){return e.replace(k,"-$1").toLowerCase()}));function x(e,t){function n(n){var i=arguments.length;return i?i>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n}function _(e,t){return e.bind(t)}var B=Function.prototype.bind?_:x;function $(e,t){t=t||0;var n=e.length-t,i=new Array(n);while(n--)i[n]=e[n+t];return i}function D(e,t){for(var n in t)e[n]=t[n];return e}function L(e){for(var t={},n=0;n0,ne=Z&&Z.indexOf("edge/")>0,ie=(Z&&Z.indexOf("android"),Z&&/iphone|ipad|ipod|ios/.test(Z)||"ios"===J),re=(Z&&/chrome\/\d+/.test(Z),Z&&/phantomjs/.test(Z),Z&&Z.match(/firefox\/(\d+)/)),se={}.watch,oe=!1;if(X)try{var ae={};Object.defineProperty(ae,"passive",{get:function(){oe=!0}}),window.addEventListener("test-passive",null,ae)}catch(Co){}var ce=function(){return void 0===Y&&(Y=!X&&!Q&&"undefined"!==typeof e&&(e["process"]&&"server"===e["process"].env.VUE_ENV)),Y},le=X&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ue(e){return"function"===typeof e&&/native code/.test(e.toString())}var he,fe="undefined"!==typeof Symbol&&ue(Symbol)&&"undefined"!==typeof Reflect&&ue(Reflect.ownKeys);he="undefined"!==typeof Set&&ue(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var de=T,pe=0,ge=function(){this.id=pe++,this.subs=[]};ge.prototype.addSub=function(e){this.subs.push(e)},ge.prototype.removeSub=function(e){b(this.subs,e)},ge.prototype.depend=function(){ge.target&&ge.target.addDep(this)},ge.prototype.notify=function(){var e=this.subs.slice();for(var t=0,n=e.length;t-1)if(s&&!y(r,"default"))o=!1;else if(""===o||o===S(e)){var c=et(String,r.type);(c<0||a0&&(o=xt(o,(t||"")+"_"+n),St(o[0])&&St(l)&&(u[c]=Ee(l.text+o[0].text),o.shift()),u.push.apply(u,o)):a(o)?St(l)?u[c]=Ee(l.text+o):""!==o&&u.push(Ee(o)):St(o)&&St(l)?u[c]=Ee(l.text+o.text):(s(e._isVList)&&r(o.tag)&&i(o.key)&&r(t)&&(o.key="__vlist"+t+"_"+n+"__"),u.push(o)));return u}function _t(e){var t=e.$options.provide;t&&(e._provided="function"===typeof t?t.call(e):t)}function Bt(e){var t=$t(e.$options.inject,e);t&&(Be(!1),Object.keys(t).forEach((function(n){Re(e,n,t[n])})),Be(!0))}function $t(e,t){if(e){for(var n=Object.create(null),i=fe?Reflect.ownKeys(e):Object.keys(e),r=0;r0,o=e?!!e.$stable:!s,a=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(o&&i&&i!==n&&a===i.$key&&!s&&!i.$hasNormal)return i;for(var c in r={},e)e[c]&&"$"!==c[0]&&(r[c]=Rt(t,c,e[c]))}else r={};for(var l in t)l in r||(r[l]=Ot(t,l));return e&&Object.isExtensible(e)&&(e._normalized=r),V(r,"$stable",o),V(r,"$key",a),V(r,"$hasNormal",s),r}function Rt(e,t,n){var i=function(){var e=arguments.length?n.apply(null,arguments):n({});return e=e&&"object"===typeof e&&!Array.isArray(e)?[e]:kt(e),e&&(0===e.length||1===e.length&&e[0].isComment)?void 0:e};return n.proxy&&Object.defineProperty(e,t,{get:i,enumerable:!0,configurable:!0}),i}function Ot(e,t){return function(){return e[t]}}function Mt(e,t){var n,i,s,o,a;if(Array.isArray(e)||"string"===typeof e)for(n=new Array(e.length),i=0,s=e.length;i1?$(n):n;for(var i=$(arguments,1),r='event handler for "'+e+'"',s=0,o=n.length;sdocument.createEvent("Event").timeStamp&&(Yn=function(){return qn.now()})}function Xn(){var e,t;for(Kn=Yn(),Wn=!0,jn.sort((function(e,t){return e.id-t.id})),Vn=0;VnVn&&jn[n].id>e.id)n--;jn.splice(n+1,0,e)}else jn.push(e);zn||(zn=!0,pt(Xn))}}var ti=0,ni=function(e,t,n,i,r){this.vm=e,r&&(e._watcher=this),e._watchers.push(this),i?(this.deep=!!i.deep,this.user=!!i.user,this.lazy=!!i.lazy,this.sync=!!i.sync,this.before=i.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++ti,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new he,this.newDepIds=new he,this.expression="","function"===typeof t?this.getter=t:(this.getter=K(t),this.getter||(this.getter=T)),this.value=this.lazy?void 0:this.get()};ni.prototype.get=function(){var e;ve(this);var t=this.vm;try{e=this.getter.call(t,t)}catch(Co){if(!this.user)throw Co;tt(Co,t,'getter for watcher "'+this.expression+'"')}finally{this.deep&&mt(e),be(),this.cleanupDeps()}return e},ni.prototype.addDep=function(e){var t=e.id;this.newDepIds.has(t)||(this.newDepIds.add(t),this.newDeps.push(e),this.depIds.has(t)||e.addSub(this))},ni.prototype.cleanupDeps=function(){var e=this.deps.length;while(e--){var t=this.deps[e];this.newDepIds.has(t.id)||t.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},ni.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():ei(this)},ni.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||c(e)||this.deep){var t=this.value;if(this.value=e,this.user)try{this.cb.call(this.vm,e,t)}catch(Co){tt(Co,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,e,t)}}},ni.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},ni.prototype.depend=function(){var e=this.deps.length;while(e--)this.deps[e].depend()},ni.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||b(this.vm._watchers,this);var e=this.deps.length;while(e--)this.deps[e].removeSub(this);this.active=!1}};var ii={enumerable:!0,configurable:!0,get:T,set:T};function ri(e,t,n){ii.get=function(){return this[t][n]},ii.set=function(e){this[t][n]=e},Object.defineProperty(e,n,ii)}function si(e){e._watchers=[];var t=e.$options;t.props&&oi(e,t.props),t.methods&&pi(e,t.methods),t.data?ai(e):Te(e._data={},!0),t.computed&&ui(e,t.computed),t.watch&&t.watch!==se&&gi(e,t.watch)}function oi(e,t){var n=e.$options.propsData||{},i=e._props={},r=e.$options._propKeys=[],s=!e.$parent;s||Be(!1);var o=function(s){r.push(s);var o=Xe(s,t,n,e);Re(i,s,o),s in e||ri(e,"_props",s)};for(var a in t)o(a);Be(!0)}function ai(e){var t=e.$options.data;t=e._data="function"===typeof t?ci(t,e):t||{},u(t)||(t={});var n=Object.keys(t),i=e.$options.props,r=(e.$options.methods,n.length);while(r--){var s=n[r];0,i&&y(i,s)||W(s)||ri(e,"_data",s)}Te(t,!0)}function ci(e,t){ve();try{return e.call(t,t)}catch(Co){return tt(Co,t,"data()"),{}}finally{be()}}var li={lazy:!0};function ui(e,t){var n=e._computedWatchers=Object.create(null),i=ce();for(var r in t){var s=t[r],o="function"===typeof s?s:s.get;0,i||(n[r]=new ni(e,o||T,T,li)),r in e||hi(e,r,s)}}function hi(e,t,n){var i=!ce();"function"===typeof n?(ii.get=i?fi(t):di(n),ii.set=T):(ii.get=n.get?i&&!1!==n.cache?fi(t):di(n.get):T,ii.set=n.set||T),Object.defineProperty(e,t,ii)}function fi(e){return function(){var t=this._computedWatchers&&this._computedWatchers[e];if(t)return t.dirty&&t.evaluate(),ge.target&&t.depend(),t.value}}function di(e){return function(){return e.call(this,this)}}function pi(e,t){e.$options.props;for(var n in t)e[n]="function"!==typeof t[n]?T:B(t[n],e)}function gi(e,t){for(var n in t){var i=t[n];if(Array.isArray(i))for(var r=0;r-1)return this;var n=$(arguments,1);return n.unshift(this),"function"===typeof e.install?e.install.apply(e,n):"function"===typeof e&&e.apply(null,n),t.push(e),this}}function ki(e){e.mixin=function(e){return this.options=Ye(this.options,e),this}}function Si(e){e.cid=0;var t=1;e.extend=function(e){e=e||{};var n=this,i=n.cid,r=e._Ctor||(e._Ctor={});if(r[i])return r[i];var s=e.name||n.options.name;var o=function(e){this._init(e)};return o.prototype=Object.create(n.prototype),o.prototype.constructor=o,o.cid=t++,o.options=Ye(n.options,e),o["super"]=n,o.options.props&&xi(o),o.options.computed&&_i(o),o.extend=n.extend,o.mixin=n.mixin,o.use=n.use,j.forEach((function(e){o[e]=n[e]})),s&&(o.options.components[s]=o),o.superOptions=n.options,o.extendOptions=e,o.sealedOptions=D({},o.options),r[i]=o,o}}function xi(e){var t=e.options.props;for(var n in t)ri(e.prototype,"_props",n)}function _i(e){var t=e.options.computed;for(var n in t)hi(e.prototype,n,t[n])}function Bi(e){j.forEach((function(t){e[t]=function(e,n){return n?("component"===t&&u(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&"function"===typeof n&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}}))}function $i(e){return e&&(e.Ctor.options.name||e.tag)}function Di(e,t){return Array.isArray(e)?e.indexOf(t)>-1:"string"===typeof e?e.split(",").indexOf(t)>-1:!!h(e)&&e.test(t)}function Li(e,t){var n=e.cache,i=e.keys,r=e._vnode;for(var s in n){var o=n[s];if(o){var a=$i(o.componentOptions);a&&!t(a)&&Ti(n,s,i,r)}}}function Ti(e,t,n,i){var r=e[t];!r||i&&r.tag===i.tag||r.componentInstance.$destroy(),e[t]=null,b(n,t)}wi(Ci),vi(Ci),Bn(Ci),Tn(Ci),bn(Ci);var Ri=[String,RegExp,Array],Oi={name:"keep-alive",abstract:!0,props:{include:Ri,exclude:Ri,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)Ti(this.cache,e,this.keys)},mounted:function(){var e=this;this.$watch("include",(function(t){Li(e,(function(e){return Di(t,e)}))})),this.$watch("exclude",(function(t){Li(e,(function(e){return!Di(t,e)}))}))},render:function(){var e=this.$slots.default,t=Cn(e),n=t&&t.componentOptions;if(n){var i=$i(n),r=this,s=r.include,o=r.exclude;if(s&&(!i||!Di(s,i))||o&&i&&Di(o,i))return t;var a=this,c=a.cache,l=a.keys,u=null==t.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):t.key;c[u]?(t.componentInstance=c[u].componentInstance,b(l,u),l.push(u)):(c[u]=t,l.push(u),this.max&&l.length>parseInt(this.max)&&Ti(c,l[0],l,this._vnode)),t.data.keepAlive=!0}return t||e&&e[0]}},Mi={KeepAlive:Oi};function Ii(e){var t={get:function(){return H}};Object.defineProperty(e,"config",t),e.util={warn:de,extend:D,mergeOptions:Ye,defineReactive:Re},e.set=Oe,e.delete=Me,e.nextTick=pt,e.observable=function(e){return Te(e),e},e.options=Object.create(null),j.forEach((function(t){e.options[t+"s"]=Object.create(null)})),e.options._base=e,D(e.options.components,Mi),Fi(e),ki(e),Si(e),Bi(e)}Ii(Ci),Object.defineProperty(Ci.prototype,"$isServer",{get:ce}),Object.defineProperty(Ci.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Ci,"FunctionalRenderContext",{value:Qt}),Ci.version="2.6.12";var Pi=m("style,class"),Ni=m("input,textarea,option,select,progress"),ji=function(e,t,n){return"value"===n&&Ni(e)&&"button"!==t||"selected"===n&&"option"===e||"checked"===n&&"input"===e||"muted"===n&&"video"===e},Ui=m("contenteditable,draggable,spellcheck"),Hi=m("events,caret,typing,plaintext-only"),zi=function(e,t){return Yi(t)||"false"===t?"false":"contenteditable"===e&&Hi(t)?t:"true"},Wi=m("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Vi="http://www.w3.org/1999/xlink",Gi=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},Ki=function(e){return Gi(e)?e.slice(6,e.length):""},Yi=function(e){return null==e||!1===e};function qi(e){var t=e.data,n=e,i=e;while(r(i.componentInstance))i=i.componentInstance._vnode,i&&i.data&&(t=Xi(i.data,t));while(r(n=n.parent))n&&n.data&&(t=Xi(t,n.data));return Qi(t.staticClass,t.class)}function Xi(e,t){return{staticClass:Ji(e.staticClass,t.staticClass),class:r(e.class)?[e.class,t.class]:t.class}}function Qi(e,t){return r(e)||r(t)?Ji(e,Zi(t)):""}function Ji(e,t){return e?t?e+" "+t:e:t||""}function Zi(e){return Array.isArray(e)?er(e):c(e)?tr(e):"string"===typeof e?e:""}function er(e){for(var t,n="",i=0,s=e.length;i-1?ar[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:ar[e]=/HTMLUnknownElement/.test(t.toString())}var lr=m("text,number,password,search,email,tel,url");function ur(e){if("string"===typeof e){var t=document.querySelector(e);return t||document.createElement("div")}return e}function hr(e,t){var n=document.createElement(e);return"select"!==e||t.data&&t.data.attrs&&void 0!==t.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n}function fr(e,t){return document.createElementNS(nr[e],t)}function dr(e){return document.createTextNode(e)}function pr(e){return document.createComment(e)}function gr(e,t,n){e.insertBefore(t,n)}function mr(e,t){e.removeChild(t)}function vr(e,t){e.appendChild(t)}function br(e){return e.parentNode}function wr(e){return e.nextSibling}function yr(e){return e.tagName}function Ar(e,t){e.textContent=t}function Er(e,t){e.setAttribute(t,"")}var Cr=Object.freeze({createElement:hr,createElementNS:fr,createTextNode:dr,createComment:pr,insertBefore:gr,removeChild:mr,appendChild:vr,parentNode:br,nextSibling:wr,tagName:yr,setTextContent:Ar,setStyleScope:Er}),Fr={create:function(e,t){kr(t)},update:function(e,t){e.data.ref!==t.data.ref&&(kr(e,!0),kr(t))},destroy:function(e){kr(e,!0)}};function kr(e,t){var n=e.data.ref;if(r(n)){var i=e.context,s=e.componentInstance||e.elm,o=i.$refs;t?Array.isArray(o[n])?b(o[n],s):o[n]===s&&(o[n]=void 0):e.data.refInFor?Array.isArray(o[n])?o[n].indexOf(s)<0&&o[n].push(s):o[n]=[s]:o[n]=s}}var Sr=new we("",{},[]),xr=["create","activate","update","remove","destroy"];function _r(e,t){return e.key===t.key&&(e.tag===t.tag&&e.isComment===t.isComment&&r(e.data)===r(t.data)&&Br(e,t)||s(e.isAsyncPlaceholder)&&e.asyncFactory===t.asyncFactory&&i(t.asyncFactory.error))}function Br(e,t){if("input"!==e.tag)return!0;var n,i=r(n=e.data)&&r(n=n.attrs)&&n.type,s=r(n=t.data)&&r(n=n.attrs)&&n.type;return i===s||lr(i)&&lr(s)}function $r(e,t,n){var i,s,o={};for(i=t;i<=n;++i)s=e[i].key,r(s)&&(o[s]=i);return o}function Dr(e){var t,n,o={},c=e.modules,l=e.nodeOps;for(t=0;tg?(h=i(n[b+1])?null:n[b+1].elm,C(e,h,n,p,b,s)):p>b&&k(t,f,g)}function _(e,t,n,i){for(var s=n;s-1?Hr(e,t,n):Wi(t)?Yi(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):Ui(t)?e.setAttribute(t,zi(t,n)):Gi(t)?Yi(n)?e.removeAttributeNS(Vi,Ki(t)):e.setAttributeNS(Vi,t,n):Hr(e,t,n)}function Hr(e,t,n){if(Yi(n))e.removeAttribute(t);else{if(ee&&!te&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){var i=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",i)};e.addEventListener("input",i),e.__ieph=!0}e.setAttribute(t,n)}}var zr={create:jr,update:jr};function Wr(e,t){var n=t.elm,s=t.data,o=e.data;if(!(i(s.staticClass)&&i(s.class)&&(i(o)||i(o.staticClass)&&i(o.class)))){var a=qi(t),c=n._transitionClasses;r(c)&&(a=Ji(a,Zi(c))),a!==n._prevClass&&(n.setAttribute("class",a),n._prevClass=a)}}var Vr,Gr={create:Wr,update:Wr},Kr="__r",Yr="__c";function qr(e){if(r(e[Kr])){var t=ee?"change":"input";e[t]=[].concat(e[Kr],e[t]||[]),delete e[Kr]}r(e[Yr])&&(e.change=[].concat(e[Yr],e.change||[]),delete e[Yr])}function Xr(e,t,n){var i=Vr;return function r(){var s=t.apply(null,arguments);null!==s&&Zr(e,r,n,i)}}var Qr=ot&&!(re&&Number(re[1])<=53);function Jr(e,t,n,i){if(Qr){var r=Kn,s=t;t=s._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=r||e.timeStamp<=0||e.target.ownerDocument!==document)return s.apply(this,arguments)}}Vr.addEventListener(e,t,oe?{capture:n,passive:i}:n)}function Zr(e,t,n,i){(i||Vr).removeEventListener(e,t._wrapper||t,n)}function es(e,t){if(!i(e.data.on)||!i(t.data.on)){var n=t.data.on||{},r=e.data.on||{};Vr=t.elm,qr(n),yt(n,r,Jr,Zr,Xr,t.context),Vr=void 0}}var ts,ns={create:es,update:es};function is(e,t){if(!i(e.data.domProps)||!i(t.data.domProps)){var n,s,o=t.elm,a=e.data.domProps||{},c=t.data.domProps||{};for(n in r(c.__ob__)&&(c=t.data.domProps=D({},c)),a)n in c||(o[n]="");for(n in c){if(s=c[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),s===a[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){o._value=s;var l=i(s)?"":String(s);rs(o,l)&&(o.value=l)}else if("innerHTML"===n&&rr(o.tagName)&&i(o.innerHTML)){ts=ts||document.createElement("div"),ts.innerHTML=""+s+"";var u=ts.firstChild;while(o.firstChild)o.removeChild(o.firstChild);while(u.firstChild)o.appendChild(u.firstChild)}else if(s!==a[n])try{o[n]=s}catch(Co){}}}}function rs(e,t){return!e.composing&&("OPTION"===e.tagName||ss(e,t)||os(e,t))}function ss(e,t){var n=!0;try{n=document.activeElement!==e}catch(Co){}return n&&e.value!==t}function os(e,t){var n=e.value,i=e._vModifiers;if(r(i)){if(i.number)return g(n)!==g(t);if(i.trim)return n.trim()!==t.trim()}return n!==t}var as={create:is,update:is},cs=A((function(e){var t={},n=/;(?![^(]*\))/g,i=/:(.+)/;return e.split(n).forEach((function(e){if(e){var n=e.split(i);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}));function ls(e){var t=us(e.style);return e.staticStyle?D(e.staticStyle,t):t}function us(e){return Array.isArray(e)?L(e):"string"===typeof e?cs(e):e}function hs(e,t){var n,i={};if(t){var r=e;while(r.componentInstance)r=r.componentInstance._vnode,r&&r.data&&(n=ls(r.data))&&D(i,n)}(n=ls(e.data))&&D(i,n);var s=e;while(s=s.parent)s.data&&(n=ls(s.data))&&D(i,n);return i}var fs,ds=/^--/,ps=/\s*!important$/,gs=function(e,t,n){if(ds.test(t))e.style.setProperty(t,n);else if(ps.test(n))e.style.setProperty(S(t),n.replace(ps,""),"important");else{var i=vs(t);if(Array.isArray(n))for(var r=0,s=n.length;r-1?t.split(ys).forEach((function(t){return e.classList.add(t)})):e.classList.add(t);else{var n=" "+(e.getAttribute("class")||"")+" ";n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function Es(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(ys).forEach((function(t){return e.classList.remove(t)})):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{var n=" "+(e.getAttribute("class")||"")+" ",i=" "+t+" ";while(n.indexOf(i)>=0)n=n.replace(i," ");n=n.trim(),n?e.setAttribute("class",n):e.removeAttribute("class")}}function Cs(e){if(e){if("object"===typeof e){var t={};return!1!==e.css&&D(t,Fs(e.name||"v")),D(t,e),t}return"string"===typeof e?Fs(e):void 0}}var Fs=A((function(e){return{enterClass:e+"-enter",enterToClass:e+"-enter-to",enterActiveClass:e+"-enter-active",leaveClass:e+"-leave",leaveToClass:e+"-leave-to",leaveActiveClass:e+"-leave-active"}})),ks=X&&!te,Ss="transition",xs="animation",_s="transition",Bs="transitionend",$s="animation",Ds="animationend";ks&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(_s="WebkitTransition",Bs="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&($s="WebkitAnimation",Ds="webkitAnimationEnd"));var Ls=X?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function Ts(e){Ls((function(){Ls(e)}))}function Rs(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),As(e,t))}function Os(e,t){e._transitionClasses&&b(e._transitionClasses,t),Es(e,t)}function Ms(e,t,n){var i=Ps(e,t),r=i.type,s=i.timeout,o=i.propCount;if(!r)return n();var a=r===Ss?Bs:Ds,c=0,l=function(){e.removeEventListener(a,u),n()},u=function(t){t.target===e&&++c>=o&&l()};setTimeout((function(){c0&&(n=Ss,u=o,h=s.length):t===xs?l>0&&(n=xs,u=l,h=c.length):(u=Math.max(o,l),n=u>0?o>l?Ss:xs:null,h=n?n===Ss?s.length:c.length:0);var f=n===Ss&&Is.test(i[_s+"Property"]);return{type:n,timeout:u,propCount:h,hasTransform:f}}function Ns(e,t){while(e.length1}function Vs(e,t){!0!==t.data.show&&Us(t)}var Gs=X?{create:Vs,activate:Vs,remove:function(e,t){!0!==e.data.show?Hs(e,t):t()}}:{},Ks=[zr,Gr,ns,as,ws,Gs],Ys=Ks.concat(Nr),qs=Dr({nodeOps:Cr,modules:Ys});te&&document.addEventListener("selectionchange",(function(){var e=document.activeElement;e&&e.vmodel&&io(e,"input")}));var Xs={inserted:function(e,t,n,i){"select"===n.tag?(i.elm&&!i.elm._vOptions?At(n,"postpatch",(function(){Xs.componentUpdated(e,t,n)})):Qs(e,t,n.context),e._vOptions=[].map.call(e.options,eo)):("textarea"===n.tag||lr(e.type))&&(e._vModifiers=t.modifiers,t.modifiers.lazy||(e.addEventListener("compositionstart",to),e.addEventListener("compositionend",no),e.addEventListener("change",no),te&&(e.vmodel=!0)))},componentUpdated:function(e,t,n){if("select"===n.tag){Qs(e,t,n.context);var i=e._vOptions,r=e._vOptions=[].map.call(e.options,eo);if(r.some((function(e,t){return!M(e,i[t])}))){var s=e.multiple?t.value.some((function(e){return Zs(e,r)})):t.value!==t.oldValue&&Zs(t.value,r);s&&io(e,"change")}}}};function Qs(e,t,n){Js(e,t,n),(ee||ne)&&setTimeout((function(){Js(e,t,n)}),0)}function Js(e,t,n){var i=t.value,r=e.multiple;if(!r||Array.isArray(i)){for(var s,o,a=0,c=e.options.length;a-1,o.selected!==s&&(o.selected=s);else if(M(eo(o),i))return void(e.selectedIndex!==a&&(e.selectedIndex=a));r||(e.selectedIndex=-1)}}function Zs(e,t){return t.every((function(t){return!M(t,e)}))}function eo(e){return"_value"in e?e._value:e.value}function to(e){e.target.composing=!0}function no(e){e.target.composing&&(e.target.composing=!1,io(e.target,"input"))}function io(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function ro(e){return!e.componentInstance||e.data&&e.data.transition?e:ro(e.componentInstance._vnode)}var so={bind:function(e,t,n){var i=t.value;n=ro(n);var r=n.data&&n.data.transition,s=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;i&&r?(n.data.show=!0,Us(n,(function(){e.style.display=s}))):e.style.display=i?s:"none"},update:function(e,t,n){var i=t.value,r=t.oldValue;if(!i!==!r){n=ro(n);var s=n.data&&n.data.transition;s?(n.data.show=!0,i?Us(n,(function(){e.style.display=e.__vOriginalDisplay})):Hs(n,(function(){e.style.display="none"}))):e.style.display=i?e.__vOriginalDisplay:"none"}},unbind:function(e,t,n,i,r){r||(e.style.display=e.__vOriginalDisplay)}},oo={model:Xs,show:so},ao={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function co(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?co(Cn(t.children)):e}function lo(e){var t={},n=e.$options;for(var i in n.propsData)t[i]=e[i];var r=n._parentListeners;for(var s in r)t[C(s)]=r[s];return t}function uo(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}function ho(e){while(e=e.parent)if(e.data.transition)return!0}function fo(e,t){return t.key===e.key&&t.tag===e.tag}var po=function(e){return e.tag||En(e)},go=function(e){return"show"===e.name},mo={name:"transition",props:ao,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(po),n.length)){0;var i=this.mode;0;var r=n[0];if(ho(this.$vnode))return r;var s=co(r);if(!s)return r;if(this._leaving)return uo(e,r);var o="__transition-"+this._uid+"-";s.key=null==s.key?s.isComment?o+"comment":o+s.tag:a(s.key)?0===String(s.key).indexOf(o)?s.key:o+s.key:s.key;var c=(s.data||(s.data={})).transition=lo(this),l=this._vnode,u=co(l);if(s.data.directives&&s.data.directives.some(go)&&(s.data.show=!0),u&&u.data&&!fo(s,u)&&!En(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var h=u.data.transition=D({},c);if("out-in"===i)return this._leaving=!0,At(h,"afterLeave",(function(){t._leaving=!1,t.$forceUpdate()})),uo(e,r);if("in-out"===i){if(En(s))return l;var f,d=function(){f()};At(c,"afterEnter",d),At(c,"enterCancelled",d),At(h,"delayLeave",(function(e){f=e}))}}return r}}},vo=D({tag:String,moveClass:String},ao);delete vo.mode;var bo={props:vo,beforeMount:function(){var e=this,t=this._update;this._update=function(n,i){var r=Dn(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,r(),t.call(e,n,i)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),i=this.prevChildren=this.children,r=this.$slots.default||[],s=this.children=[],o=lo(this),a=0;aasync(t,n={})=>{const s=new c,l=a([s.signal,n.signal]),u=await e.post("config/replace",{timeout:n.timeout,signal:l,searchParams:o(n),...await r(i.from(JSON.stringify(t)),s,n.headers)});return u.text()})},"2bb8":function(e,t,n){"use strict";const{BigNumber:i}=n("901e"),r=n("9878"),s=n("15e4");e.exports=r(e=>async function*(t={}){const n=await e.post("stats/bw",{timeout:t.timeout,signal:t.signal,searchParams:s(t),headers:t.headers,transform:e=>({totalIn:new i(e.TotalIn),totalOut:new i(e.TotalOut),rateIn:new i(e.RateIn),rateOut:new i(e.RateOut)})});yield*n.ndjson()})},"2bbf":function(e,t,n){"use strict";const i="[a-fA-F\\d:]",r=e=>e&&e.includeBoundaries?`(?:(?<=\\s|^)(?=${i})|(?<=${i})(?=\\s|$))`:"",s="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",o="[a-fA-F\\d]{1,4}",a=`\n(\n(?:${o}:){7}(?:${o}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${o}:){6}(?:${s}|:${o}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${o}:){5}(?::${s}|(:${o}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${o}:){4}(?:(:${o}){0,1}:${s}|(:${o}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${o}:){3}(?:(:${o}){0,2}:${s}|(:${o}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${o}:){2}(?:(:${o}){0,3}:${s}|(:${o}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${o}:){1}(?:(:${o}){0,4}:${s}|(:${o}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::((?::${o}){0,5}:${s}|(?::${o}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),c=e=>e&&e.exact?new RegExp(`(?:^${s}$)|(?:^${a}$)`):new RegExp(`(?:${r(e)}${s}${r(e)})|(?:${r(e)}${a}${r(e)})`,"g");c.v4=e=>e&&e.exact?new RegExp(`^${s}$`):new RegExp(`${r(e)}${s}${r(e)}`,"g"),c.v6=e=>e&&e.exact?new RegExp(`^${a}$`):new RegExp(`${r(e)}${a}${r(e)}`,"g"),e.exports=c},"2c76":function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async(t={})=>{const n=await e.post("config/show",{timeout:t.timeout,signal:t.signal,searchParams:r({...t}),headers:t.headers}),i=await n.json();return i})},"2cdb":function(e,t,n){"use strict";const i=n("c449"),r=n("85b8");t.resolve=(e,t)=>{let n=r.deserialize(e);const s=t.split("/").filter(Boolean);while(s.length){const e=s.shift();if(void 0===n[e]){for(const t of n.Links)if(t.Name===e)return{value:t.Hash,remainderPath:s.join("/")};throw new Error(`Object has no property '${e}'`)}if(n=n[e],i.isCID(n))return{value:n,remainderPath:s.join("/")}}return{value:n,remainderPath:""}},t.tree=function*(e){const t=r.deserialize(e);yield"Data",yield"Links";for(let n=0;nn)t.push(arguments[n++]);return y[++w]=function(){("function"==typeof e?e:Function(e)).apply(void 0,t)},i(w),w},g=function(e){delete y[e]},"process"==c(m)?i=function(e){m.nextTick(C(e))}:b&&b.now?i=function(e){b.now(C(e))}:v&&!f?(r=new v,s=r.port2,r.port1.onmessage=F,i=l(s.postMessage,s,1)):!o.addEventListener||"function"!=typeof postMessage||o.importScripts||a(k)||"file:"===d.protocol?i=A in h("script")?function(e){u.appendChild(h("script"))[A]=function(){u.removeChild(this),E(e)}}:function(e){setTimeout(C(e),0)}:(i=k,o.addEventListener("message",F,!1))),e.exports={set:p,clear:g}},"2d00":function(e,t,n){var i,r,s=n("da84"),o=n("342f"),a=s.process,c=a&&a.versions,l=c&&c.v8;l?(i=l.split("."),r=i[0]+i[1]):o&&(i=o.match(/Edge\/(\d+)/),(!i||i[1]>=74)&&(i=o.match(/Chrome\/(\d+)/),i&&(r=i[1]))),e.exports=r&&+r},"2dc7":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),{URL:r}=n("16af"),s=n("901e").BigNumber,o=n("5ee5"),a=n("85be"),c=a.MT,l=a.NUMBYTES,u=a.SHIFT32,h=a.SYMS,f=a.TAG,d=a.MT.SIMPLE_FLOAT<<5|a.NUMBYTES.TWO,p=a.MT.SIMPLE_FLOAT<<5|a.NUMBYTES.FOUR,g=a.MT.SIMPLE_FLOAT<<5|a.NUMBYTES.EIGHT,m=a.MT.SIMPLE_FLOAT<<5|a.SIMPLE.TRUE,v=a.MT.SIMPLE_FLOAT<<5|a.SIMPLE.FALSE,b=a.MT.SIMPLE_FLOAT<<5|a.SIMPLE.UNDEFINED,w=a.MT.SIMPLE_FLOAT<<5|a.SIMPLE.NULL,y=new s("0x20000000000000"),A=i.from("f97e00","hex"),E=i.from("f9fc00","hex"),C=i.from("f97c00","hex");function F(e){return{}.toString.call(e).slice(8,-1)}class k{constructor(e){e=e||{},this.streaming="function"===typeof e.stream,this.onData=e.stream,this.semanticTypes=[[r,this._pushUrl],[s,this._pushBigNumber]];const t=e.genTypes||[],n=t.length;for(let i=0;i[t,e[t]]))}_pushRawMap(e,t){t=t.map((function(e){return e[0]=k.encode(e[0]),e})).sort(o.keySorter);for(var n=0;n({data:n("0db8")(e),get:n("c0dd")(e),links:n("4eff")(e),new:n("cc31")(e),patch:n("c8c2")(e),put:n("1cba")(e),stat:n("34ca")(e)})},3124:function(e,t,n){"use strict";const i=n("4ce8"),{Buffer:r}=n("b639"),s=n("c449"),o=n("9878"),a=n("15e4");e.exports=o(e=>async function*(t,n={}){const o=await e.post("get",{timeout:n.timeout,signal:n.signal,searchParams:a({arg:""+(r.isBuffer(t)?new s(t):t),...n}),headers:n.headers}),c=i.extract();for await(const{header:e,body:i}of c(o.iterator()))"directory"===e.type?yield{path:e.name}:yield{path:e.name,content:i}})},3156:function(e,t,n){"use strict";const i=n("c449"),r=n("9878"),s=n("15e4");function o(e){const t={cid:new i(e.Hash)};return e.Error&&(t.error=new Error(e.Error)),t}e.exports=r(e=>async function*(t,n={}){Array.isArray(t)||(t=[t]);const r=await e.post("block/rm",{timeout:n.timeout,signal:n.signal,searchParams:s({arg:t.map(e=>new i(e).toString()),"stream-channels":!0,...n}),headers:n.headers});for await(const e of r.ndjson())yield o(e)})},3193:function(e,t,n){var i=n("8327");function r(e,t){return e[t]^e[t+1]<<8^e[t+2]<<16^e[t+3]<<24}function s(e,t,n,i,r,s){l[e]=l[e]+l[t]+r,l[i]=o(l[i]^l[e],16),l[n]=l[n]+l[i],l[t]=o(l[t]^l[n],12),l[e]=l[e]+l[t]+s,l[i]=o(l[i]^l[e],8),l[n]=l[n]+l[i],l[t]=o(l[t]^l[n],7)}function o(e,t){return e>>>t^e<<32-t}var a=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),c=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0]),l=new Uint32Array(16),u=new Uint32Array(16);function h(e,t){var n=0;for(n=0;n<8;n++)l[n]=e.h[n],l[n+8]=a[n];for(l[12]^=e.t,l[13]^=e.t/4294967296,t&&(l[14]=~l[14]),n=0;n<16;n++)u[n]=r(e.b,4*n);for(n=0;n<10;n++)s(0,4,8,12,u[c[16*n+0]],u[c[16*n+1]]),s(1,5,9,13,u[c[16*n+2]],u[c[16*n+3]]),s(2,6,10,14,u[c[16*n+4]],u[c[16*n+5]]),s(3,7,11,15,u[c[16*n+6]],u[c[16*n+7]]),s(0,5,10,15,u[c[16*n+8]],u[c[16*n+9]]),s(1,6,11,12,u[c[16*n+10]],u[c[16*n+11]]),s(2,7,8,13,u[c[16*n+12]],u[c[16*n+13]]),s(3,4,9,14,u[c[16*n+14]],u[c[16*n+15]]);for(n=0;n<8;n++)e.h[n]^=l[n]^l[n+8]}function f(e,t){if(!(e>0&&e<=32))throw new Error("Incorrect output length, should be in [1, 32]");var n=t?t.length:0;if(t&&!(n>0&&n<=32))throw new Error("Incorrect key length, should be in [1, 32]");var i={h:new Uint32Array(a),b:new Uint32Array(64),c:0,t:0,outlen:e};return i.h[0]^=16842752^n<<8^e,n>0&&(d(i,t),i.c=64),i}function d(e,t){for(var n=0;n>2]>>8*(3&n)&255;return t}function g(e,t,n){n=n||32,e=i.normalizeInput(e);var r=f(n,t);return d(r,e),p(r)}function m(e,t,n){var r=g(e,t,n);return i.toHex(r)}e.exports={blake2s:g,blake2sHex:m,blake2sInit:f,blake2sUpdate:d,blake2sFinal:p}},3301:function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=Symbol.for("BufferList");function s(e){if(!(this instanceof s))return new s(e);s._init.call(this,e)}s._init=function(e){Object.defineProperty(this,r,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)},s.prototype._new=function(e){return new s(e)},s.prototype._offset=function(e){if(0===e)return[0,0];let t=0;for(let n=0;nthis.length||e<0)return;const t=this._offset(e);return this._bufs[t[0]][t[1]]},s.prototype.slice=function(e,t){return"number"===typeof e&&e<0&&(e+=this.length),"number"===typeof t&&t<0&&(t+=this.length),this.copy(null,0,e,t)},s.prototype.copy=function(e,t,n,r){if(("number"!==typeof n||n<0)&&(n=0),("number"!==typeof r||r>this.length)&&(r=this.length),n>=this.length)return e||i.alloc(0);if(r<=0)return e||i.alloc(0);const s=!!e,o=this._offset(n),a=r-n;let c=a,l=s&&t||0,u=o[1];if(0===n&&r===this.length){if(!s)return 1===this._bufs.length?this._bufs[0]:i.concat(this._bufs,this.length);for(let t=0;tt)){this._bufs[i].copy(e,l,u,u+c);break}this._bufs[i].copy(e,l,u),l+=t,c-=t,u&&(u=0)}return e},s.prototype.shallowSlice=function(e,t){if(e=e||0,t="number"!==typeof t?this.length:t,e<0&&(e+=this.length),t<0&&(t+=this.length),e===t)return this._new();const n=this._offset(e),i=this._offset(t),r=this._bufs.slice(n[0],i[0]+1);return 0===i[1]?r.pop():r[r.length-1]=r[r.length-1].slice(0,i[1]),0!==n[1]&&(r[0]=r[0].slice(n[1])),this._new(r)},s.prototype.toString=function(e,t,n){return this.slice(t,n).toString(e)},s.prototype.consume=function(e){while(this._bufs.length){if(!(e>=this._bufs[0].length)){this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift()}return this},s.prototype.duplicate=function(){const e=this._new();for(let t=0;tthis.length?this.length:t;const r=this._offset(t);let s=r[0],o=r[1];for(;s=e.length){const n=t.indexOf(e,o);if(-1!==n)return this._reverseOffset([s,n]);o=t.length-e.length+1}else{const t=this._reverseOffset([s,o]);if(this._match(t,e))return t;o++}}o=0}return-1},s.prototype._match=function(e,t){if(this.length-e({tail:n("42d2")(e),ls:n("74ab")(e),level:n("3bf2")(e)})},"342f":function(e,t,n){var i=n("d066");e.exports=i("navigator","userAgent")||""},3464:function(e,t,n){"use strict";const i=n("2054"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t={})=>{const n=await e.post("swarm/addrs/local",{timeout:t.timeout,signal:t.signal,searchParams:s(t),headers:t.headers}),{Strings:r}=await n.json();return(r||[]).map(e=>i(e))})},"34ca":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("c449"),s=n("9878"),o=n("15e4");e.exports=s(e=>async(t,n={})=>{const s=await e.post("object/stat",{timeout:n.timeout,signal:n.signal,searchParams:o({arg:""+(i.isBuffer(t)?new r(t):t),...n}),headers:n.headers});return s.json()})},"34eb":function(e,t,n){(function(i){function r(){return!("undefined"===typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"===typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!==typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!==typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function s(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let i=0,r=0;t[0].replace(/%[a-zA-Z%]/g,e=>{"%%"!==e&&(i++,"%c"===e&&(r=i))}),t.splice(r,0,n)}function o(...e){return"object"===typeof console&&console.log&&console.log(...e)}function a(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(n){}}function c(){let e;try{e=t.storage.getItem("debug")}catch(n){}return!e&&"undefined"!==typeof i&&"env"in i&&(e=Object({NODE_ENV:"production",BASE_URL:"/"}).DEBUG),e}function l(){try{return localStorage}catch(e){}}t.log=o,t.formatArgs=s,t.save=a,t.load=c,t.useColors=r,t.storage=l(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],e.exports=n("dc90")(t);const{formatters:u}=e.exports;u.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}).call(this,n("4362"))},"354e":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("675c"),s=n("2612"),{names:o}=n("479a"),a={};for(const l in o)a[o[l]]=l;function c(e){t.decode(e)}t.names=o,t.codes=Object.freeze(a),t.toHexString=function(e){if(!i.isBuffer(e))throw new Error("must be passed a buffer");return e.toString("hex")},t.fromHexString=function(e){return i.from(e,"hex")},t.toB58String=function(e){if(!i.isBuffer(e))throw new Error("must be passed a buffer");return r.encode("base58btc",e).toString().slice(1)},t.fromB58String=function(e){let t=e;return i.isBuffer(e)&&(t=e.toString()),r.decode("z"+t)},t.decode=function(e){if(!i.isBuffer(e))throw new Error("multihash must be a Buffer");if(e.length<2)throw new Error("multihash too short. must be > 2 bytes.");const n=s.decode(e);if(!t.isValidCode(n))throw new Error("multihash unknown function code: 0x"+n.toString(16));e=e.slice(s.decode.bytes);const r=s.decode(e);if(r<0)throw new Error("multihash invalid length: "+r);if(e=e.slice(s.decode.bytes),e.length!==r)throw new Error("multihash length inconsistent: 0x"+e.toString("hex"));return{code:n,name:a[n],length:r,digest:e}},t.encode=function(e,n,r){if(!e||void 0===n)throw new Error("multihash encode requires at least two args: digest, code");const o=t.coerceCode(n);if(!i.isBuffer(e))throw new Error("digest should be a Buffer");if(null==r&&(r=e.length),r&&e.length!==r)throw new Error("digest length should be equal to specified length.");return i.concat([i.from(s.encode(o)),i.from(s.encode(r)),e])},t.coerceCode=function(e){let n=e;if("string"===typeof e){if(void 0===o[e])throw new Error("Unrecognized hash function named: "+e);n=o[e]}if("number"!==typeof n)throw new Error("Hash function code should be a number. Got: "+n);if(void 0===a[n]&&!t.isAppCode(n))throw new Error("Unrecognized function code: "+n);return n},t.isAppCode=function(e){return e>0&&e<16},t.isValidCode=function(e){return!!t.isAppCode(e)||!!a[e]},t.validate=c,t.prefix=function(e){return c(e),e.slice(0,2)}},"35a1":function(e,t,n){var i=n("f5df"),r=n("3f8c"),s=n("b622"),o=s("iterator");e.exports=function(e){if(void 0!=e)return e[o]||e["@@iterator"]||r[i(e)]}},"35ea":function(e,t,n){"use strict";function i(e,t){e=e.replace(new RegExp("=","g"),"");const n=e.length;let i=0,r=0,s=0;const o=new Uint8Array(5*n/8|0);for(let a=0;a=8&&(o[s++]=r>>>i-8&255,i-=8);return o.buffer}function r(e,t){const n=e.byteLength,i=new Uint8Array(e),r=t.indexOf("=")===t.length-1;r&&(t=t.substring(0,t.length-1));let s=0,o=0,a="";for(let c=0;c=5)a+=t[o>>>s-5&31],s-=5}if(s>0&&(a+=t[o<<5-s&31]),r)while(a.length%8!==0)a+="=";return a}e.exports=function(e){return{encode(t){return r("string"===typeof t?Uint8Array.from(t):t,e)},decode(t){for(const n of t)if(e.indexOf(n)<0)throw new Error("invalid base32 character");return i(t,e)}}}},"37e8":function(e,t,n){var i=n("83ab"),r=n("9bf2"),s=n("825a"),o=n("df75");e.exports=i?Object.defineProperties:function(e,t){s(e);var n,i=o(t),a=i.length,c=0;while(a>c)r.f(e,n=i[c++],t[n]);return e}},"3ae7":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("c449"),s=n("9878"),o=n("15e4");e.exports=s(e=>async(t,n,s={})=>{const a=await e.post("object/patch/add-link",{timeout:s.timeout,signal:s.signal,searchParams:o({arg:[""+(i.isBuffer(t)?new r(t):t),n.Name||n.name||"",(n.Hash||n.cid||"").toString()||null],...s}),headers:s.headers}),{Hash:c}=await a.json();return new r(c)})},"3bbe":function(e,t,n){var i=n("861d");e.exports=function(e){if(!i(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},"3bd5":function(e,t,n){"use strict";const i=n("7ae7");e.exports=e=>{const t=i.singleton();return async(e,n)=>t.unsubscribe(e,n)}},"3bf2":function(e,t,n){"use strict";const i=n("7766"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t,n,r={})=>{const o=await e.post("log/level",{timeout:r.timeout,signal:r.signal,searchParams:s({arg:[t,n],...r}),headers:r.headers});return i(await o.json())})},"3c35":function(e,t){(function(t){e.exports=t}).call(this,{})},"3cb9":function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return r}));let i=/(-?(?:\d+\.?\d*|\d*\.?\d+)(?:e[-+]?\d+)?)\s*([a-zµμ]*)/gi;function r(e="",t="ms"){var n=null;return e=e.replace(/(\d),(\d)/g,"$1$2"),e.replace(i,(function(e,t,i){i=r[i]||r[i.toLowerCase().replace(/s$/,"")],i&&(n=(n||0)+parseFloat(t,10)*i)})),n&&n/r[t]}r.nanosecond=r.ns=1e-6,r["µs"]=r["μs"]=r.us=r.microsecond=.001,r.millisecond=r.ms=1,r.second=r.sec=r.s=1e3*r.ms,r.minute=r.min=r.m=60*r.s,r.hour=r.hr=r.h=60*r.m,r.day=r.d=24*r.h,r.week=r.wk=r.w=7*r.d,r.month=r.b=30.4375*r.d,r.year=r.yr=r.y=365.25*r.d},"3d5e":function(e,t,n){"use strict";const{URLWithLegacySupport:i,format:r}=n("1f0b");e.exports=(e,t={},n={},s)=>{let o,a=t.protocol?t.protocol.replace(":",""):"http";a=(n[a]||s||a)+":";try{o=new i(e)}catch(l){o={}}const c=Object.assign({},t,{protocol:a||o.protocol,host:t.host||o.host});return new i(e,r(c)).toString()}},"3e7a":function(e,t,n){"use strict";const i=n("c449"),{Buffer:r}=n("b639"),s=(e,t)=>{let n=null;if("string"===typeof t?n=e=>e.Name===t:(r.isBuffer(t)||i.isCID(t))&&(n=e=>e.Hash.equals(t)),!n)throw new Error("second arg needs to be a name or CID");{const t=e.Links;let i=0;while(iasync(t,n,r={})=>{if("string"!==typeof t)throw new Error("Invalid key type");const o={arg:[t,n],...r};"boolean"===typeof n?(o.arg[1]=n.toString(),o.bool=!0):"string"!==typeof n&&(o.arg[1]=JSON.stringify(n),o.json=!0);const a=await e.post("config",{timeout:r.timeout,signal:r.signal,searchParams:s(o),headers:r.headers});return i(await a.json())})},"3ed3":function(e,t,n){"use strict";t.util=n("b623"),t.resolver=n("5669"),t.codec=t.util.codec,t.defaultHashAlg=t.util.defaultHashAlg},"3f8c":function(e,t){e.exports={}},4064:function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("1c55"),s=n("416a"),{factory:o}=n("26d5"),{fromNumberTo32BitBuf:a}=n("9c49"),c=e=>async t=>{switch(e){case"sha3-224":return i.from(r.sha3_224.arrayBuffer(t));case"sha3-256":return i.from(r.sha3_256.arrayBuffer(t));case"sha3-384":return i.from(r.sha3_384.arrayBuffer(t));case"sha3-512":return i.from(r.sha3_512.arrayBuffer(t));case"shake-128":return i.from(r.shake128.create(128).update(t).arrayBuffer());case"shake-256":return i.from(r.shake256.create(256).update(t).arrayBuffer());case"keccak-224":return i.from(r.keccak224.arrayBuffer(t));case"keccak-256":return i.from(r.keccak256.arrayBuffer(t));case"keccak-384":return i.from(r.keccak384.arrayBuffer(t));case"keccak-512":return i.from(r.keccak512.arrayBuffer(t));case"murmur3-128":return i.from(s.x64.hash128(t),"hex");case"murmur3-32":return a(s.x86.hash32(t));default:throw new TypeError(e+" is not a supported algorithm")}},l=e=>i.from(e);e.exports={identity:l,sha1:o("sha1"),sha2256:o("sha2-256"),sha2512:o("sha2-512"),dblSha2256:o("dbl-sha2-256"),sha3224:c("sha3-224"),sha3256:c("sha3-256"),sha3384:c("sha3-384"),sha3512:c("sha3-512"),shake128:c("shake-128"),shake256:c("shake-256"),keccak224:c("keccak-224"),keccak256:c("keccak-256"),keccak384:c("keccak-384"),keccak512:c("keccak-512"),murmur3128:c("murmur3-128"),murmur332:c("murmur3-32"),addBlake:n("5a38")}},"40d5":function(e,t,n){"use strict";e.exports=e=>({ls:n("9398")(e),peers:n("4912")(e),publish:n("ea64")(e),subscribe:n("ddcd")(e),unsubscribe:n("3bd5")(e)})},"40ff":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("0624");function s(e,t){if(!t)throw new Error("requires an encoded buffer");const n=u(e),r=i.from(n.code),s=n.name;return l(s,t),i.concat([r,t])}function o(e,t){const n=u(e),r=n.name;return s(r,i.from(n.encode(t)))}function a(e){i.isBuffer(e)&&(e=e.toString());const t=e.substring(0,1);e=e.substring(1,e.length),"string"===typeof e&&(e=i.from(e));const n=u(t);return i.from(n.decode(e.toString()))}function c(e){if(i.isBuffer(e)&&(e=e.toString()),"[object String]"!==Object.prototype.toString.call(e))return!1;const t=e.substring(0,1);try{const e=u(t);return e.name}catch(n){return!1}}function l(e,t){const n=u(e);n.decode(t.toString())}function u(e){let t;if(r.names[e])t=r.names[e];else{if(!r.codes[e])throw new Error("Unsupported encoding");t=r.codes[e]}if(!t.isImplemented())throw new Error("Base "+e+" is not implemented yet");return t}t=e.exports=s,t.encode=o,t.decode=a,t.isEncoded=c,t.names=Object.freeze(Object.keys(r.names)),t.codes=Object.freeze(Object.keys(r.codes))},"416a":function(e,t,n){e.exports=n("24d2")},4196:function(e,t){(function(){"object"!==typeof globalThis&&(Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__)})(),e.exports=globalThis},"423e":function(e,t,n){"use strict";const i=n("7766"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t={})=>{const n=await e.post("dns",{timeout:t.timeout,signal:t.signal,searchParams:s(t),headers:t.headers});return i(await n.json())})},"428f":function(e,t,n){var i=n("da84");e.exports=i},"42a6":function(e,t,n){"use strict";const i=n("354e"),{Buffer:r}=n("b639");var s={checkCIDComponents:function(e){if(null==e)return"null values are not valid CIDs";if(0!==e.version&&1!==e.version)return"Invalid version, must be a number equal to 1 or 0";if("string"!==typeof e.codec)return"codec must be string";if(0===e.version){if("dag-pb"!==e.codec)return"codec must be 'dag-pb' for CIDv0";if("base58btc"!==e.multibaseName)return"multibaseName must be 'base58btc' for CIDv0"}if(!r.isBuffer(e.multihash))return"multihash must be a Buffer";try{i.validate(e.multihash)}catch(t){let e=t.message;return e||(e="Multihash validation failed"),e}}};e.exports=s},"42a7":function(e,t,n){"use strict";var i=n("8707").Buffer;function r(e){if(e.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n>>0,h=new Uint8Array(l);while(s!==o){for(var f=t[s],d=0,p=l-1;(0!==f||d>>0,h[p]=f%a>>>0,f=f/a>>>0;if(0!==f)throw new Error("Non-zero carry");r=d,s++}var g=l-r;while(g!==l&&0===h[g])g++;for(var m=c.repeat(n);g>>0,u=new Uint8Array(o);while(e[n]){var h=t[e.charCodeAt(n)];if(255===h)return;for(var f=0,d=o-1;(0!==h||f>>0,u[d]=h%256>>>0,h=h/256>>>0;if(0!==h)throw new Error("Non-zero carry");s=f,n++}if(" "!==e[n]){var p=o-s;while(p!==o&&0===u[p])p++;var g=i.allocUnsafe(r+(o-p));g.fill(0,0,r);var m=r;while(p!==o)g[m++]=u[p++];return g}}}function d(e){var t=f(e);if(t)return t;throw new Error("Non-base"+a+" character")}return{encode:h,decodeUnsafe:f,decode:d}}e.exports=r},"42d2":function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async function*(t={}){const n=await e.post("log/tail",{timeout:t.timeout,signal:t.signal,searchParams:r(t),headers:t.headers});yield*n.ndjson()})},"431e":function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async(t={})=>{const n=await e.post("bootstrap/add",{timeout:t.timeout,signal:t.signal,searchParams:r({...t,default:!0}),headers:t.headers});return n.json()})},4362:function(e,t,n){t.nextTick=function(e){var t=Array.prototype.slice.call(arguments);t.shift(),setTimeout((function(){e.apply(null,t)}),0)},t.platform=t.arch=t.execPath=t.title="browser",t.pid=1,t.browser=!0,t.env={},t.argv=[],t.binding=function(e){throw new Error("No such module. (Possibly not yet loaded)")},function(){var e,i="/";t.cwd=function(){return i},t.chdir=function(t){e||(e=n("df7c")),i=e.resolve(t,i)}}(),t.exit=t.kill=t.umask=t.dlopen=t.uptime=t.memoryUsage=t.uvCounters=function(){},t.features={}},"43c2":function(e,t,n){"use strict";const i=n("7766"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t,n,r={})=>{const o=await e.post("key/rename",{timeout:r.timeout,signal:r.signal,searchParams:s({arg:[t,n],...r}),headers:r.headers});return i(await o.json())})},"449d":function(e,t,n){"use strict";const i=n("670b");e.exports=async function*(e,t){const n=new i,r=await n.get(e,t);yield{path:decodeURIComponent(new URL(e).pathname.split("/").pop()||""),content:r.iterator()}}},"44ad":function(e,t,n){var i=n("d039"),r=n("c6b6"),s="".split;e.exports=i((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==r(e)?s.call(e,""):Object(e)}:Object},"44d2":function(e,t,n){var i=n("b622"),r=n("7c73"),s=n("9bf2"),o=i("unscopables"),a=Array.prototype;void 0==a[o]&&s.f(a,o,{configurable:!0,value:r(null)}),e.exports=function(e){a[o][e]=!0}},"44de":function(e,t,n){var i=n("da84");e.exports=function(e,t){var n=i.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}},"451a":function(e,t,n){"use strict";const i=()=>{const e={};return e.promise=new Promise((t,n)=>{e.resolve=t,e.reject=n}),e};e.exports=i},4706:function(e,t,n){"use strict";const i=n("23bc"),r=n("ef4d"),s=e=>{if(r.isDAGLink(e))return e;if(!("cid"in e||"hash"in e||"Hash"in e||"multihash"in e))throw new Error("Link must be a DAGLink or DAGLink-like. Convert the DAGNode into a DAGLink via `node.toDAGLink()`.");return new r(e.Name||e.name,e.Tsize||e.size,e.Hash||e.multihash||e.hash||e.cid)},o=(e,t)=>{const n=s(t);e.Links.push(n),i(e.Links)};e.exports=o},"479a":function(e,t,n){"use strict";const i=Object.freeze({identity:0,sha1:17,"sha2-256":18,"sha2-512":19,"sha3-512":20,"sha3-384":21,"sha3-256":22,"sha3-224":23,"shake-128":24,"shake-256":25,"keccak-224":26,"keccak-256":27,"keccak-384":28,"keccak-512":29,blake3:30,"murmur3-128":34,"murmur3-32":35,"dbl-sha2-256":86,md4:212,md5:213,bmt:214,"sha2-256-trunc254-padded":4114,"ripemd-128":4178,"ripemd-160":4179,"ripemd-256":4180,"ripemd-320":4181,x11:4352,"sm3-256":21325,"blake2b-8":45569,"blake2b-16":45570,"blake2b-24":45571,"blake2b-32":45572,"blake2b-40":45573,"blake2b-48":45574,"blake2b-56":45575,"blake2b-64":45576,"blake2b-72":45577,"blake2b-80":45578,"blake2b-88":45579,"blake2b-96":45580,"blake2b-104":45581,"blake2b-112":45582,"blake2b-120":45583,"blake2b-128":45584,"blake2b-136":45585,"blake2b-144":45586,"blake2b-152":45587,"blake2b-160":45588,"blake2b-168":45589,"blake2b-176":45590,"blake2b-184":45591,"blake2b-192":45592,"blake2b-200":45593,"blake2b-208":45594,"blake2b-216":45595,"blake2b-224":45596,"blake2b-232":45597,"blake2b-240":45598,"blake2b-248":45599,"blake2b-256":45600,"blake2b-264":45601,"blake2b-272":45602,"blake2b-280":45603,"blake2b-288":45604,"blake2b-296":45605,"blake2b-304":45606,"blake2b-312":45607,"blake2b-320":45608,"blake2b-328":45609,"blake2b-336":45610,"blake2b-344":45611,"blake2b-352":45612,"blake2b-360":45613,"blake2b-368":45614,"blake2b-376":45615,"blake2b-384":45616,"blake2b-392":45617,"blake2b-400":45618,"blake2b-408":45619,"blake2b-416":45620,"blake2b-424":45621,"blake2b-432":45622,"blake2b-440":45623,"blake2b-448":45624,"blake2b-456":45625,"blake2b-464":45626,"blake2b-472":45627,"blake2b-480":45628,"blake2b-488":45629,"blake2b-496":45630,"blake2b-504":45631,"blake2b-512":45632,"blake2s-8":45633,"blake2s-16":45634,"blake2s-24":45635,"blake2s-32":45636,"blake2s-40":45637,"blake2s-48":45638,"blake2s-56":45639,"blake2s-64":45640,"blake2s-72":45641,"blake2s-80":45642,"blake2s-88":45643,"blake2s-96":45644,"blake2s-104":45645,"blake2s-112":45646,"blake2s-120":45647,"blake2s-128":45648,"blake2s-136":45649,"blake2s-144":45650,"blake2s-152":45651,"blake2s-160":45652,"blake2s-168":45653,"blake2s-176":45654,"blake2s-184":45655,"blake2s-192":45656,"blake2s-200":45657,"blake2s-208":45658,"blake2s-216":45659,"blake2s-224":45660,"blake2s-232":45661,"blake2s-240":45662,"blake2s-248":45663,"blake2s-256":45664,"skein256-8":45825,"skein256-16":45826,"skein256-24":45827,"skein256-32":45828,"skein256-40":45829,"skein256-48":45830,"skein256-56":45831,"skein256-64":45832,"skein256-72":45833,"skein256-80":45834,"skein256-88":45835,"skein256-96":45836,"skein256-104":45837,"skein256-112":45838,"skein256-120":45839,"skein256-128":45840,"skein256-136":45841,"skein256-144":45842,"skein256-152":45843,"skein256-160":45844,"skein256-168":45845,"skein256-176":45846,"skein256-184":45847,"skein256-192":45848,"skein256-200":45849,"skein256-208":45850,"skein256-216":45851,"skein256-224":45852,"skein256-232":45853,"skein256-240":45854,"skein256-248":45855,"skein256-256":45856,"skein512-8":45857,"skein512-16":45858,"skein512-24":45859,"skein512-32":45860,"skein512-40":45861,"skein512-48":45862,"skein512-56":45863,"skein512-64":45864,"skein512-72":45865,"skein512-80":45866,"skein512-88":45867,"skein512-96":45868,"skein512-104":45869,"skein512-112":45870,"skein512-120":45871,"skein512-128":45872,"skein512-136":45873,"skein512-144":45874,"skein512-152":45875,"skein512-160":45876,"skein512-168":45877,"skein512-176":45878,"skein512-184":45879,"skein512-192":45880,"skein512-200":45881,"skein512-208":45882,"skein512-216":45883,"skein512-224":45884,"skein512-232":45885,"skein512-240":45886,"skein512-248":45887,"skein512-256":45888,"skein512-264":45889,"skein512-272":45890,"skein512-280":45891,"skein512-288":45892,"skein512-296":45893,"skein512-304":45894,"skein512-312":45895,"skein512-320":45896,"skein512-328":45897,"skein512-336":45898,"skein512-344":45899,"skein512-352":45900,"skein512-360":45901,"skein512-368":45902,"skein512-376":45903,"skein512-384":45904,"skein512-392":45905,"skein512-400":45906,"skein512-408":45907,"skein512-416":45908,"skein512-424":45909,"skein512-432":45910,"skein512-440":45911,"skein512-448":45912,"skein512-456":45913,"skein512-464":45914,"skein512-472":45915,"skein512-480":45916,"skein512-488":45917,"skein512-496":45918,"skein512-504":45919,"skein512-512":45920,"skein1024-8":45921,"skein1024-16":45922,"skein1024-24":45923,"skein1024-32":45924,"skein1024-40":45925,"skein1024-48":45926,"skein1024-56":45927,"skein1024-64":45928,"skein1024-72":45929,"skein1024-80":45930,"skein1024-88":45931,"skein1024-96":45932,"skein1024-104":45933,"skein1024-112":45934,"skein1024-120":45935,"skein1024-128":45936,"skein1024-136":45937,"skein1024-144":45938,"skein1024-152":45939,"skein1024-160":45940,"skein1024-168":45941,"skein1024-176":45942,"skein1024-184":45943,"skein1024-192":45944,"skein1024-200":45945,"skein1024-208":45946,"skein1024-216":45947,"skein1024-224":45948,"skein1024-232":45949,"skein1024-240":45950,"skein1024-248":45951,"skein1024-256":45952,"skein1024-264":45953,"skein1024-272":45954,"skein1024-280":45955,"skein1024-288":45956,"skein1024-296":45957,"skein1024-304":45958,"skein1024-312":45959,"skein1024-320":45960,"skein1024-328":45961,"skein1024-336":45962,"skein1024-344":45963,"skein1024-352":45964,"skein1024-360":45965,"skein1024-368":45966,"skein1024-376":45967,"skein1024-384":45968,"skein1024-392":45969,"skein1024-400":45970,"skein1024-408":45971,"skein1024-416":45972,"skein1024-424":45973,"skein1024-432":45974,"skein1024-440":45975,"skein1024-448":45976,"skein1024-456":45977,"skein1024-464":45978,"skein1024-472":45979,"skein1024-480":45980,"skein1024-488":45981,"skein1024-496":45982,"skein1024-504":45983,"skein1024-512":45984,"skein1024-520":45985,"skein1024-528":45986,"skein1024-536":45987,"skein1024-544":45988,"skein1024-552":45989,"skein1024-560":45990,"skein1024-568":45991,"skein1024-576":45992,"skein1024-584":45993,"skein1024-592":45994,"skein1024-600":45995,"skein1024-608":45996,"skein1024-616":45997,"skein1024-624":45998,"skein1024-632":45999,"skein1024-640":46e3,"skein1024-648":46001,"skein1024-656":46002,"skein1024-664":46003,"skein1024-672":46004,"skein1024-680":46005,"skein1024-688":46006,"skein1024-696":46007,"skein1024-704":46008,"skein1024-712":46009,"skein1024-720":46010,"skein1024-728":46011,"skein1024-736":46012,"skein1024-744":46013,"skein1024-752":46014,"skein1024-760":46015,"skein1024-768":46016,"skein1024-776":46017,"skein1024-784":46018,"skein1024-792":46019,"skein1024-800":46020,"skein1024-808":46021,"skein1024-816":46022,"skein1024-824":46023,"skein1024-832":46024,"skein1024-840":46025,"skein1024-848":46026,"skein1024-856":46027,"skein1024-864":46028,"skein1024-872":46029,"skein1024-880":46030,"skein1024-888":46031,"skein1024-896":46032,"skein1024-904":46033,"skein1024-912":46034,"skein1024-920":46035,"skein1024-928":46036,"skein1024-936":46037,"skein1024-944":46038,"skein1024-952":46039,"skein1024-960":46040,"skein1024-968":46041,"skein1024-976":46042,"skein1024-984":46043,"skein1024-992":46044,"skein1024-1000":46045,"skein1024-1008":46046,"skein1024-1016":46047,"skein1024-1024":46048,"poseidon-bls12_381-a2-fc1":46081,"poseidon-bls12_381-a2-fc1-sc":46082});e.exports={names:i}},4815:function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("9878"),s=n("15e4"),{Value:o}=n("a36d");e.exports=r(e=>async function(t,n={}){const r=await e.post("dht/get",{timeout:n.timeout,signal:n.signal,searchParams:s({arg:i.isBuffer(t)?t.toString():t,...n}),headers:n.headers});for await(const e of r.ndjson())if(e.Type===o)return i.from(e.Extra,"base64");throw new Error("not found")})},4840:function(e,t,n){var i=n("825a"),r=n("1c0b"),s=n("b622"),o=s("species");e.exports=function(e,t){var n,s=i(e).constructor;return void 0===s||void 0==(n=i(s)[o])?t:r(n)}},4912:function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async(t,n={})=>{n||"object"!==typeof t||(n=t||{},t=null);const i=await e.post("pubsub/peers",{timeout:n.timeout,signal:n.signal,searchParams:r({arg:t,...n}),headers:n.headers}),{Strings:s}=await i.json();return s||[]})},"491e":function(e,t,n){"use strict";const i=n("c449"),r=n("9878"),s=n("15e4");e.exports=r(e=>async function*(t={}){const n=await e.post("repo/gc",{timeout:t.timeout,signal:t.signal,searchParams:s(t),headers:t.headers,transform:e=>({err:e.Error?new Error(e.Error):null,cid:(e.Key||{})["/"]?new i(e.Key["/"]):null})});yield*n.ndjson()})},4923:function(e,t,n){"use strict";e.exports=e=>({add:n("a5e1")(e),clear:n("6832")(e),rm:n("f0e2")(e),reset:n("431e")(e),list:n("0701")(e)})},4930:function(e,t,n){var i=n("d039");e.exports=!!Object.getOwnPropertySymbols&&!i((function(){return!String(Symbol())}))},"4bf1":function(e,t,n){"use strict";const i=n("7766"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t={})=>{const n=await e.post("config/profile/list",{timeout:t.timeout,signal:t.signal,searchParams:s(t),headers:t.headers}),r=await n.json();return r.map(e=>i(e))})},"4ce8":function(e,t,n){t.extract=n("9058"),t.pack=n("dac4")},"4d2d":function(e,t,n){"use strict";const i=n("0fcf"),r=n("ce8a");e.exports=e=>r(e,i)},"4d59":function(e,t,n){"use strict";e.exports=e=>({add:n("c4f2")(e),rm:n("5912")(e),ls:n("e166")(e)})},"4d64":function(e,t,n){var i=n("fc6a"),r=n("50c4"),s=n("23cb"),o=function(e){return function(t,n,o){var a,c=i(t),l=r(c.length),u=s(o,l);if(e&&n!=n){while(l>u)if(a=c[u++],a!=a)return!0}else for(;l>u;u++)if((e||u in c)&&c[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:o(!0),indexOf:o(!1)}},"4e03":function(e,t,n){"use strict";const i=n("c449"),r=n("77d0"),s=n("5d98");e.exports={codec:s.RAW,defaultHashAlg:s.SHA2_256,resolver:{resolve:(e,t)=>{if("/"!==t)throw new Error("Only the root path / may be resolved");return{value:e,remainderPath:""}},tree:e=>({done:!0})},util:{deserialize:e=>e,serialize:e=>e,cid:async(t,n)=>{const o={cidVersion:1,hashAlg:e.exports.defaultHashAlg},a=Object.assign(o,n),c=await r(t,a.hashAlg),l=s.print[e.exports.codec],u=new i(a.cidVersion,l,c);return u}}}},"4eff":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("c449"),{DAGLink:s}=n("8141"),o=n("9878"),a=n("15e4");e.exports=o(e=>async(t,n={})=>{const o=await e.post("object/links",{timeout:n.timeout,signal:n.signal,searchParams:a({arg:""+(i.isBuffer(t)?new r(t):t),...n}),headers:n.headers}),c=await o.json();return(c.Links||[]).map(e=>new s(e.Name,e.Size,e.Hash))})},"4f82":function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async(t={})=>{const n=await e.post("diag/cmds",{timeout:t.timeout,signal:t.signal,searchParams:r(t),headers:t.headers});return n.json()})},"4fcb":function(e,t,n){"use strict";const i=n("0f6c"),{hasOwnProperty:r}=Object.prototype,{propertyIsEnumerable:s}=Object,o=(e,t,n)=>Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}),a=this,c={concatArrays:!1,ignoreUndefined:!1},l=e=>{const t=[];for(const n in e)r.call(e,n)&&t.push(n);if(Object.getOwnPropertySymbols){const n=Object.getOwnPropertySymbols(e);for(const i of n)s.call(e,i)&&t.push(i)}return t};function u(e){return Array.isArray(e)?h(e):i(e)?f(e):e}function h(e){const t=e.slice(0,0);return l(e).forEach(n=>{o(t,n,u(e[n]))}),t}function f(e){const t=null===Object.getPrototypeOf(e)?Object.create(null):{};return l(e).forEach(n=>{o(t,n,u(e[n]))}),t}const d=(e,t,n,i)=>(n.forEach(n=>{"undefined"===typeof t[n]&&i.ignoreUndefined||(n in e&&e[n]!==Object.getPrototypeOf(e)?o(e,n,g(e[n],t[n],i)):o(e,n,u(t[n])))}),e),p=(e,t,n)=>{let i=e.slice(0,0),s=0;return[e,t].forEach(t=>{const a=[];for(let n=0;n!a.includes(e)),n)}),i};function g(e,t,n){return n.concatArrays&&Array.isArray(e)&&Array.isArray(t)?p(e,t,n):i(t)&&i(e)?d(e,t,l(t),n):u(t)}e.exports=function(...e){const t=g(u(c),this!==a&&this||{},c);let n={_:{}};for(const r of e)if(void 0!==r){if(!i(r))throw new TypeError("`"+r+"` is not an Option Object");n=g(n,{_:r},t)}return n._}},5076:function(e,t,n){"use strict";const i=n("85be"),r=i.MT,s=i.SIMPLE,o=i.SYMS;class a{constructor(e){if("number"!==typeof e)throw new Error("Invalid Simple type: "+typeof e);if(e<0||e>255||(0|e)!==e)throw new Error("value must be a small positive integer: "+e);this.value=e}toString(){return"simple("+this.value+")"}inspect(){return"simple("+this.value+")"}encodeCBOR(e){return e._pushInt(this.value,r.SIMPLE_FLOAT)}static isSimple(e){return e instanceof a}static decode(e,t){switch(null==t&&(t=!0),e){case s.FALSE:return!1;case s.TRUE:return!0;case s.NULL:return t?null:o.NULL;case s.UNDEFINED:return t?void 0:o.UNDEFINED;case-1:if(!t)throw new Error("Invalid BREAK");return o.BREAK;default:return new a(e)}}}e.exports=a},"50c4":function(e,t,n){var i=n("a691"),r=Math.min;e.exports=function(e){return e>0?r(i(e),9007199254740991):0}},5135:function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},5144:function(e,t,n){"use strict";const i=n("7766"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t={})=>{const n=await e.post("version",{timeout:t.timeout,signal:t.signal,searchParams:s(t),headers:t.headers}),r=await n.json();return i(r)})},"51a1":function(e,t,n){"use strict";const i=n("c449"),r=n("61cc"),s=n("9878"),o=n("15e4");function a(e){return e.cid=new i(e.hash),delete e.hash,e}e.exports=s(e=>async(t,n={})=>{"string"!==typeof t&&(n=t||{},t="/");const i=await e.post("files/stat",{timeout:n.timeout,signal:n.signal,searchParams:o({arg:t,...n}),headers:n.headers}),s=await i.json();return s.WithLocality=s.WithLocality||!1,a(r(s))})},"526a":function(e,t,n){"use strict";const i=n("c449"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t,n={})=>{const r=await e.post("block/stat",{timeout:n.timeout,signal:n.signal,searchParams:s({arg:new i(t).toString(),...n}),headers:n.headers}),o=await r.json();return{cid:new i(o.Key),size:o.Size}})},5319:function(e,t,n){"use strict";var i=n("d784"),r=n("825a"),s=n("7b0b"),o=n("50c4"),a=n("a691"),c=n("1d80"),l=n("8aa5"),u=n("14c3"),h=Math.max,f=Math.min,d=Math.floor,p=/\$([$&'`]|\d\d?|<[^>]*>)/g,g=/\$([$&'`]|\d\d?)/g,m=function(e){return void 0===e?e:String(e)};i("replace",2,(function(e,t,n,i){var v=i.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,b=i.REPLACE_KEEPS_$0,w=v?"$":"$0";return[function(n,i){var r=c(this),s=void 0==n?void 0:n[e];return void 0!==s?s.call(n,r,i):t.call(String(r),n,i)},function(e,i){if(!v&&b||"string"===typeof i&&-1===i.indexOf(w)){var s=n(t,e,this,i);if(s.done)return s.value}var c=r(e),d=String(this),p="function"===typeof i;p||(i=String(i));var g=c.global;if(g){var A=c.unicode;c.lastIndex=0}var E=[];while(1){var C=u(c,d);if(null===C)break;if(E.push(C),!g)break;var F=String(C[0]);""===F&&(c.lastIndex=l(d,o(c.lastIndex),A))}for(var k="",S=0,x=0;x=S&&(k+=d.slice(S,B)+R,S=B+_.length)}return k+d.slice(S)}];function y(e,n,i,r,o,a){var c=i+e.length,l=r.length,u=g;return void 0!==o&&(o=s(o),u=p),t.call(a,u,(function(t,s){var a;switch(s.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,i);case"'":return n.slice(c);case"<":a=o[s.slice(1,-1)];break;default:var u=+s;if(0===u)return t;if(u>l){var h=d(u/10);return 0===h?t:h<=l?void 0===r[h-1]?s.charAt(1):r[h-1]+s.charAt(1):t}a=r[u-1]}return void 0===a?"":a}))}}))},5365:function(e,t,n){"use strict";const i=n("c449"),r=n("61cc"),s=n("9878"),o=n("15e4");function a(e){return e.hash&&(e.cid=new i(e.hash)),delete e.hash,e}e.exports=s(e=>async function*(t,n={}){if(!t||"string"!==typeof t)throw new Error("ipfs.files.ls requires a path");const s=await e.post("files/ls",{timeout:n.timeout,signal:n.signal,searchParams:o({arg:i.isCID(t)?"/ipfs/"+t:t,long:!0,...n,stream:!0}),headers:n.headers});for await(const e of s.ndjson())if("Entries"in e)for(const t of e.Entries||[])yield a(r(t));else yield a(r(e))})},"542b":function(e,t,n){"use strict";const i=n("4d2d"),r=n("257d"),s=n("82ad"),{File:o,FormData:a}=n("4196");async function c(e="",t,n={}){const c=new a;let l=0;for await(const{content:a,path:u,mode:h,mtime:f}of i(e)){let e="";const t=a?"file":"dir";l>0&&(e="-"+l);let n=t+e;const i=[];if(null!==h&&void 0!==h&&i.push("mode="+r(h)),null!=f){const{secs:e,nsecs:t}=s(f);i.push("mtime="+e),null!=t&&i.push("mtime-nsecs="+t)}i.length&&(n=`${n}?${i.join("&")}`),a?c.set(n,a,encodeURIComponent(u)):c.set(n,new o([""],encodeURIComponent(u),{type:"application/x-directory"})),l++}return{headers:n,body:c}}e.exports=c},"546f":function(e,t,n){"use strict";e.exports=e=>({addrs:n("d72a")(e),connect:n("f5e5")(e),disconnect:n("15f7")(e),localAddrs:n("3464")(e),peers:n("0725")(e)})},5669:function(e,t,n){"use strict";const i=n("c449"),{Buffer:r}=n("b639"),s=n("b623");t.resolve=(e,t)=>{let n=s.deserialize(e);const r=t.split("/").filter(Boolean);while(r.length){const e=r.shift();if(void 0===n[e])throw new Error(`Object has no property '${e}'`);if(n=n[e],i.isCID(n))return{value:n,remainderPath:r.join("/")}}return{value:n,remainderPath:""}};const o=function*(e,t){if(!r.isBuffer(e)&&!i.isCID(e)&&"string"!==typeof e&&null!==e)for(const n of Object.keys(e)){const i=void 0===t?n:t+"/"+n;yield i,yield*o(e[n],i)}};t.tree=function*(e){const t=s.deserialize(e);yield*o(t)}},5692:function(e,t,n){var i=n("c430"),r=n("c6cd");(e.exports=function(e,t){return r[e]||(r[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.6.5",mode:i?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},"569b":function(e,t,n){"use strict";const i=n("8141"),r=n("3ed3"),s=n("4e03"),o=n("9878"),a={"dag-cbor":r.resolver,"dag-pb":i.resolver,raw:s.resolver};e.exports=o((e,t)=>{const i=n("0e02")(t),r=n("6fff")(t);return async(e,t={})=>{const n=await r(e,t),s=await i(n.cid,t),o=a[s.cid.codec];if(!o)throw Object.assign(new Error(`Missing IPLD format "${s.cid.codec}"`),{missingMulticodec:e.codec});return"raw"!==s.cid.codec||n.remPath||(n.remainderPath="/"),o.resolve(s.data,n.remainderPath)}})},"56ef":function(e,t,n){var i=n("d066"),r=n("241c"),s=n("7418"),o=n("825a");e.exports=i("Reflect","ownKeys")||function(e){var t=r.f(o(e)),n=s.f;return n?t.concat(n(e)):t}},"578c":function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async function(t,n={}){const i=await e.post("files/touch",{timeout:n.timeout,signal:n.signal,searchParams:r({arg:t,...n}),headers:n.headers});await i.text()})},5912:function(e,t,n){"use strict";const i=n("c449"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t,n={})=>{const r=await e.post("pin/rm",{timeout:n.timeout,signal:n.signal,searchParams:s({arg:""+t,...n}),headers:n.headers}),o=await r.json();return(o.Pins||[]).map(e=>({cid:new i(e)}))})},"59bb":function(e,t,n){"use strict";const i=n("74f2"),r=n("9975"),s=n("9878");e.exports=e=>{const t=i(e);return s(()=>async function(e,n={}){return r(t(e,n))})(e)}},"5a38":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("c8f6"),s=45569,o=45633,a={init:r.blake2bInit,update:r.blake2bUpdate,digest:r.blake2bFinal},c={init:r.blake2sInit,update:r.blake2sUpdate,digest:r.blake2sFinal},l=(e,t)=>async n=>{const r=t.init(e,null);return t.update(r,n),i.from(t.digest(r))};e.exports=e=>{for(let t=0;t<64;t++)e[s+t]=l(t+1,a);for(let t=0;t<32;t++)e[o+t]=l(t+1,c)}},"5a45":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("1c55"),s=n("416a"),{factory:o}=n("22bb"),{fromNumberTo32BitBuf:a}=n("0ab2"),c=e=>async t=>{switch(e){case"sha3-224":return i.from(r.sha3_224.arrayBuffer(t));case"sha3-256":return i.from(r.sha3_256.arrayBuffer(t));case"sha3-384":return i.from(r.sha3_384.arrayBuffer(t));case"sha3-512":return i.from(r.sha3_512.arrayBuffer(t));case"shake-128":return i.from(r.shake128.create(128).update(t).arrayBuffer());case"shake-256":return i.from(r.shake256.create(256).update(t).arrayBuffer());case"keccak-224":return i.from(r.keccak224.arrayBuffer(t));case"keccak-256":return i.from(r.keccak256.arrayBuffer(t));case"keccak-384":return i.from(r.keccak384.arrayBuffer(t));case"keccak-512":return i.from(r.keccak512.arrayBuffer(t));case"murmur3-128":return i.from(s.x64.hash128(t),"hex");case"murmur3-32":return a(s.x86.hash32(t));default:throw new TypeError(e+" is not a supported algorithm")}},l=e=>i.from(e);e.exports={identity:l,sha1:o("sha1"),sha2256:o("sha2-256"),sha2512:o("sha2-512"),dblSha2256:o("dbl-sha2-256"),sha3224:c("sha3-224"),sha3256:c("sha3-256"),sha3384:c("sha3-384"),sha3512:c("sha3-512"),shake128:c("shake-128"),shake256:c("shake-256"),keccak224:c("keccak-224"),keccak256:c("keccak-256"),keccak384:c("keccak-384"),keccak512:c("keccak-512"),murmur3128:c("murmur3-128"),murmur332:c("murmur3-32"),addBlake:n("13c8")}},"5a90":function(e,t,n){"use strict";e.exports=e=>({gen:n("857d")(e),list:n("9b35")(e),rename:n("43c2")(e),rm:n("0db3")(e),import:n("1247")(e)})},"5ab1":function(e,t,n){"use strict";const i=n("cfab"),r=new Map;for(const s in i){const e=i[s];r.set(e,s)}e.exports=Object.freeze(r)},"5ae5":function(e,t,n){"use strict";e.exports=e=>({get:n("569b")(e),put:n("6356")(e),resolve:n("6fff")(e)})},"5c6c":function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},"5d6d":function(e,t,n){"use strict";const i=async function*(e,t){for await(const n of e)yield t(n)};e.exports=i},"5d98":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("2612"),s=n("5ab1"),o=n("cc3c"),a=n("1c13");t=e.exports,t.addPrefix=(e,t)=>{let n;if(i.isBuffer(e))n=a.varintBufferEncode(e);else{if(!o[e])throw new Error("multicodec not recognized");n=o[e]}return i.concat([n,t])},t.rmPrefix=e=>(r.decode(e),e.slice(r.decode.bytes)),t.getCodec=e=>{const t=r.decode(e),n=s.get(t);if(void 0===n)throw new Error(`Code ${t} not found`);return n},t.getName=e=>s.get(e),t.getNumber=e=>{const t=o[e];if(void 0===t)throw new Error("Codec `"+e+"` not found");return a.varintBufferDecode(t)[0]},t.getCode=e=>r.decode(e),t.getCodeVarint=e=>{const t=o[e];if(void 0===t)throw new Error("Codec `"+e+"` not found");return t},t.getVarint=e=>r.encode(e);const c=n("8111");Object.assign(t,c),t.print=n("17b2")},"5ee5":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("901e").BigNumber,s=n("85be"),o=s.SHIFT32,a=s.SHIFT16,c=2097151;function l(e){return e<16?"0"+e.toString(16):e.toString(16)}t.parseHalf=function(e){var t,n,i;return i=128&e[0]?-1:1,t=(124&e[0])>>2,n=(3&e[0])<<8|e[1],t?31===t?i*(n?NaN:Infinity):i*Math.pow(2,t-25)*(1024+n):5.960464477539063e-8*i*n},t.arrayBufferToBignumber=function(e){const t=e.byteLength;let n="";for(let i=0;i{const t=new Map,n=Object.keys(e),i=n.length;for(let r=0;re*a+t,t.buildInt64=(e,n,i,s)=>{const a=t.buildInt32(e,n),l=t.buildInt32(i,s);return a>c?new r(a).times(o).plus(l):a*o+l},t.writeHalf=function(e,t){const n=i.allocUnsafe(4);n.writeFloatBE(t,0);const r=n.readUInt32BE(0);if(0!==(8191&r))return!1;var s=r>>16&32768;const o=r>>23&255,a=8388607&r;if(o>=113&&o<=142)s+=(o-112<<10)+(a>>13);else{if(!(o>=103&&o<113))return!1;if(a&(1<<126-o)-1)return!1;s+=a+8388608>>126-o}return e.writeUInt16BE(s,0),!0},t.keySorter=function(e,t){var n=e[0].byteLength,i=t[0].byteLength;return n>i?1:i>n?-1:e[0].compare(t[0])},t.isNegativeZero=e=>0===e&&1/e<0,t.nextPowerOf2=e=>{let t=0;if(e&&!(e&e-1))return e;while(0!==e)e>>=1,t+=1;return 1<-1,n=e.indexOf("-")>-1&&e.indexOf("_")>-1;return{encode(e){let r="";r="string"===typeof e?i.from(e).toString("base64"):e.toString("base64"),n&&(r=r.replace(/\+/g,"-").replace(/\//g,"_"));const s=r.indexOf("=");return s>0&&!t&&(r=r.substring(0,s)),r},decode(t){for(const n of t)if(e.indexOf(n)<0)throw new Error("invalid base64 character");return i.from(t,"base64")}}}},"60da":function(e,t,n){"use strict";var i=n("83ab"),r=n("d039"),s=n("df75"),o=n("7418"),a=n("d1e7"),c=n("7b0b"),l=n("44ad"),u=Object.assign,h=Object.defineProperty;e.exports=!u||r((function(){if(i&&1!==u({b:1},u(h({},"a",{enumerable:!0,get:function(){h(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach((function(e){t[e]=e})),7!=u({},e)[n]||s(u({},t)).join("")!=r}))?function(e,t){var n=c(e),r=arguments.length,u=1,h=o.f,f=a.f;while(r>u){var d,p=l(arguments[u++]),g=h?s(p).concat(h(p)):s(p),m=g.length,v=0;while(m>v)d=g[v++],i&&!f.call(p,d)||(n[d]=p[d])}return n}:u},"61cc":function(e,t,n){"use strict";const i=n("7766");function r(e){const t=i(e);return Object.prototype.hasOwnProperty.call(t,"mode")&&(t.mode=parseInt(t.mode,8)),Object.prototype.hasOwnProperty.call(t,"mtime")&&(t.mtime={secs:t.mtime,nsecs:t.mtimeNsecs||0},delete t.mtimeNsecs),t}e.exports=r},"61f1":function(e,t){var n=Math.pow(2,7),i=Math.pow(2,14),r=Math.pow(2,21),s=Math.pow(2,28),o=Math.pow(2,35),a=Math.pow(2,42),c=Math.pow(2,49),l=Math.pow(2,56),u=Math.pow(2,63);e.exports=function(e){return e{const n={[d.DAG_PB]:r,[d.DAG_CBOR]:i,[d.RAW]:s},c=t&&t.ipld||{},p=c&&c.formats||[];return p.forEach(e=>{n[e.codec]=e}),async(i,r={})=>{if(r.cid&&(r.format||r.hashAlg))throw new Error("Failed to put DAG node. Provide either `cid` OR `format` and `hashAlg` options");if(r.format&&!r.hashAlg||!r.format&&r.hashAlg)throw new Error("Failed to put DAG node. Provide `format` AND `hashAlg` options");if(r.cid){const e=new o(r.cid);r={...r,format:e.codec,hashAlg:a.decode(e.multihash).name},delete r.cid}r={format:"dag-cbor",hashAlg:"sha2-256",inputEnc:"raw",...r};const s=d.getNumber(r.format);let c=n[s];if(!c&&(t&&t.ipld&&t.ipld.loadFormat&&(c=await t.ipld.loadFormat(r.format)),!c))throw new Error("Format unsupported - please add support using the options.ipld.formats or options.ipld.loadFormat options");if(!c.util||!c.util.serialize)throw new Error("Format does not support utils.serialize function");const p=c.util.serialize(i),g=new f,m=h([g.signal,r.signal]),v=await e.post("dag/put",{timeout:r.timeout,signal:m,searchParams:u(r),...await l(p,g,r.headers)}),b=await v.json();return new o(b.Cid["/"])}})},"63a6":function(e,t,n){(function(t){function n(){return"undefined"!==typeof window&&"object"===typeof window.process&&"renderer"===window.process.type||(!("undefined"===typeof t||"object"!==typeof t.versions||!t.versions.electron)||"object"===typeof navigator&&"string"===typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0)}e.exports=n}).call(this,n("4362"))},6547:function(e,t,n){var i=n("a691"),r=n("1d80"),s=function(e){return function(t,n){var s,o,a=String(r(t)),c=i(n),l=a.length;return c<0||c>=l?e?"":void 0:(s=a.charCodeAt(c),s<55296||s>56319||c+1===l||(o=a.charCodeAt(c+1))<56320||o>57343?e?a.charAt(c):s:e?a.slice(c,c+2):o-56320+(s-55296<<10)+65536)}};e.exports={codeAt:s(!1),charAt:s(!0)}},"670b":function(e,t,n){"use strict";const{fetch:i,Request:r,Headers:s}=n("273a"),{TimeoutError:o,HTTPError:a}=n("d2aa"),c=n("4fcb").bind({ignoreUndefined:!0}),{URL:l,URLSearchParams:u}=n("16af"),h=n("7980"),f=n("91d3"),d=n("74fd"),p=(e,t,n)=>{if(void 0===t)return e;const i=Date.now(),r=()=>{const e=Date.now()-i;return e>=t};return new Promise((i,s)=>{const a=setTimeout(()=>{r()&&(s(new o),n.abort())},t),c=e=>t=>{clearTimeout(a),r()?s(new o):e(t)};e.then(c(i),c(s))})},g={headers:{},throwHttpErrors:!0,credentials:"same-origin",transformSearchParams:e=>e};class m{constructor(e={}){this.opts=c(g,e)}async fetch(e,t={}){const n=c(this.opts,t);if(n.headers=new s(n.headers),"string"!==typeof e&&!(e instanceof l||e instanceof r))throw new TypeError("`resource` must be a string, URL, or Request");if(n.base&&"string"===typeof n.base&&"string"===typeof e){if(e.startsWith("/"))throw new Error("`resource` must not begin with a slash when using `base`");n.base.endsWith("/")||(n.base+="/"),e=n.base+e}const o=new l(e,n.base);n.searchParams&&(o.search=n.transformSearchParams(new u(n.searchParams))),void 0!==n.json&&(n.body=JSON.stringify(n.json),n.headers.set("content-type","application/json"));const h=new f,g=d([h.signal,n.signal]),m=await p(i(o,{...n,signal:g,timeout:void 0}),n.timeout,h);if(!m.ok&&n.throwHttpErrors)throw n.handleError&&await n.handleError(m),new a(m);return m.iterator=function(){const e=b(m.body);if(!w(e))throw new Error("Can't convert fetch body into a Async Iterator:");return e},m.ndjson=async function*(){for await(const e of v(m.iterator()))t.transform?yield t.transform(e):yield e},m}post(e,t={}){return this.fetch(e,{...t,method:"POST"})}get(e,t={}){return this.fetch(e,{...t,method:"GET"})}put(e,t={}){return this.fetch(e,{...t,method:"PUT"})}delete(e,t={}){return this.fetch(e,{...t,method:"DELETE"})}options(e,t={}){return this.fetch(e,{...t,method:"OPTIONS"})}}const v=async function*(e){const t=new h;let n="";for await(const i of e){n+=t.decode(i,{stream:!0});const e=n.split(/\r?\n/);for(let t=0;t0&&(yield JSON.parse(n))}n=e[e.length-1]}n+=t.decode(),n=n.trim(),0!==n.length&&(yield JSON.parse(n))},b=function(e){if(w(e)){if(Object.prototype.hasOwnProperty.call(e,"readable")&&Object.prototype.hasOwnProperty.call(e,"writable")){const t=e[Symbol.asyncIterator](),n={next:t.next.bind(t),return:()=>(e.destroy(),t.return()),[Symbol.asyncIterator]:()=>n};return n}return e}const t=e.getReader();return{next(){return t.read()},return(){return t.releaseLock(),{}},[Symbol.asyncIterator](){return this}}},w=e=>"object"===typeof e&&null!==e&&"function"===typeof e[Symbol.asyncIterator];m.HTTPError=a,m.TimeoutError=o,m.streamToAsyncIterator=b,m.post=(e,t)=>new m(t).post(e,t),m.get=(e,t)=>new m(t).get(e,t),m.put=(e,t)=>new m(t).put(e,t),m.delete=(e,t)=>new m(t).delete(e,t),m.options=(e,t)=>new m(t).options(e,t),e.exports=m},"675c":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("ab3a");function s(e,t){if(!t)throw new Error("requires an encoded buffer");const n=u(e);return l(n.name,t),i.concat([n.codeBuf,t])}function o(e,t){const n=u(e);return i.concat([n.codeBuf,i.from(n.encode(t))])}function a(e){i.isBuffer(e)&&(e=e.toString());const t=e[0];["f","F","v","V","t","T","b","B","c","C","h","k","K"].includes(t)&&(e=e.toLowerCase());const n=u(e[0]);return i.from(n.decode(e.substring(1)))}function c(e){if(i.isBuffer(e)&&(e=e.toString()),"[object String]"!==Object.prototype.toString.call(e))return!1;try{const t=u(e[0]);return t.name}catch(t){return!1}}function l(e,t){const n=u(e);n.decode(t.toString())}function u(e){if(r.names[e])return r.names[e];if(r.codes[e])return r.codes[e];throw new Error("Unsupported encoding: "+e)}function h(e){return i.isBuffer(e)&&(e=e.toString()),u(e[0])}t=e.exports=s,t.encode=o,t.decode=a,t.isEncoded=c,t.encoding=u,t.encodingFromData=h,t.names=Object.freeze(r.names),t.codes=Object.freeze(r.codes)},"67d1":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("c449"),s=n("9878"),o=n("15e4");e.exports=s(e=>async(t,n,s={})=>{const a=await e.post("object/patch/rm-link",{timeout:s.timeout,signal:s.signal,searchParams:o({arg:[""+(i.isBuffer(t)?new r(t):t),n.Name||n.name||null],...s}),headers:s.headers}),{Hash:c}=await a.json();return new r(c)})},"67ed":function(e,t,n){"use strict";const i=n("c449"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t,n={})=>{t="string"===typeof t?t:new i(t).toString();const r=await(await e.post("bitswap/wantlist",{timeout:n.timeout,signal:n.signal,searchParams:s({...n,peer:t}),headers:n.headers})).json();return(r.Keys||[]).map(e=>new i(e["/"]))})},6832:function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async(t={})=>{const n=await e.post("bootstrap/rm",{timeout:t.timeout,signal:t.signal,searchParams:r({...t,all:!0}),headers:t.headers});return n.json()})},"69f3":function(e,t,n){var i,r,s,o=n("7f9a"),a=n("da84"),c=n("861d"),l=n("9112"),u=n("5135"),h=n("f772"),f=n("d012"),d=a.WeakMap,p=function(e){return s(e)?r(e):i(e,{})},g=function(e){return function(t){var n;if(!c(t)||(n=r(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}};if(o){var m=new d,v=m.get,b=m.has,w=m.set;i=function(e,t){return w.call(m,e,t),t},r=function(e){return v.call(m,e)||{}},s=function(e){return b.call(m,e)}}else{var y=h("state");f[y]=!0,i=function(e,t){return l(e,y,t),t},r=function(e){return u(e,y)?e[y]:{}},s=function(e){return u(e,y)}}e.exports={set:i,get:r,has:s,enforce:p,getterFor:g}},"6aa7":function(e,t,n){"use strict";e.exports={RTLD_LAZY:1,RTLD_NOW:2,RTLD_GLOBAL:256,RTLD_LOCAL:0,RTLD_DEEPBIND:8,E2BIG:7,EACCES:13,EADDRINUSE:98,EADDRNOTAVAIL:99,EAFNOSUPPORT:97,EAGAIN:11,EALREADY:114,EBADF:9,EBADMSG:74,EBUSY:16,ECANCELED:125,ECHILD:10,ECONNABORTED:103,ECONNREFUSED:111,ECONNRESET:104,EDEADLK:35,EDESTADDRREQ:89,EDOM:33,EDQUOT:122,EEXIST:17,EFAULT:14,EFBIG:27,EHOSTUNREACH:113,EIDRM:43,EILSEQ:84,EINPROGRESS:115,EINTR:4,EINVAL:22,EIO:5,EISCONN:106,EISDIR:21,ELOOP:40,EMFILE:24,EMLINK:31,EMSGSIZE:90,EMULTIHOP:72,ENAMETOOLONG:36,ENETDOWN:100,ENETRESET:102,ENETUNREACH:101,ENFILE:23,ENOBUFS:105,ENODATA:61,ENODEV:19,ENOENT:2,ENOEXEC:8,ENOLCK:37,ENOLINK:67,ENOMEM:12,ENOMSG:42,ENOPROTOOPT:92,ENOSPC:28,ENOSR:63,ENOSTR:60,ENOSYS:38,ENOTCONN:107,ENOTDIR:20,ENOTEMPTY:39,ENOTSOCK:88,ENOTSUP:95,ENOTTY:25,ENXIO:6,EOPNOTSUPP:95,EOVERFLOW:75,EPERM:1,EPIPE:32,EPROTO:71,EPROTONOSUPPORT:93,EPROTOTYPE:91,ERANGE:34,EROFS:30,ESPIPE:29,ESRCH:3,ESTALE:116,ETIME:62,ETIMEDOUT:110,ETXTBSY:26,EWOULDBLOCK:11,EXDEV:18,PRIORITY_LOW:19,PRIORITY_BELOW_NORMAL:10,PRIORITY_NORMAL:0,PRIORITY_ABOVE_NORMAL:-7,PRIORITY_HIGH:-14,PRIORITY_HIGHEST:-20,SIGHUP:1,SIGINT:2,SIGQUIT:3,SIGILL:4,SIGTRAP:5,SIGABRT:6,SIGIOT:6,SIGBUS:7,SIGFPE:8,SIGKILL:9,SIGUSR1:10,SIGSEGV:11,SIGUSR2:12,SIGPIPE:13,SIGALRM:14,SIGTERM:15,SIGCHLD:17,SIGSTKFLT:16,SIGCONT:18,SIGSTOP:19,SIGTSTP:20,SIGTTIN:21,SIGTTOU:22,SIGURG:23,SIGXCPU:24,SIGXFSZ:25,SIGVTALRM:26,SIGPROF:27,SIGWINCH:28,SIGIO:29,SIGPOLL:29,SIGPWR:30,SIGSYS:31,SIGUNUSED:31,UV_FS_SYMLINK_DIR:1,UV_FS_SYMLINK_JUNCTION:2,O_RDONLY:0,O_WRONLY:1,O_RDWR:2,UV_DIRENT_UNKNOWN:0,UV_DIRENT_FILE:1,UV_DIRENT_DIR:2,UV_DIRENT_LINK:3,UV_DIRENT_FIFO:4,UV_DIRENT_SOCKET:5,UV_DIRENT_CHAR:6,UV_DIRENT_BLOCK:7,S_IFMT:61440,S_IFREG:32768,S_IFDIR:16384,S_IFCHR:8192,S_IFBLK:24576,S_IFIFO:4096,S_IFLNK:40960,S_IFSOCK:49152,O_CREAT:64,O_EXCL:128,UV_FS_O_FILEMAP:0,O_NOCTTY:256,O_TRUNC:512,O_APPEND:1024,O_DIRECTORY:65536,O_NOATIME:262144,O_NOFOLLOW:131072,O_SYNC:1052672,O_DSYNC:4096,O_DIRECT:16384,O_NONBLOCK:2048,S_IRWXU:448,S_IRUSR:256,S_IWUSR:128,S_IXUSR:64,S_IRWXG:56,S_IRGRP:32,S_IWGRP:16,S_IXGRP:8,S_IRWXO:7,S_IROTH:4,S_IWOTH:2,S_IXOTH:1,F_OK:0,R_OK:4,W_OK:2,X_OK:1,UV_FS_COPYFILE_EXCL:1,COPYFILE_EXCL:1,UV_FS_COPYFILE_FICLONE:2,COPYFILE_FICLONE:2,UV_FS_COPYFILE_FICLONE_FORCE:4,COPYFILE_FICLONE_FORCE:4,OPENSSL_VERSION_NUMBER:269488255,SSL_OP_ALL:2147485780,SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION:262144,SSL_OP_CIPHER_SERVER_PREFERENCE:4194304,SSL_OP_CISCO_ANYCONNECT:32768,SSL_OP_COOKIE_EXCHANGE:8192,SSL_OP_CRYPTOPRO_TLSEXT_BUG:2147483648,SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS:2048,SSL_OP_EPHEMERAL_RSA:0,SSL_OP_LEGACY_SERVER_CONNECT:4,SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER:0,SSL_OP_MICROSOFT_SESS_ID_BUG:0,SSL_OP_MSIE_SSLV2_RSA_PADDING:0,SSL_OP_NETSCAPE_CA_DN_BUG:0,SSL_OP_NETSCAPE_CHALLENGE_BUG:0,SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG:0,SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG:0,SSL_OP_NO_COMPRESSION:131072,SSL_OP_NO_QUERY_MTU:4096,SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION:65536,SSL_OP_NO_SSLv2:0,SSL_OP_NO_SSLv3:33554432,SSL_OP_NO_TICKET:16384,SSL_OP_NO_TLSv1:67108864,SSL_OP_NO_TLSv1_1:268435456,SSL_OP_NO_TLSv1_2:134217728,SSL_OP_PKCS1_CHECK_1:0,SSL_OP_PKCS1_CHECK_2:0,SSL_OP_SINGLE_DH_USE:0,SSL_OP_SINGLE_ECDH_USE:0,SSL_OP_SSLEAY_080_CLIENT_DH_BUG:0,SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG:0,SSL_OP_TLS_BLOCK_PADDING_BUG:0,SSL_OP_TLS_D5_BUG:0,SSL_OP_TLS_ROLLBACK_BUG:8388608,ENGINE_METHOD_RSA:1,ENGINE_METHOD_DSA:2,ENGINE_METHOD_DH:4,ENGINE_METHOD_RAND:8,ENGINE_METHOD_EC:2048,ENGINE_METHOD_CIPHERS:64,ENGINE_METHOD_DIGESTS:128,ENGINE_METHOD_PKEY_METHS:512,ENGINE_METHOD_PKEY_ASN1_METHS:1024,ENGINE_METHOD_ALL:65535,ENGINE_METHOD_NONE:0,DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,RSA_PSS_SALTLEN_DIGEST:-1,RSA_PSS_SALTLEN_MAX_SIGN:-2,RSA_PSS_SALTLEN_AUTO:-2,defaultCoreCipherList:"TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA",TLS1_VERSION:769,TLS1_1_VERSION:770,TLS1_2_VERSION:771,TLS1_3_VERSION:772,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}},"6eeb":function(e,t,n){var i=n("da84"),r=n("9112"),s=n("5135"),o=n("ce4e"),a=n("8925"),c=n("69f3"),l=c.get,u=c.enforce,h=String(String).split("String");(e.exports=function(e,t,n,a){var c=!!a&&!!a.unsafe,l=!!a&&!!a.enumerable,f=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof t||s(n,"name")||r(n,"name",t),u(n).source=h.join("string"==typeof t?t:"")),e!==i?(c?!f&&e[t]&&(l=!0):delete e[t],l?e[t]=n:r(e,t,n)):l?e[t]=n:o(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&l(this).source||a(this)}))},"6fff":function(e,t,n){"use strict";const i=n("c449"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t,n={})=>{const r=await e.post("dag/resolve",{timeout:n.timeout,signal:n.signal,searchParams:s({arg:`${t}${n.path?("/"+n.path).replace(/\/[/]+/g,"/"):""}`,...n}),headers:n.headers}),o=await r.json();return{cid:new i(o.Cid["/"]),remainderPath:o.RemPath}})},"71ef":function(e,t,n){"use strict";const i=n("9878"),{findSources:r}=n("d6ea"),s=n("15e4");e.exports=i(e=>async(...t)=>{const{sources:n,options:i}=r(t),o=await e.post("files/rm",{timeout:i.timeout,signal:i.signal,searchParams:s({arg:n,...i}),headers:i.headers});await o.text()})},7418:function(e,t){t.f=Object.getOwnPropertySymbols},"74ab":function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async(t={})=>{const n=await e.post("log/ls",{timeout:t.timeout,signal:t.signal,searchParams:r(t),headers:t.headers}),i=await n.json();return i.Strings})},"74f2":function(e,t,n){"use strict";const i=n("c449"),r=n("7766"),s=n("9878"),o=n("542b"),a=n("15e4"),c=n("74fd"),l=n("91d3");function u({name:e,hash:t,size:n,mode:r,mtime:s,mtimeNsecs:o}){const a={path:e,cid:new i(t),size:parseInt(n)};return null!=r&&(a.mode=parseInt(r,8)),null!=s&&(a.mtime={secs:s,nsecs:o||0}),a}e.exports=s(e=>async function*(t,n={}){const i=n.progress,s=new l,h=c([s.signal,n.signal]),f=await e.post("add",{searchParams:a({"stream-channels":!0,...n,progress:Boolean(i)}),timeout:n.timeout,signal:h,...await o(t,s,n.headers)});for await(let e of f.ndjson())e=r(e),i&&e.bytes?i(e.bytes):yield u(e)})},"74fd":function(e,t,n){const i=n("0de0");function r(e){const t=new i;function n(){t.abort();for(const t of e)t&&t.removeEventListener&&t.removeEventListener("abort",n)}for(const i of e)if(i&&i.addEventListener){if(i.aborted){n();break}i.addEventListener("abort",n)}return t.signal}e.exports=r,e.exports.anySignal=r},"76b6":function(e,t,n){const{Buffer:i}=n("b639");var r=i.alloc,s="0000000000000000000",o="7777777777777777777",a="0".charCodeAt(0),c=i.from("ustar\0","binary"),l=i.from("00","binary"),u=parseInt("7777",8),h=257,f=263,d=function(e){switch(e){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},p=function(e){for(var t=256,n=0;n<148;n++)t+=e[n];for(var i=156;i<512;i++)t+=e[i];return t},g=function(e,t){return e=e.toString(8),e.length>t?o.slice(0,t)+" ":s.slice(0,t-e.length)+e+" "},m=function(e){var t=i.byteLength(e),n=Math.floor(Math.log(t)/Math.log(10))+1;return t+n>=Math.pow(10,n)&&n++,t+n+e};t.encodePax=function(e){var t="";e.name&&(t+=m(" path="+e.name+"\n")),e.linkname&&(t+=m(" linkpath="+e.linkname+"\n"));var n=e.pax;if(n)for(var r in n)t+=m(" "+r+"="+n[r]+"\n");return i.from(t)},t.encode=function(e){var t=r(512),n=e.name,s="";if(5===e.typeflag&&"/"!==n[n.length-1]&&(n+="/"),i.byteLength(n)!==n.length)return null;while(i.byteLength(n)>100){var o=n.indexOf("/");if(-1===o)return null;s+=s?"/"+n.slice(0,o):n.slice(0,o),n=n.slice(o+1)}return i.byteLength(n)>100||i.byteLength(s)>155||e.linkname&&i.byteLength(e.linkname)>100?null:(t.write(n),t.write(g(e.mode&u,6),100),t.write(g(e.uid,6),108),t.write(g(e.gid,6),116),t.write(g(e.size,11),124),t.write(g(e.mtime.getTime()/1e3|0,11),136),t[156]=a+d(e.type),e.linkname&&t.write(e.linkname,157),c.copy(t,h),l.copy(t,f),e.uname&&t.write(e.uname,265),e.gname&&t.write(e.gname,297),t.write(g(e.devmajor||0,6),329),t.write(g(e.devminor||0,6),337),s&&t.write(s,345),t.write(g(p(t),6),148),t)}},7766:function(e,t,n){"use strict";e.exports=e=>{if(null==e)return e;const t=/^[A-Z]+$/;return Object.keys(e).reduce((n,i)=>(t.test(i)?n[i.toLowerCase()]=e[i]:t.test(i[0])?n[i[0].toLowerCase()+i.slice(1)]=e[i]:n[i]=e[i],n),{})}},"77d0":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("b6aa"),s=n("354e"),o=n("5a45");async function a(e,t,n){const i=await a.digest(e,t,n);return s.encode(i,t,n)}a.Buffer=i,a.multihash=s,a.digest=async(e,t,n)=>{const i=a.createHash(t),r=await i(e);return n?r.slice(0,n):r},a.createHash=function(e){if(!e)throw r(new Error("hash algorithm must be specified"),"ERR_HASH_ALGORITHM_NOT_SPECIFIED");if(e=s.coerceCode(e),!a.functions[e])throw r(new Error(`multihash function '${e}' not yet supported`),"ERR_HASH_ALGORITHM_NOT_SUPPORTED");return a.functions[e]},a.functions={0:o.identity,17:o.sha1,18:o.sha2256,19:o.sha2512,20:o.sha3512,21:o.sha3384,22:o.sha3256,23:o.sha3224,24:o.shake128,25:o.shake256,26:o.keccak224,27:o.keccak256,28:o.keccak384,29:o.keccak512,34:o.murmur3128,35:o.murmur332,86:o.dblSha2256},o.addBlake(a.functions),a.validate=async(e,t)=>{const n=await a(e,s.decode(t).name);return 0===i.compare(t,n)},e.exports=a},7839:function(e,t){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"786a":function(e,t,n){"use strict";const i=n("c449"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t,n={})=>{if(!t||"string"!==typeof t)throw new Error("ipfs.files.flush requires a path");const r=await e.post("files/flush",{timeout:n.timeout,signal:n.signal,searchParams:s({arg:t,...n}),headers:n.headers}),o=await r.json();return new i(o.Cid)})},"796b":function(e,t,n){const i=n("3301");e.exports=e=>{const t=async function*(){let t=yield,n=new i;for await(const r of e)if(t){n.append(r);while(n.length>=t){const e=n.shallowSlice(0,t);if(n.consume(t),t=yield e,!t){n.length&&(t=yield n,n=new i);break}}}else t=yield n.append(r),n=new i;if(t)throw Object.assign(new Error(`stream ended before ${t} bytes became available`),{code:"ERR_UNDER_READ",buffer:n})}();return t.next(),t}},7980:function(e,t,n){"use strict";e.exports=n("4196").TextDecoder},7996:function(e,t,n){"use strict";const i=n("257d"),r=n("82ad"),s=n("9878"),o=n("542b"),a=n("15e4"),c=n("74fd"),l=n("91d3");e.exports=s(e=>async(t,n,s={})=>{const u=new l,h=c([u.signal,s.signal]),f=await e.post("files/write",{timeout:s.timeout,signal:h,searchParams:a({arg:t,streamChannels:!0,count:s.count||s.length,...s}),...await o({content:n,path:"arg",mode:i(s.mode),mtime:r(s.mtime)},u,s.headers)});await f.text()})},"7ae7":function(e,t,n){"use strict";const i=n("91d3");class r{constructor(){this._subs=new Map}static singleton(){return r.instance||(r.instance=new r),r.instance}subscribe(e,t,n){const r=this._subs.get(e)||[];if(r.find(e=>e.handler===t))throw new Error(`Already subscribed to ${e} with this handler`);const s=new i;return this._subs.set(e,[{handler:t,controller:s}].concat(r)),n&&n.addEventListener("abort",()=>this.unsubscribe(e,t)),s.signal}unsubscribe(e,t){const n=this._subs.get(e)||[];let i;t?(this._subs.set(e,n.filter(e=>e.handler!==t)),i=n.filter(e=>e.handler===t)):(this._subs.set(e,[]),i=n),i.forEach(e=>e.controller.abort())}}r.instance=null,e.exports=r},"7b0b":function(e,t,n){var i=n("1d80");e.exports=function(e){return Object(i(e))}},"7b28":function(e,t,n){"use strict";e.exports=n("0fc0")},"7b5f":function(e,t,n){"use strict";const i=n("c449"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t={})=>{const n=await(await e.post("bitswap/wantlist",{timeout:t.timeout,signal:t.signal,searchParams:s(t),headers:t.headers})).json();return(n.Keys||[]).map(e=>new i(e["/"]))})},"7c73":function(e,t,n){var i,r=n("825a"),s=n("37e8"),o=n("7839"),a=n("d012"),c=n("1be4"),l=n("cc12"),u=n("f772"),h=">",f="<",d="prototype",p="script",g=u("IE_PROTO"),m=function(){},v=function(e){return f+p+h+e+f+"/"+p+h},b=function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t},w=function(){var e,t=l("iframe"),n="java"+p+":";return t.style.display="none",c.appendChild(t),t.src=String(n),e=t.contentWindow.document,e.open(),e.write(v("document.F=Object")),e.close(),e.F},y=function(){try{i=document.domain&&new ActiveXObject("htmlfile")}catch(t){}y=i?b(i):w();var e=o.length;while(e--)delete y[d][o[e]];return y()};a[g]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(m[d]=r(e),n=new m,m[d]=null,n[g]=e):n=y(),void 0===t?n:s(n,t)}},"7c9e":function(e,t,n){var i=n("061c");e.exports={render:function(e){var t=this.height?this.px(this.height):"100%",n=this.width?this.px(this.width):"100%";return e("div",{attrs:{style:"height: "+t+"; width: "+n}})},props:{value:String,lang:!0,theme:String,height:!0,width:!0,options:Object},data:function(){return{editor:null,contentBackup:""}},methods:{px:function(e){return/^\d*$/.test(e)?e+"px":e}},watch:{value:function(e){this.contentBackup!==e&&(this.editor.session.setValue(e,1),this.contentBackup=e)},theme:function(e){this.editor.setTheme("ace/theme/"+e)},lang:function(e){this.editor.getSession().setMode("string"===typeof e?"ace/mode/"+e:e)},options:function(e){this.editor.setOptions(e)},height:function(){this.$nextTick((function(){this.editor.resize()}))},width:function(){this.$nextTick((function(){this.editor.resize()}))}},beforeDestroy:function(){this.editor.destroy(),this.editor.container.remove()},mounted:function(){var e=this,t=this.lang||"text",r=this.theme||"chrome";n("b378");var s=e.editor=i.edit(this.$el);s.$blockScrolling=1/0,this.$emit("init",s),s.getSession().setMode("string"===typeof t?"ace/mode/"+t:t),s.setTheme("ace/theme/"+r),this.value&&s.setValue(this.value,1),this.contentBackup=this.value,s.on("change",(function(){var t=s.getValue();e.$emit("input",t),e.contentBackup=t})),e.options&&s.setOptions(e.options)}}},"7dd0":function(e,t,n){"use strict";var i=n("23e7"),r=n("9ed3"),s=n("e163"),o=n("d2bb"),a=n("d44e"),c=n("9112"),l=n("6eeb"),u=n("b622"),h=n("c430"),f=n("3f8c"),d=n("ae93"),p=d.IteratorPrototype,g=d.BUGGY_SAFARI_ITERATORS,m=u("iterator"),v="keys",b="values",w="entries",y=function(){return this};e.exports=function(e,t,n,u,d,A,E){r(n,t,u);var C,F,k,S=function(e){if(e===d&&D)return D;if(!g&&e in B)return B[e];switch(e){case v:return function(){return new n(this,e)};case b:return function(){return new n(this,e)};case w:return function(){return new n(this,e)}}return function(){return new n(this)}},x=t+" Iterator",_=!1,B=e.prototype,$=B[m]||B["@@iterator"]||d&&B[d],D=!g&&$||S(d),L="Array"==t&&B.entries||$;if(L&&(C=s(L.call(new e)),p!==Object.prototype&&C.next&&(h||s(C)===p||(o?o(C,p):"function"!=typeof C[m]&&c(C,m,y)),a(C,x,!0,!0),h&&(f[x]=y))),d==b&&$&&$.name!==b&&(_=!0,D=function(){return $.call(this)}),h&&!E||B[m]===D||c(B,m,D),f[t]=D,d)if(F={values:S(b),keys:A?D:S(v),entries:S(w)},E)for(k in F)(g||_||!(k in B))&&l(B,k,F[k]);else i({target:t,proto:!0,forced:g||_},F);return F}},"7e03":function(e,t,n){ +//! stable.js 0.1.8, https://github.com/Two-Screen/stable +//! © 2018 Angry Bytes and contributors. MIT licensed. +(function(t,n){e.exports=n()})(0,(function(){"use strict";var e=function(e,n){return t(e.slice(),n)};function t(e,t){"function"!==typeof t&&(t=function(e,t){return String(e).localeCompare(t)});var i=e.length;if(i<=1)return e;for(var r=new Array(i),s=1;sl&&(s=l),o>l&&(o=l),a=r,c=s;while(1)if(aasync(t,n={})=>{const i=await e.post("files/mkdir",{timeout:n.timeout,signal:n.signal,searchParams:r({arg:t,...n}),headers:n.headers});await i.text()})},"7f99":function(e,t,n){"use strict";const i=n("7766"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t,n={})=>{const r=await e.post("name/pubsub/cancel",{timeout:n.timeout,signal:n.signal,searchParams:s({arg:t,...n}),headers:n.headers});return i(await r.json())})},"7f9a":function(e,t,n){var i=n("da84"),r=n("8925"),s=i.WeakMap;e.exports="function"===typeof s&&/native code/.test(r(s))},8111:function(e,t,n){"use strict";const i=n("cfab"),r={};for(const[s,o]of Object.entries(i))r[s.toUpperCase().replace(/-/g,"_")]=o;e.exports=Object.freeze(r)},8141:function(e,t,n){"use strict";t.DAGNode=n("7b28"),t.DAGLink=n("ef4d"),t.resolver=n("2cdb"),t.util=n("85b8"),t.codec=t.util.codec,t.defaultHashAlg=t.util.defaultHashAlg},"818c":function(e,t){e.exports=function(e,t,n){"use asm";var i=new e.Uint8Array(n);var r=t.pushInt;var s=t.pushInt32;var o=t.pushInt32Neg;var a=t.pushInt64;var c=t.pushInt64Neg;var l=t.pushFloat;var u=t.pushFloatSingle;var h=t.pushFloatDouble;var f=t.pushTrue;var d=t.pushFalse;var p=t.pushUndefined;var g=t.pushNull;var m=t.pushInfinity;var v=t.pushInfinityNeg;var b=t.pushNaN;var w=t.pushNaNNeg;var y=t.pushArrayStart;var A=t.pushArrayStartFixed;var E=t.pushArrayStartFixed32;var C=t.pushArrayStartFixed64;var F=t.pushObjectStart;var k=t.pushObjectStartFixed;var S=t.pushObjectStartFixed32;var x=t.pushObjectStartFixed64;var _=t.pushByteString;var B=t.pushByteStringStart;var $=t.pushUtf8String;var D=t.pushUtf8StringStart;var L=t.pushSimpleUnassigned;var T=t.pushTagStart;var R=t.pushTagStart4;var O=t.pushTagStart8;var M=t.pushTagUnassigned;var I=t.pushBreak;var P=e.Math.pow;var N=0;var j=0;var U=0;function H(e){e=e|0;N=0;j=e;while((N|0)<(j|0)){U=Xe[i[N]&255](i[N]|0)|0;if((U|0)>0){break}}return U|0}function z(e){e=e|0;if(((N|0)+(e|0)|0)<(j|0)){return 0}return 1}function W(e){e=e|0;return i[e|0]<<8|i[e+1|0]|0}function V(e){e=e|0;return i[e|0]<<24|i[e+1|0]<<16|i[e+2|0]<<8|i[e+3|0]|0}function G(e){e=e|0;r(e|0);N=N+1|0;return 0}function K(e){e=e|0;if(z(1)|0){return 1}r(i[N+1|0]|0);N=N+2|0;return 0}function Y(e){e=e|0;if(z(2)|0){return 1}r(W(N+1|0)|0);N=N+3|0;return 0}function q(e){e=e|0;if(z(4)|0){return 1}s(W(N+1|0)|0,W(N+3|0)|0);N=N+5|0;return 0}function X(e){e=e|0;if(z(8)|0){return 1}a(W(N+1|0)|0,W(N+3|0)|0,W(N+5|0)|0,W(N+7|0)|0);N=N+9|0;return 0}function Q(e){e=e|0;r(-1-(e-32|0)|0);N=N+1|0;return 0}function J(e){e=e|0;if(z(1)|0){return 1}r(-1-(i[N+1|0]|0)|0);N=N+2|0;return 0}function Z(e){e=e|0;var t=0;if(z(2)|0){return 1}t=W(N+1|0)|0;r(-1-(t|0)|0);N=N+3|0;return 0}function ee(e){e=e|0;if(z(4)|0){return 1}o(W(N+1|0)|0,W(N+3|0)|0);N=N+5|0;return 0}function te(e){e=e|0;if(z(8)|0){return 1}c(W(N+1|0)|0,W(N+3|0)|0,W(N+5|0)|0,W(N+7|0)|0);N=N+9|0;return 0}function ne(e){e=e|0;var t=0;var n=0;var i=0;i=e-64|0;if(z(i|0)|0){return 1}t=N+1|0;n=(N+1|0)+(i|0)|0;_(t|0,n|0);N=n|0;return 0}function ie(e){e=e|0;var t=0;var n=0;var r=0;if(z(1)|0){return 1}r=i[N+1|0]|0;t=N+2|0;n=(N+2|0)+(r|0)|0;if(z(r+1|0)|0){return 1}_(t|0,n|0);N=n|0;return 0}function re(e){e=e|0;var t=0;var n=0;var i=0;if(z(2)|0){return 1}i=W(N+1|0)|0;t=N+3|0;n=(N+3|0)+(i|0)|0;if(z(i+2|0)|0){return 1}_(t|0,n|0);N=n|0;return 0}function se(e){e=e|0;var t=0;var n=0;var i=0;if(z(4)|0){return 1}i=V(N+1|0)|0;t=N+5|0;n=(N+5|0)+(i|0)|0;if(z(i+4|0)|0){return 1}_(t|0,n|0);N=n|0;return 0}function oe(e){e=e|0;return 1}function ae(e){e=e|0;B();N=N+1|0;return 0}function ce(e){e=e|0;var t=0;var n=0;var i=0;i=e-96|0;if(z(i|0)|0){return 1}t=N+1|0;n=(N+1|0)+(i|0)|0;$(t|0,n|0);N=n|0;return 0}function le(e){e=e|0;var t=0;var n=0;var r=0;if(z(1)|0){return 1}r=i[N+1|0]|0;t=N+2|0;n=(N+2|0)+(r|0)|0;if(z(r+1|0)|0){return 1}$(t|0,n|0);N=n|0;return 0}function ue(e){e=e|0;var t=0;var n=0;var i=0;if(z(2)|0){return 1}i=W(N+1|0)|0;t=N+3|0;n=(N+3|0)+(i|0)|0;if(z(i+2|0)|0){return 1}$(t|0,n|0);N=n|0;return 0}function he(e){e=e|0;var t=0;var n=0;var i=0;if(z(4)|0){return 1}i=V(N+1|0)|0;t=N+5|0;n=(N+5|0)+(i|0)|0;if(z(i+4|0)|0){return 1}$(t|0,n|0);N=n|0;return 0}function fe(e){e=e|0;return 1}function de(e){e=e|0;D();N=N+1|0;return 0}function pe(e){e=e|0;A(e-128|0);N=N+1|0;return 0}function ge(e){e=e|0;if(z(1)|0){return 1}A(i[N+1|0]|0);N=N+2|0;return 0}function me(e){e=e|0;if(z(2)|0){return 1}A(W(N+1|0)|0);N=N+3|0;return 0}function ve(e){e=e|0;if(z(4)|0){return 1}E(W(N+1|0)|0,W(N+3|0)|0);N=N+5|0;return 0}function be(e){e=e|0;if(z(8)|0){return 1}C(W(N+1|0)|0,W(N+3|0)|0,W(N+5|0)|0,W(N+7|0)|0);N=N+9|0;return 0}function we(e){e=e|0;y();N=N+1|0;return 0}function ye(e){e=e|0;var t=0;t=e-160|0;if(z(t|0)|0){return 1}k(t|0);N=N+1|0;return 0}function Ae(e){e=e|0;if(z(1)|0){return 1}k(i[N+1|0]|0);N=N+2|0;return 0}function Ee(e){e=e|0;if(z(2)|0){return 1}k(W(N+1|0)|0);N=N+3|0;return 0}function Ce(e){e=e|0;if(z(4)|0){return 1}S(W(N+1|0)|0,W(N+3|0)|0);N=N+5|0;return 0}function Fe(e){e=e|0;if(z(8)|0){return 1}x(W(N+1|0)|0,W(N+3|0)|0,W(N+5|0)|0,W(N+7|0)|0);N=N+9|0;return 0}function ke(e){e=e|0;F();N=N+1|0;return 0}function Se(e){e=e|0;T(e-192|0|0);N=N+1|0;return 0}function xe(e){e|0;T(e|0);N=N+1|0;return 0}function _e(e){e|0;T(e|0);N=N+1|0;return 0}function Be(e){e|0;T(e|0);N=N+1|0;return 0}function $e(e){e|0;T(e|0);N=N+1|0;return 0}function De(e){e=e|0;T(e-192|0|0);N=N+1|0;return 0}function Le(e){e|0;T(e|0);N=N+1|0;return 0}function Te(e){e|0;T(e|0);N=N+1|0;return 0}function Re(e){e|0;T(e|0);N=N+1|0;return 0}function Oe(e){e=e|0;if(z(1)|0){return 1}T(i[N+1|0]|0);N=N+2|0;return 0}function Me(e){e=e|0;if(z(2)|0){return 1}T(W(N+1|0)|0);N=N+3|0;return 0}function Ie(e){e=e|0;if(z(4)|0){return 1}R(W(N+1|0)|0,W(N+3|0)|0);N=N+5|0;return 0}function Pe(e){e=e|0;if(z(8)|0){return 1}O(W(N+1|0)|0,W(N+3|0)|0,W(N+5|0)|0,W(N+7|0)|0);N=N+9|0;return 0}function Ne(e){e=e|0;L((e|0)-224|0);N=N+1|0;return 0}function je(e){e=e|0;d();N=N+1|0;return 0}function Ue(e){e=e|0;f();N=N+1|0;return 0}function He(e){e=e|0;g();N=N+1|0;return 0}function ze(e){e=e|0;p();N=N+1|0;return 0}function We(e){e=e|0;if(z(1)|0){return 1}L(i[N+1|0]|0);N=N+2|0;return 0}function Ve(e){e=e|0;var t=0;var n=0;var r=1.0;var s=0.0;var o=0.0;var a=0.0;if(z(2)|0){return 1}t=i[N+1|0]|0;n=i[N+2|0]|0;if((t|0)&0x80){r=-1.0}s=+(((t|0)&0x7C)>>2);o=+(((t|0)&0x03)<<8|n);if(+s==0.0){l(+(+r*+5.9604644775390625e-8*+o))}else if(+s==31.0){if(+r==1.0){if(+o>0.0){b()}else{m()}}else{if(+o>0.0){w()}else{v()}}}else{l(+(+r*P(+2,+(+s-25.0))*+(1024.0+o)))}N=N+3|0;return 0}function Ge(e){e=e|0;if(z(4)|0){return 1}u(i[N+1|0]|0,i[N+2|0]|0,i[N+3|0]|0,i[N+4|0]|0);N=N+5|0;return 0}function Ke(e){e=e|0;if(z(8)|0){return 1}h(i[N+1|0]|0,i[N+2|0]|0,i[N+3|0]|0,i[N+4|0]|0,i[N+5|0]|0,i[N+6|0]|0,i[N+7|0]|0,i[N+8|0]|0);N=N+9|0;return 0}function Ye(e){e=e|0;return 1}function qe(e){e=e|0;I();N=N+1|0;return 0}var Xe=[G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,K,Y,q,X,Ye,Ye,Ye,Ye,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,J,Z,ee,te,Ye,Ye,Ye,Ye,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ie,re,se,oe,Ye,Ye,Ye,ae,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,le,ue,he,fe,Ye,Ye,Ye,de,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,ge,me,ve,be,Ye,Ye,Ye,we,ye,ye,ye,ye,ye,ye,ye,ye,ye,ye,ye,ye,ye,ye,ye,ye,ye,ye,ye,ye,ye,ye,ye,ye,Ae,Ee,Ce,Fe,Ye,Ye,Ye,ke,Se,Se,Se,Se,Se,Se,De,De,De,De,De,De,De,De,De,De,De,De,De,De,De,De,De,De,Oe,Me,Ie,Pe,Ye,Ye,Ye,Ye,Ne,Ne,Ne,Ne,Ne,Ne,Ne,Ne,Ne,Ne,Ne,Ne,Ne,Ne,Ne,Ne,Ne,Ne,Ne,Ne,je,Ue,He,ze,We,Ve,Ge,Ke,Ye,Ye,Ye,qe];return{parse:H}}},"825a":function(e,t,n){var i=n("861d");e.exports=function(e){if(!i(e))throw TypeError(String(e)+" is not an object");return e}},"82ad":function(e,t,n){"use strict";e.exports=function(e){if(null!=e){if(e instanceof Date){const t=e.getTime(),n=Math.floor(t/1e3);return{secs:n,nsecs:1e3*(t-1e3*n)}}return Object.prototype.hasOwnProperty.call(e,"secs")?{secs:e.secs,nsecs:e.nsecs}:Object.prototype.hasOwnProperty.call(e,"Seconds")?{secs:e.Seconds,nsecs:e.FractionalNanoseconds}:Array.isArray(e)?{secs:e[0],nsecs:e[1]}:void 0}}},8327:function(e,t,n){(function(t){var n="Input must be an string, Buffer or Uint8Array";function i(e){var i;if(e instanceof Uint8Array)i=e;else if(e instanceof t)i=new Uint8Array(e);else{if("string"!==typeof e)throw new Error(n);i=new Uint8Array(t.from(e,"utf8"))}return i}function r(e){return Array.prototype.map.call(e,(function(e){return(e<16?"0":"")+e.toString(16)})).join("")}function s(e){return(4294967296+e).toString(16).substring(1)}function o(e,t,n){for(var i="\n"+e+" = ",r=0;rnew Date(e),1:e=>new Date(1e3*e),2:e=>a.arrayBufferToBignumber(e),3:e=>c.NEG_ONE.minus(a.arrayBufferToBignumber(e)),4:e=>c.TEN.pow(e[0]).times(e[1]),5:e=>c.TWO.pow(e[0]).times(e[1]),32:e=>new h(e),35:e=>new RegExp(e)},e.tags),this.parser=o(t,{log:console.log.bind(console),pushInt:this.pushInt.bind(this),pushInt32:this.pushInt32.bind(this),pushInt32Neg:this.pushInt32Neg.bind(this),pushInt64:this.pushInt64.bind(this),pushInt64Neg:this.pushInt64Neg.bind(this),pushFloat:this.pushFloat.bind(this),pushFloatSingle:this.pushFloatSingle.bind(this),pushFloatDouble:this.pushFloatDouble.bind(this),pushTrue:this.pushTrue.bind(this),pushFalse:this.pushFalse.bind(this),pushUndefined:this.pushUndefined.bind(this),pushNull:this.pushNull.bind(this),pushInfinity:this.pushInfinity.bind(this),pushInfinityNeg:this.pushInfinityNeg.bind(this),pushNaN:this.pushNaN.bind(this),pushNaNNeg:this.pushNaNNeg.bind(this),pushArrayStart:this.pushArrayStart.bind(this),pushArrayStartFixed:this.pushArrayStartFixed.bind(this),pushArrayStartFixed32:this.pushArrayStartFixed32.bind(this),pushArrayStartFixed64:this.pushArrayStartFixed64.bind(this),pushObjectStart:this.pushObjectStart.bind(this),pushObjectStartFixed:this.pushObjectStartFixed.bind(this),pushObjectStartFixed32:this.pushObjectStartFixed32.bind(this),pushObjectStartFixed64:this.pushObjectStartFixed64.bind(this),pushByteString:this.pushByteString.bind(this),pushByteStringStart:this.pushByteStringStart.bind(this),pushUtf8String:this.pushUtf8String.bind(this),pushUtf8StringStart:this.pushUtf8StringStart.bind(this),pushSimpleUnassigned:this.pushSimpleUnassigned.bind(this),pushTagUnassigned:this.pushTagUnassigned.bind(this),pushTagStart:this.pushTagStart.bind(this),pushTagStart4:this.pushTagStart4.bind(this),pushTagStart8:this.pushTagStart8.bind(this),pushBreak:this.pushBreak.bind(this)},this._heap)}get _depth(){return this._parents.length}get _currentParent(){return this._parents[this._depth-1]}get _ref(){return this._currentParent.ref}_closeParent(){var e=this._parents.pop();if(e.length>0)throw new Error(`Missing ${e.length} elements`);switch(e.type){case c.PARENT.TAG:this._push(this.createTag(e.ref[0],e.ref[1]));break;case c.PARENT.BYTE_STRING:this._push(this.createByteString(e.ref,e.length));break;case c.PARENT.UTF8_STRING:this._push(this.createUtf8String(e.ref,e.length));break;case c.PARENT.MAP:if(e.values%2>0)throw new Error("Odd number of elements in the map");this._push(this.createMap(e.ref,e.length));break;case c.PARENT.OBJECT:if(e.values%2>0)throw new Error("Odd number of elements in the map");this._push(this.createObject(e.ref,e.length));break;case c.PARENT.ARRAY:this._push(this.createArray(e.ref,e.length));break;default:break}this._currentParent&&this._currentParent.type===c.PARENT.TAG&&this._dec()}_dec(){const e=this._currentParent;e.length<0||(e.length--,0===e.length&&this._closeParent())}_push(e,t){const n=this._currentParent;switch(n.values++,n.type){case c.PARENT.ARRAY:case c.PARENT.BYTE_STRING:case c.PARENT.UTF8_STRING:n.length>-1?this._ref[this._ref.length-n.length]=e:this._ref.push(e),this._dec();break;case c.PARENT.OBJECT:null!=n.tmpKey?(this._ref[n.tmpKey]=e,n.tmpKey=null,this._dec()):(n.tmpKey=e,"string"!==typeof n.tmpKey&&(n.type=c.PARENT.MAP,n.ref=a.buildMap(n.ref)));break;case c.PARENT.MAP:null!=n.tmpKey?(this._ref.set(n.tmpKey,e),n.tmpKey=null,this._dec()):n.tmpKey=e;break;case c.PARENT.TAG:this._ref.push(e),t||this._dec();break;default:throw new Error("Unknown parent type")}}_createParent(e,t,n){this._parents[this._depth]={type:t,length:n,ref:e,values:0,tmpKey:null}}_reset(){this._res=[],this._parents=[{type:c.PARENT.ARRAY,length:-1,ref:this._res,values:0,tmpKey:null}]}createTag(e,t){const n=this._knownTags[e];return n?n(t):new u(e,t)}createMap(e,t){return e}createObject(e,t){return e}createArray(e,t){return e}createByteString(e,t){return i.concat(e)}createByteStringFromHeap(e,t){return e===t?i.alloc(0):i.from(this._heap.slice(e,t))}createInt(e){return e}createInt32(e,t){return a.buildInt32(e,t)}createInt64(e,t,n,i){return a.buildInt64(e,t,n,i)}createFloat(e){return e}createFloatSingle(e,t,n,i){return r.read([e,t,n,i],0,!1,23,4)}createFloatDouble(e,t,n,i,s,o,a,c){return r.read([e,t,n,i,s,o,a,c],0,!1,52,8)}createInt32Neg(e,t){return-1-a.buildInt32(e,t)}createInt64Neg(e,t,n,i){const r=a.buildInt32(e,t),o=a.buildInt32(n,i);return r>c.MAX_SAFE_HIGH?c.NEG_ONE.minus(new s(r).times(c.SHIFT32).plus(o)):-1-(r*c.SHIFT32+o)}createTrue(){return!0}createFalse(){return!1}createNull(){return null}createUndefined(){}createInfinity(){return 1/0}createInfinityNeg(){return-1/0}createNaN(){return NaN}createNaNNeg(){return NaN}createUtf8String(e,t){return e.join("")}createUtf8StringFromHeap(e,t){return e===t?"":this._buffer.toString("utf8",e,t)}createSimpleUnassigned(e){return new l(e)}pushInt(e){this._push(this.createInt(e))}pushInt32(e,t){this._push(this.createInt32(e,t))}pushInt64(e,t,n,i){this._push(this.createInt64(e,t,n,i))}pushFloat(e){this._push(this.createFloat(e))}pushFloatSingle(e,t,n,i){this._push(this.createFloatSingle(e,t,n,i))}pushFloatDouble(e,t,n,i,r,s,o,a){this._push(this.createFloatDouble(e,t,n,i,r,s,o,a))}pushInt32Neg(e,t){this._push(this.createInt32Neg(e,t))}pushInt64Neg(e,t,n,i){this._push(this.createInt64Neg(e,t,n,i))}pushTrue(){this._push(this.createTrue())}pushFalse(){this._push(this.createFalse())}pushNull(){this._push(this.createNull())}pushUndefined(){this._push(this.createUndefined())}pushInfinity(){this._push(this.createInfinity())}pushInfinityNeg(){this._push(this.createInfinityNeg())}pushNaN(){this._push(this.createNaN())}pushNaNNeg(){this._push(this.createNaNNeg())}pushArrayStart(){this._createParent([],c.PARENT.ARRAY,-1)}pushArrayStartFixed(e){this._createArrayStartFixed(e)}pushArrayStartFixed32(e,t){const n=a.buildInt32(e,t);this._createArrayStartFixed(n)}pushArrayStartFixed64(e,t,n,i){const r=a.buildInt64(e,t,n,i);this._createArrayStartFixed(r)}pushObjectStart(){this._createObjectStartFixed(-1)}pushObjectStartFixed(e){this._createObjectStartFixed(e)}pushObjectStartFixed32(e,t){const n=a.buildInt32(e,t);this._createObjectStartFixed(n)}pushObjectStartFixed64(e,t,n,i){const r=a.buildInt64(e,t,n,i);this._createObjectStartFixed(r)}pushByteStringStart(){this._parents[this._depth]={type:c.PARENT.BYTE_STRING,length:-1,ref:[],values:0,tmpKey:null}}pushByteString(e,t){this._push(this.createByteStringFromHeap(e,t))}pushUtf8StringStart(){this._parents[this._depth]={type:c.PARENT.UTF8_STRING,length:-1,ref:[],values:0,tmpKey:null}}pushUtf8String(e,t){this._push(this.createUtf8StringFromHeap(e,t))}pushSimpleUnassigned(e){this._push(this.createSimpleUnassigned(e))}pushTagStart(e){this._parents[this._depth]={type:c.PARENT.TAG,length:1,ref:[e]}}pushTagStart4(e,t){this.pushTagStart(a.buildInt32(e,t))}pushTagStart8(e,t,n,i){this.pushTagStart(a.buildInt64(e,t,n,i))}pushTagUnassigned(e){this._push(this.createTag(e))}pushBreak(){if(this._currentParent.length>-1)throw new Error("Unexpected break");this._closeParent()}_createObjectStartFixed(e){0!==e?this._createParent({},c.PARENT.OBJECT,e):this._push(this.createObject({}))}_createArrayStartFixed(e){0!==e?this._createParent(new Array(e),c.PARENT.ARRAY,e):this._push(this.createArray([]))}_decode(e){if(0===e.byteLength)throw new Error("Input too short");this._reset(),this._heap8.set(e);const t=this.parser.parse(e.byteLength);if(this._depth>1){while(0===this._currentParent.length)this._closeParent();if(this._depth>1)throw new Error("Undeterminated nesting")}if(t>0)throw new Error("Failed to parse");if(0===this._res.length)throw new Error("No valid result")}decodeFirst(e){return this._decode(e),this._res[0]}decodeAll(e){return this._decode(e),this._res}static decode(e,t){"string"===typeof e&&(e=i.from(e,t||"hex"));const n=new f({size:e.length});return n.decodeFirst(e)}static decodeAll(e,t){"string"===typeof e&&(e=i.from(e,t||"hex"));const n=new f({size:e.length});return n.decodeAll(e)}}f.decodeFirst=f.decode,e.exports=f}).call(this,n("c8ba"))},"857d":function(e,t,n){"use strict";const i=n("7766"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t,n={})=>{const r=await e.post("key/gen",{timeout:n.timeout,signal:n.signal,searchParams:s({arg:t,...n}),headers:n.headers}),o=await r.json();return i(o)})},"85b8":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("96a8"),s=r(n("c2c8")),o=n("0eff"),a=n("0fc0"),{serializeDAGNodeLike:c}=n("f140"),l=n("94bf");t=e.exports,t.codec=l.codec,t.defaultHashAlg=l.defaultHashAlg;const u=(e,t)=>l.cid(e,t),h=e=>a.isDAGNode(e)?e.serialize():c(e.Data,e.Links),f=e=>{const t=s.PBNode.decode(e),n=t.Links.map(e=>new o(e.Name,e.Tsize,e.Hash)),r=null==t.Data?i.alloc(0):t.Data;return new a(r,n,e.length)};t.serialize=h,t.deserialize=f,t.cid=u},"85be":function(e,t,n){"use strict";const i=n("901e").BigNumber;t.MT={POS_INT:0,NEG_INT:1,BYTE_STRING:2,UTF8_STRING:3,ARRAY:4,MAP:5,TAG:6,SIMPLE_FLOAT:7},t.TAG={DATE_STRING:0,DATE_EPOCH:1,POS_BIGINT:2,NEG_BIGINT:3,DECIMAL_FRAC:4,BIGFLOAT:5,BASE64URL_EXPECTED:21,BASE64_EXPECTED:22,BASE16_EXPECTED:23,CBOR:24,URI:32,BASE64URL:33,BASE64:34,REGEXP:35,MIME:36},t.NUMBYTES={ZERO:0,ONE:24,TWO:25,FOUR:26,EIGHT:27,INDEFINITE:31},t.SIMPLE={FALSE:20,TRUE:21,NULL:22,UNDEFINED:23},t.SYMS={NULL:Symbol("null"),UNDEFINED:Symbol("undef"),PARENT:Symbol("parent"),BREAK:Symbol("break"),STREAM:Symbol("stream")},t.SHIFT32=Math.pow(2,32),t.SHIFT16=Math.pow(2,16),t.MAX_SAFE_HIGH=2097151,t.NEG_ONE=new i(-1),t.TEN=new i(10),t.TWO=new i(2),t.PARENT={ARRAY:0,OBJECT:1,MAP:2,TAG:3,BYTE_STRING:4,UTF8_STRING:5}},"861d":function(e,t){e.exports=function(e){return"object"===typeof e?null!==e:"function"===typeof e}},8707:function(e,t,n){var i=n("b639"),r=i.Buffer;function s(e,t){for(var n in e)t[n]=e[n]}function o(e,t,n){return r(e,t,n)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?e.exports=i:(s(i,t),t.Buffer=o),s(r,o),o.from=function(e,t,n){if("number"===typeof e)throw new TypeError("Argument must not be a number");return r(e,t,n)},o.alloc=function(e,t,n){if("number"!==typeof e)throw new TypeError("Argument must be a number");var i=r(e);return void 0!==t?"string"===typeof n?i.fill(t,n):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!==typeof e)throw new TypeError("Argument must be a number");return r(e)},o.allocUnsafeSlow=function(e){if("number"!==typeof e)throw new TypeError("Argument must be a number");return i.SlowBuffer(e)}},8741:function(e,t,n){"use strict";var i=n("cfce").defined,r=n("2612");function s(e,t,n){for(var s=Object.keys(n),o=t.length,a=new Array(o),c=0;cnew r(e["/"])),peers:e.Peers||[],blocksReceived:new i(e.BlocksReceived),dataReceived:new i(e.DataReceived),blocksSent:new i(e.BlocksSent),dataSent:new i(e.DataSent),dupBlksReceived:new i(e.DupBlksReceived),dupDataReceived:new i(e.DupDataReceived)}}e.exports=s(e=>async(t={})=>{const n=await e.post("bitswap/stat",{searchParams:o(t),timeout:t.timeout,signal:t.signal,headers:t.headers});return a(await n.json())})},"8c04":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("c449"),s=n("542b"),o=n("9878"),a=n("15e4"),c=n("74fd"),l=n("91d3");e.exports=o(e=>async(t,n,o={})=>{const u=new l,h=c([u.signal,o.signal]),f=await e.post("object/patch/append-data",{timeout:o.timeout,signal:h,searchParams:a({arg:""+(i.isBuffer(t)?new r(t):t),...o}),...await s(n,u,o.headers)}),{Hash:d}=await f.json();return new r(d)})},"8e99":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("8431"),s=n("5ee5");class o extends r{createTag(e,t){return`${e}(${t})`}createInt(e){return super.createInt(e).toString()}createInt32(e,t){return super.createInt32(e,t).toString()}createInt64(e,t,n,i){return super.createInt64(e,t,n,i).toString()}createInt32Neg(e,t){return super.createInt32Neg(e,t).toString()}createInt64Neg(e,t,n,i){return super.createInt64Neg(e,t,n,i).toString()}createTrue(){return"true"}createFalse(){return"false"}createFloat(e){const t=super.createFloat(e);return s.isNegativeZero(e)?"-0_1":t+"_1"}createFloatSingle(e,t,n,i){const r=super.createFloatSingle(e,t,n,i);return r+"_2"}createFloatDouble(e,t,n,i,r,s,o,a){const c=super.createFloatDouble(e,t,n,i,r,s,o,a);return c+"_3"}createByteString(e,t){const n=e.join(", ");return-1===t?`(_ ${n})`:"h'"+n}createByteStringFromHeap(e,t){const n=i.from(super.createByteStringFromHeap(e,t)).toString("hex");return`h'${n}'`}createInfinity(){return"Infinity_1"}createInfinityNeg(){return"-Infinity_1"}createNaN(){return"NaN_1"}createNaNNeg(){return"-NaN_1"}createNull(){return"null"}createUndefined(){return"undefined"}createSimpleUnassigned(e){return`simple(${e})`}createArray(e,t){const n=super.createArray(e,t);return-1===t?`[_ ${n.join(", ")}]`:`[${n.join(", ")}]`}createMap(e,t){const n=super.createMap(e),i=Array.from(n.keys()).reduce(a(n),"");return-1===t?`{_ ${i}}`:`{${i}}`}createObject(e,t){const n=super.createObject(e),i=Object.keys(n).reduce(a(n),"");return-1===t?`{_ ${i}}`:`{${i}}`}createUtf8String(e,t){const n=e.join(", ");return-1===t?`(_ ${n})`:`"${n}"`}createUtf8StringFromHeap(e,t){const n=i.from(super.createUtf8StringFromHeap(e,t)).toString("utf8");return`"${n}"`}static diagnose(e,t){"string"===typeof e&&(e=i.from(e,t||"hex"));const n=new o;return n.decodeFirst(e)}}function a(e){return(t,n)=>t?`${t}, ${n}: ${e[n]}`:`${n}: ${e[n]}`}e.exports=o},"901e":function(e,t,n){var i;(function(r){"use strict";var s,o=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,a=Math.ceil,c=Math.floor,l="[BigNumber Error] ",u=l+"Number primitive has more than 15 significant digits: ",h=1e14,f=14,d=9007199254740991,p=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],g=1e7,m=1e9;function v(e){var t,n,i,r=M.prototype={constructor:M,toString:null,valueOf:null},s=new M(1),k=20,S=4,x=-7,_=21,B=-1e7,$=1e7,D=!1,L=1,T=0,R={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:" ",suffix:""},O="0123456789abcdefghijklmnopqrstuvwxyz";function M(e,t){var r,s,a,l,h,p,g,m,v=this;if(!(v instanceof M))return new M(e,t);if(null==t){if(e&&!0===e._isBigNumber)return v.s=e.s,void(!e.c||e.e>$?v.c=v.e=null:e.e=10;h/=10,l++);return void(l>$?v.c=v.e=null:(v.e=l,v.c=[e]))}m=String(e)}else{if(!o.test(m=String(e)))return i(v,m,p);v.s=45==m.charCodeAt(0)?(m=m.slice(1),-1):1}(l=m.indexOf("."))>-1&&(m=m.replace(".","")),(h=m.search(/e/i))>0?(l<0&&(l=h),l+=+m.slice(h+1),m=m.substring(0,h)):l<0&&(l=m.length)}else{if(A(t,2,O.length,"Base"),10==t)return v=new M(e),j(v,k+v.e+1,S);if(m=String(e),p="number"==typeof e){if(0*e!=0)return i(v,m,p,t);if(v.s=1/e<0?(m=m.slice(1),-1):1,M.DEBUG&&m.replace(/^0\.0*|\./,"").length>15)throw Error(u+e)}else v.s=45===m.charCodeAt(0)?(m=m.slice(1),-1):1;for(r=O.slice(0,t),l=h=0,g=m.length;hl){l=g;continue}}else if(!a&&(m==m.toUpperCase()&&(m=m.toLowerCase())||m==m.toLowerCase()&&(m=m.toUpperCase()))){a=!0,h=-1,l=0;continue}return i(v,String(e),p,t)}p=!1,m=n(m,t,10,v.s),(l=m.indexOf("."))>-1?m=m.replace(".",""):l=m.length}for(h=0;48===m.charCodeAt(h);h++);for(g=m.length;48===m.charCodeAt(--g););if(m=m.slice(h,++g)){if(g-=h,p&&M.DEBUG&&g>15&&(e>d||e!==c(e)))throw Error(u+v.s*e);if((l=l-h-1)>$)v.c=v.e=null;else if(l=_)?C(c,o):F(c,o,"0");else if(e=j(new M(e),t,n),s=e.e,c=w(e.c),a=c.length,1==i||2==i&&(t<=s||s<=x)){for(;aa){if(--t>0)for(c+=".";t--;c+="0");}else if(t+=s-a,t>0)for(s+1==a&&(c+=".");t--;c+="0");return e.s<0&&r?"-"+c:c}function P(e,t){for(var n,i=1,r=new M(e[0]);i=10;r/=10,i++);return(n=i+n*f-1)>$?e.c=e.e=null:n=10;l/=10,r++);if(s=t-r,s<0)s+=f,o=t,u=m[d=0],g=u/v[r-o-1]%10|0;else if(d=a((s+1)/f),d>=m.length){if(!i)break e;for(;m.length<=d;m.push(0));u=g=0,r=1,s%=f,o=s-f+1}else{for(u=l=m[d],r=1;l>=10;l/=10,r++);s%=f,o=s-f+r,g=o<0?0:u/v[r-o-1]%10|0}if(i=i||t<0||null!=m[d+1]||(o<0?u:u%v[r-o-1]),i=n<4?(g||i)&&(0==n||n==(e.s<0?3:2)):g>5||5==g&&(4==n||i||6==n&&(s>0?o>0?u/v[r-o]:0:m[d-1])%10&1||n==(e.s<0?8:7)),t<1||!m[0])return m.length=0,i?(t-=e.e+1,m[0]=v[(f-t%f)%f],e.e=-t||0):m[0]=e.e=0,e;if(0==s?(m.length=d,l=1,d--):(m.length=d+1,l=v[f-s],m[d]=o>0?c(u/v[r-o]%v[o])*l:0),i)for(;;){if(0==d){for(s=1,o=m[0];o>=10;o/=10,s++);for(o=m[0]+=l,l=1;o>=10;o/=10,l++);s!=l&&(e.e++,m[0]==h&&(m[0]=1));break}if(m[d]+=l,m[d]!=h)break;m[d--]=0,l=1}for(s=m.length;0===m[--s];m.pop());}e.e>$?e.c=e.e=null:e.e=_?C(t,n):F(t,n,"0"),e.s<0?"-"+t:t)}return M.clone=v,M.ROUND_UP=0,M.ROUND_DOWN=1,M.ROUND_CEIL=2,M.ROUND_FLOOR=3,M.ROUND_HALF_UP=4,M.ROUND_HALF_DOWN=5,M.ROUND_HALF_EVEN=6,M.ROUND_HALF_CEIL=7,M.ROUND_HALF_FLOOR=8,M.EUCLID=9,M.config=M.set=function(e){var t,n;if(null!=e){if("object"!=typeof e)throw Error(l+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(n=e[t],A(n,0,m,t),k=n),e.hasOwnProperty(t="ROUNDING_MODE")&&(n=e[t],A(n,0,8,t),S=n),e.hasOwnProperty(t="EXPONENTIAL_AT")&&(n=e[t],n&&n.pop?(A(n[0],-m,0,t),A(n[1],0,m,t),x=n[0],_=n[1]):(A(n,-m,m,t),x=-(_=n<0?-n:n))),e.hasOwnProperty(t="RANGE"))if(n=e[t],n&&n.pop)A(n[0],-m,-1,t),A(n[1],1,m,t),B=n[0],$=n[1];else{if(A(n,-m,m,t),!n)throw Error(l+t+" cannot be zero: "+n);B=-($=n<0?-n:n)}if(e.hasOwnProperty(t="CRYPTO")){if(n=e[t],n!==!!n)throw Error(l+t+" not true or false: "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw D=!n,Error(l+"crypto unavailable");D=n}else D=n}if(e.hasOwnProperty(t="MODULO_MODE")&&(n=e[t],A(n,0,9,t),L=n),e.hasOwnProperty(t="POW_PRECISION")&&(n=e[t],A(n,0,m,t),T=n),e.hasOwnProperty(t="FORMAT")){if(n=e[t],"object"!=typeof n)throw Error(l+t+" not an object: "+n);R=n}if(e.hasOwnProperty(t="ALPHABET")){if(n=e[t],"string"!=typeof n||/^.$|[+-.\s]|(.).*\1/.test(n))throw Error(l+t+" invalid: "+n);O=n}}return{DECIMAL_PLACES:k,ROUNDING_MODE:S,EXPONENTIAL_AT:[x,_],RANGE:[B,$],CRYPTO:D,MODULO_MODE:L,POW_PRECISION:T,FORMAT:R,ALPHABET:O}},M.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!M.DEBUG)return!0;var t,n,i=e.c,r=e.e,s=e.s;e:if("[object Array]"=={}.toString.call(i)){if((1===s||-1===s)&&r>=-m&&r<=m&&r===c(r)){if(0===i[0]){if(0===r&&1===i.length)return!0;break e}if(t=(r+1)%f,t<1&&(t+=f),String(i[0]).length==t){for(t=0;t=h||n!==c(n))break e;if(0!==n)return!0}}}else if(null===i&&null===r&&(null===s||1===s||-1===s))return!0;throw Error(l+"Invalid BigNumber: "+e)},M.maximum=M.max=function(){return P(arguments,r.lt)},M.minimum=M.min=function(){return P(arguments,r.gt)},M.random=function(){var e=9007199254740992,t=Math.random()*e&2097151?function(){return c(Math.random()*e)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)};return function(e){var n,i,r,o,u,h=0,d=[],g=new M(s);if(null==e?e=k:A(e,0,m),o=a(e/f),D)if(crypto.getRandomValues){for(n=crypto.getRandomValues(new Uint32Array(o*=2));h>>11),u>=9e15?(i=crypto.getRandomValues(new Uint32Array(2)),n[h]=i[0],n[h+1]=i[1]):(d.push(u%1e14),h+=2);h=o/2}else{if(!crypto.randomBytes)throw D=!1,Error(l+"crypto unavailable");for(n=crypto.randomBytes(o*=7);h=9e15?crypto.randomBytes(7).copy(n,h):(d.push(u%1e14),h+=7);h=o/7}if(!D)for(;h=10;u/=10,h++);hn-1&&(null==o[r+1]&&(o[r+1]=0),o[r+1]+=o[r]/n|0,o[r]%=n)}return o.reverse()}return function(i,r,s,o,a){var c,l,u,h,f,d,p,g,m=i.indexOf("."),v=k,b=S;for(m>=0&&(h=T,T=0,i=i.replace(".",""),g=new M(r),d=g.pow(i.length-m),T=h,g.c=n(F(w(d.c),d.e,"0"),10,s,e),g.e=g.c.length),p=n(i,r,s,a?(c=O,e):(c=e,O)),u=h=p.length;0==p[--h];p.pop());if(!p[0])return c.charAt(0);if(m<0?--u:(d.c=p,d.e=u,d.s=o,d=t(d,g,v,b,s),p=d.c,f=d.r,u=d.e),l=u+v+1,m=p[l],h=s/2,f=f||l<0||null!=p[l+1],f=b<4?(null!=m||f)&&(0==b||b==(d.s<0?3:2)):m>h||m==h&&(4==b||f||6==b&&1&p[l-1]||b==(d.s<0?8:7)),l<1||!p[0])i=f?F(c.charAt(1),-v,c.charAt(0)):c.charAt(0);else{if(p.length=l,f)for(--s;++p[--l]>s;)p[l]=0,l||(++u,p=[1].concat(p));for(h=p.length;!p[--h];);for(m=0,i="";m<=h;i+=c.charAt(p[m++]));i=F(i,u,c.charAt(0))}return i}}(),t=function(){function e(e,t,n){var i,r,s,o,a=0,c=e.length,l=t%g,u=t/g|0;for(e=e.slice();c--;)s=e[c]%g,o=e[c]/g|0,i=u*s+o*l,r=l*s+i%g*g+a,a=(r/n|0)+(i/g|0)+u*o,e[c]=r%n;return a&&(e=[a].concat(e)),e}function t(e,t,n,i){var r,s;if(n!=i)s=n>i?1:-1;else for(r=s=0;rt[r]?1:-1;break}return s}function n(e,t,n,i){for(var r=0;n--;)e[n]-=r,r=e[n]1;e.splice(0,1));}return function(i,r,s,o,a){var l,u,d,p,g,m,v,w,y,A,E,C,F,k,S,x,_,B=i.s==r.s?1:-1,$=i.c,D=r.c;if(!$||!$[0]||!D||!D[0])return new M(i.s&&r.s&&($?!D||$[0]!=D[0]:D)?$&&0==$[0]||!D?0*B:B/0:NaN);for(w=new M(B),y=w.c=[],u=i.e-r.e,B=s+u+1,a||(a=h,u=b(i.e/f)-b(r.e/f),B=B/f|0),d=0;D[d]==($[d]||0);d++);if(D[d]>($[d]||0)&&u--,B<0)y.push(1),p=!0;else{for(k=$.length,x=D.length,d=0,B+=2,g=c(a/(D[0]+1)),g>1&&(D=e(D,g,a),$=e($,g,a),x=D.length,k=$.length),F=x,A=$.slice(0,x),E=A.length;E=a/2&&S++;do{if(g=0,l=t(D,A,x,E),l<0){if(C=A[0],x!=E&&(C=C*a+(A[1]||0)),g=c(C/S),g>1){g>=a&&(g=a-1),m=e(D,g,a),v=m.length,E=A.length;while(1==t(m,A,v,E))g--,n(m,x=10;B/=10,d++);j(w,s+(w.e=d+u*f-1)+1,o,p)}else w.e=u,w.r=+p;return w}}(),i=function(){var e=/^(-?)0([xbo])(?=\w[\w.]*$)/i,t=/^([^.]+)\.$/,n=/^\.([^.]+)$/,i=/^-?(Infinity|NaN)$/,r=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(s,o,a,c){var u,h=a?o:o.replace(r,"");if(i.test(h))s.s=isNaN(h)?null:h<0?-1:1;else{if(!a&&(h=h.replace(e,(function(e,t,n){return u="x"==(n=n.toLowerCase())?16:"b"==n?2:8,c&&c!=u?e:t})),c&&(u=c,h=h.replace(t,"$1").replace(n,"0.$1")),o!=h))return new M(h,u);if(M.DEBUG)throw Error(l+"Not a"+(c?" base "+c:"")+" number: "+o);s.s=null}s.c=s.e=null}}(),r.absoluteValue=r.abs=function(){var e=new M(this);return e.s<0&&(e.s=1),e},r.comparedTo=function(e,t){return y(this,new M(e,t))},r.decimalPlaces=r.dp=function(e,t){var n,i,r,s=this;if(null!=e)return A(e,0,m),null==t?t=S:A(t,0,8),j(new M(s),e+s.e+1,t);if(!(n=s.c))return null;if(i=((r=n.length-1)-b(this.e/f))*f,r=n[r])for(;r%10==0;r/=10,i--);return i<0&&(i=0),i},r.dividedBy=r.div=function(e,n){return t(this,new M(e,n),k,S)},r.dividedToIntegerBy=r.idiv=function(e,n){return t(this,new M(e,n),0,1)},r.exponentiatedBy=r.pow=function(e,t){var n,i,r,o,u,h,d,p,g,m=this;if(e=new M(e),e.c&&!e.isInteger())throw Error(l+"Exponent not an integer: "+U(e));if(null!=t&&(t=new M(t)),h=e.e>14,!m.c||!m.c[0]||1==m.c[0]&&!m.e&&1==m.c.length||!e.c||!e.c[0])return g=new M(Math.pow(+U(m),h?2-E(e):+U(e))),t?g.mod(t):g;if(d=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new M(NaN);i=!d&&m.isInteger()&&t.isInteger(),i&&(m=m.mod(t))}else{if(e.e>9&&(m.e>0||m.e<-1||(0==m.e?m.c[0]>1||h&&m.c[1]>=24e7:m.c[0]<8e13||h&&m.c[0]<=9999975e7)))return o=m.s<0&&E(e)?-0:0,m.e>-1&&(o=1/o),new M(d?1/o:o);T&&(o=a(T/f+2))}for(h?(n=new M(.5),d&&(e.s=1),p=E(e)):(r=Math.abs(+U(e)),p=r%2),g=new M(s);;){if(p){if(g=g.times(m),!g.c)break;o?g.c.length>o&&(g.c.length=o):i&&(g=g.mod(t))}if(r){if(r=c(r/2),0===r)break;p=r%2}else if(e=e.times(n),j(e,e.e+1,1),e.e>14)p=E(e);else{if(r=+U(e),0===r)break;p=r%2}m=m.times(m),o?m.c&&m.c.length>o&&(m.c.length=o):i&&(m=m.mod(t))}return i?g:(d&&(g=s.div(g)),t?g.mod(t):o?j(g,T,S,u):g)},r.integerValue=function(e){var t=new M(this);return null==e?e=S:A(e,0,8),j(t,t.e+1,e)},r.isEqualTo=r.eq=function(e,t){return 0===y(this,new M(e,t))},r.isFinite=function(){return!!this.c},r.isGreaterThan=r.gt=function(e,t){return y(this,new M(e,t))>0},r.isGreaterThanOrEqualTo=r.gte=function(e,t){return 1===(t=y(this,new M(e,t)))||0===t},r.isInteger=function(){return!!this.c&&b(this.e/f)>this.c.length-2},r.isLessThan=r.lt=function(e,t){return y(this,new M(e,t))<0},r.isLessThanOrEqualTo=r.lte=function(e,t){return-1===(t=y(this,new M(e,t)))||0===t},r.isNaN=function(){return!this.s},r.isNegative=function(){return this.s<0},r.isPositive=function(){return this.s>0},r.isZero=function(){return!!this.c&&0==this.c[0]},r.minus=function(e,t){var n,i,r,s,o=this,a=o.s;if(e=new M(e,t),t=e.s,!a||!t)return new M(NaN);if(a!=t)return e.s=-t,o.plus(e);var c=o.e/f,l=e.e/f,u=o.c,d=e.c;if(!c||!l){if(!u||!d)return u?(e.s=-t,e):new M(d?o:NaN);if(!u[0]||!d[0])return d[0]?(e.s=-t,e):new M(u[0]?o:3==S?-0:0)}if(c=b(c),l=b(l),u=u.slice(),a=c-l){for((s=a<0)?(a=-a,r=u):(l=c,r=d),r.reverse(),t=a;t--;r.push(0));r.reverse()}else for(i=(s=(a=u.length)<(t=d.length))?a:t,a=t=0;t0)for(;t--;u[n++]=0);for(t=h-1;i>a;){if(u[--i]=0;){for(n=0,p=C[r]%y,m=C[r]/y|0,o=c,s=r+o;s>r;)l=E[--o]%y,u=E[o]/y|0,a=m*l+u*p,l=p*l+a%y*y+v[s]+n,n=(l/w|0)+(a/y|0)+m*u,v[s--]=l%w;v[s]=n}return n?++i:v.splice(0,1),N(e,v,i)},r.negated=function(){var e=new M(this);return e.s=-e.s||null,e},r.plus=function(e,t){var n,i=this,r=i.s;if(e=new M(e,t),t=e.s,!r||!t)return new M(NaN);if(r!=t)return e.s=-t,i.minus(e);var s=i.e/f,o=e.e/f,a=i.c,c=e.c;if(!s||!o){if(!a||!c)return new M(r/0);if(!a[0]||!c[0])return c[0]?e:new M(a[0]?i:0*r)}if(s=b(s),o=b(o),a=a.slice(),r=s-o){for(r>0?(o=s,n=c):(r=-r,n=a),n.reverse();r--;n.push(0));n.reverse()}for(r=a.length,t=c.length,r-t<0&&(n=c,c=a,a=n,t=r),r=0;t;)r=(a[--t]=a[t]+c[t]+r)/h|0,a[t]=h===a[t]?0:a[t]%h;return r&&(a=[r].concat(a),++o),N(e,a,o)},r.precision=r.sd=function(e,t){var n,i,r,s=this;if(null!=e&&e!==!!e)return A(e,1,m),null==t?t=S:A(t,0,8),j(new M(s),e,t);if(!(n=s.c))return null;if(r=n.length-1,i=r*f+1,r=n[r]){for(;r%10==0;r/=10,i--);for(r=n[0];r>=10;r/=10,i++);}return e&&s.e+1>i&&(i=s.e+1),i},r.shiftedBy=function(e){return A(e,-d,d),this.times("1e"+e)},r.squareRoot=r.sqrt=function(){var e,n,i,r,s,o=this,a=o.c,c=o.s,l=o.e,u=k+4,h=new M("0.5");if(1!==c||!a||!a[0])return new M(!c||c<0&&(!a||a[0])?NaN:a?o:1/0);if(c=Math.sqrt(+U(o)),0==c||c==1/0?(n=w(a),(n.length+l)%2==0&&(n+="0"),c=Math.sqrt(+n),l=b((l+1)/2)-(l<0||l%2),c==1/0?n="1e"+l:(n=c.toExponential(),n=n.slice(0,n.indexOf("e")+1)+l),i=new M(n)):i=new M(c+""),i.c[0])for(l=i.e,c=l+u,c<3&&(c=0);;)if(s=i,i=h.times(s.plus(t(o,s,u,1))),w(s.c).slice(0,c)===(n=w(i.c)).slice(0,c)){if(i.e0&&g>0){for(s=g%a||a,h=p.substr(0,s);s0&&(h+=u+p.slice(s)),d&&(h="-"+h)}i=f?h+(n.decimalSeparator||"")+((c=+n.fractionGroupSize)?f.replace(new RegExp("\\d{"+c+"}\\B","g"),"$&"+(n.fractionGroupSeparator||"")):f):h}return(n.prefix||"")+i+(n.suffix||"")},r.toFraction=function(e){var n,i,r,o,a,c,u,h,d,g,m,v,b=this,y=b.c;if(null!=e&&(u=new M(e),!u.isInteger()&&(u.c||1!==u.s)||u.lt(s)))throw Error(l+"Argument "+(u.isInteger()?"out of range: ":"not an integer: ")+U(u));if(!y)return new M(b);for(n=new M(s),d=i=new M(s),r=h=new M(s),v=w(y),a=n.e=v.length-b.e-1,n.c[0]=p[(c=a%f)<0?f+c:c],e=!e||u.comparedTo(n)>0?a>0?n:d:u,c=$,$=1/0,u=new M(v),h.c[0]=0;;){if(g=t(u,n,0,1),o=i.plus(g.times(r)),1==o.comparedTo(e))break;i=r,r=o,d=h.plus(g.times(o=d)),h=o,n=u.minus(g.times(o=n)),u=o}return o=t(e.minus(i),r,0,1),h=h.plus(o.times(d)),i=i.plus(o.times(r)),h.s=d.s=b.s,a*=2,m=t(d,r,a,S).minus(b).abs().comparedTo(t(h,i,a,S).minus(b).abs())<1?[d,r]:[h,i],$=c,m},r.toNumber=function(){return+U(this)},r.toPrecision=function(e,t){return null!=e&&A(e,1,m),I(this,e,t,2)},r.toString=function(e){var t,i=this,r=i.s,s=i.e;return null===s?r?(t="Infinity",r<0&&(t="-"+t)):t="NaN":(null==e?t=s<=x||s>=_?C(w(i.c),s):F(w(i.c),s,"0"):10===e?(i=j(new M(i),k+s+1,S),t=F(w(i.c),i.e,"0")):(A(e,2,O.length,"Base"),t=n(F(w(i.c),s,"0"),10,e,r,!0)),r<0&&i.c[0]&&(t="-"+t)),t},r.valueOf=r.toJSON=function(){return U(this)},r._isBigNumber=!0,null!=e&&M.set(e),M}function b(e){var t=0|e;return e>0||e===t?t:t-1}function w(e){for(var t,n,i=1,r=e.length,s=e[0]+"";il^n?1:-1;for(a=(c=r.length)<(l=s.length)?c:l,o=0;os[o]^n?1:-1;return c==l?0:c>l^n?1:-1}function A(e,t,n,i){if(en||e!==c(e))throw Error(l+(i||"Argument")+("number"==typeof e?en?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function E(e){var t=e.c.length-1;return b(e.e/f)==t&&e.c[t]%2!=0}function C(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function F(e,t,n){var i,r;if(t<0){for(r=n+".";++t;r+=n);e=r+e}else if(i=e.length,++t>i){for(r=n,t-=i;--t;r+=n);e+=r}else t({get:n("0e02")(e),stat:n("526a")(e),put:n("bfac")(e),rm:n("3156")(e)})},9058:function(e,t,n){const i=n("451a"),r=n("0f5d"),s=n("be97");function o(e){return e&=511,e&&512-e}async function a(e,t){const n=o(t);n&&await e.next(n)}e.exports=e=>(e=e||{},e.highWaterMark=e.highWaterMark||16384,t=>async function*(){const n=s(t);let o,c,l,u;try{while(1){let t;try{const{done:e,value:i}=await n.next(512);if(e)return;t=i}catch(h){if("ERR_UNDER_READ"===h.code)return;throw h}const s=r.decode(t,e.filenameEncoding);if(!s)continue;if("gnu-long-path"===s.type){const{done:t,value:i}=await n.next(s.size);if(t)return;o=r.decodeLongPath(i,e.filenameEncoding),await a(n,s.size);continue}if("gnu-long-link-path"===s.type){const{done:t,value:i}=await n.next(s.size);if(t)return;c=r.decodeLongPath(i,e.filenameEncoding),await a(n,s.size);continue}if("pax-global-header"===s.type){const{done:t,value:i}=await n.next(s.size);if(t)return;l=r.decodePax(i,e.filenameEncoding),await a(n,s.size);continue}if("pax-header"===s.type){const{done:t,value:i}=await n.next(s.size);if(t)return;u=r.decodePax(i,e.filenameEncoding),l&&(u={...l,...u}),await a(n,s.size);continue}if(o&&(s.name=o,o=null),c&&(s.linkname=c,c=null),u&&(u.path&&(s.name=u.path),u.linkpath&&(s.linkname=u.linkpath),u.size&&(s.size=parseInt(u.size,10)),s.pax=u,u=null),!s.size||"directory"===s.type){yield{header:s,body:async function*(){}()};continue}let f=s.size;const d=i(),p=await n.nextLte(Math.min(f,e.highWaterMark));f-=p.value.length,f||d.resolve();const g=async function*(){try{yield p.value;while(f){const{done:e,value:t}=await n.nextLte(f);if(e)return void(f=0);f-=t.length,yield t}}finally{d.resolve()}}();if(yield{header:s,body:g},await d.promise,f)for await(const e of g);await a(n,s.size)}}finally{await n.return()}}())},"90a6":function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async(t={})=>{const n=await e.post("shutdown",{timeout:t.timeout,signal:t.signal,searchParams:r(t),headers:t.headers});await n.text()})},"90e3":function(e,t){var n=0,i=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++n+i).toString(36)}},9112:function(e,t,n){var i=n("83ab"),r=n("9bf2"),s=n("5c6c");e.exports=i?function(e,t,n){return r.f(e,t,s(1,n))}:function(e,t,n){return e[t]=n,e}},9152:function(e,t){t.read=function(e,t,n,i,r){var s,o,a=8*r-i-1,c=(1<>1,u=-7,h=n?r-1:0,f=n?-1:1,d=e[t+h];for(h+=f,s=d&(1<<-u)-1,d>>=-u,u+=a;u>0;s=256*s+e[t+h],h+=f,u-=8);for(o=s&(1<<-u)-1,s>>=-u,u+=i;u>0;o=256*o+e[t+h],h+=f,u-=8);if(0===s)s=1-l;else{if(s===c)return o?NaN:1/0*(d?-1:1);o+=Math.pow(2,i),s-=l}return(d?-1:1)*o*Math.pow(2,s-i)},t.write=function(e,t,n,i,r,s){var o,a,c,l=8*s-r-1,u=(1<>1,f=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,d=i?0:s-1,p=i?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,o=u):(o=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-o))<1&&(o--,c*=2),t+=o+h>=1?f/c:f*Math.pow(2,1-h),t*c>=2&&(o++,c/=2),o+h>=u?(a=0,o=u):o+h>=1?(a=(t*c-1)*Math.pow(2,r),o+=h):(a=t*Math.pow(2,h-1)*Math.pow(2,r),o=0));r>=8;e[n+d]=255&a,d+=p,a/=256,r-=8);for(o=o<0;e[n+d]=255&o,d+=p,o/=256,l-=8);e[n+d-p]|=128*g}},"91d3":function(e,t,n){"use strict";const{AbortController:i,AbortSignal:r}="undefined"!==typeof self?self:"undefined"!==typeof window?window:void 0;e.exports=i,e.exports.AbortSignal=r,e.exports.default=i},"91f5":function(e,t,n){var i=n("95e9"),r=536870911,s=["int32","int64","uint32","uint64","sint32","sint64","bool","fixed64","sfixed64","double","fixed32","sfixed32","float"],o=function(e){var t={};while(e.length)switch(e[0]){case"[":case",":e.shift();var n=e.shift();if("("===n&&(n=e.shift(),e.shift()),"="!==e[0])throw new Error("Unexpected token in field options: "+e[0]);if(e.shift(),"]"===e[0])throw new Error("Unexpected ] in field option");t[n]=e.shift();break;case"]":return e.shift(),t;default:throw new Error("Unexpected token in field options: "+e[0])}throw new Error("No closing tag for field options")},a=function(e){var t={name:null,type:null,tag:-1,map:null,oneof:null,required:!1,repeated:!1,options:{}};while(e.length)switch(e[0]){case"=":e.shift(),t.tag=Number(e.shift());break;case"map":if(t.type="map",t.map={from:null,to:null},e.shift(),"<"!==e[0])throw new Error("Unexpected token in map type: "+e[0]);if(e.shift(),t.map.from=e.shift(),","!==e[0])throw new Error("Unexpected token in map type: "+e[0]);if(e.shift(),t.map.to=e.shift(),">"!==e[0])throw new Error("Unexpected token in map type: "+e[0]);e.shift(),t.name=e.shift();break;case"repeated":case"required":case"optional":var n=e.shift();t.required="required"===n,t.repeated="repeated"===n,t.type=e.shift(),t.name=e.shift();break;case"[":t.options=o(e);break;case";":if(null===t.name)throw new Error("Missing field name");if(null===t.type)throw new Error("Missing type in message field: "+t.name);if(-1===t.tag)throw new Error("Missing tag number in message field: "+t.name);return e.shift(),t;default:throw new Error("Unexpected token in message field: "+e[0])}throw new Error("No ; found for message field")},c=function(e){var t={enums:[],options:{},messages:[],fields:[],extends:[],extensions:null};while(e.length)switch(e[0]){case"map":case"repeated":case"optional":case"required":t.fields.push(a(e));break;case"enum":t.enums.push(g(e));break;case"message":t.messages.push(h(e));break;case"extensions":t.extensions=u(e);break;case"oneof":e.shift();var n=e.shift();if("{"!==e[0])throw new Error("Unexpected token in oneof: "+e[0]);e.shift();while("}"!==e[0]){e.unshift("optional");var i=a(e);i.oneof=n,t.fields.push(i)}e.shift();break;case"extend":t.extends.push(l(e));break;case";":e.shift();break;case"reserved":e.shift();while(";"!==e[0])e.shift();break;case"option":var r=m(e);if(void 0!==t.options[r.name])throw new Error("Duplicate option "+r.name);t.options[r.name]=r.value;break;default:e.unshift("optional"),t.fields.push(a(e))}return t},l=function(e){var t={name:e[1],message:h(e)};return t},u=function(e){e.shift();var t=Number(e.shift());if(isNaN(t))throw new Error("Invalid from in extensions definition");if("to"!==e.shift())throw new Error("Expected keyword 'to' in extensions definition");var n=e.shift();if("max"===n&&(n=r),n=Number(n),isNaN(n))throw new Error("Invalid to in extensions definition");if(";"!==e.shift())throw new Error("Missing ; in extensions definition");return{from:t,to:n}},h=function(e){e.shift();var t=1,n=[],i={name:e.shift(),options:{},enums:[],extends:[],messages:[],fields:[]};if("{"!==e[0])throw new Error("Expected { but found "+e[0]);e.shift();while(e.length){if("{"===e[0]?t++:"}"===e[0]&&t--,!t)return e.shift(),n=c(n),i.enums=n.enums,i.messages=n.messages,i.fields=n.fields,i.extends=n.extends,i.extensions=n.extensions,i.options=n.options,i;n.push(e.shift())}if(t)throw new Error("No closing tag for message")},f=function(e){e.shift();var t=e.shift();if(";"!==e[0])throw new Error("Expected ; but found "+e[0]);return e.shift(),t},d=function(e){if(e.shift(),"="!==e[0])throw new Error("Expected = but found "+e[0]);e.shift();var t=e.shift();switch(t){case'"proto2"':t=2;break;case'"proto3"':t=3;break;default:throw new Error("Expected protobuf syntax version but found "+t)}if(";"!==e[0])throw new Error("Expected ; but found "+e[0]);return e.shift(),t},p=function(e){if(e.length<4)throw new Error("Invalid enum value: "+e.slice(0,3).join(" "));if("="!==e[1])throw new Error("Expected = but found "+e[1]);if(";"!==e[3]&&"["!==e[3])throw new Error("Expected ; or [ but found "+e[1]);var t=e.shift();e.shift();var n={value:null,options:{}};return n.value=Number(e.shift()),"["===e[0]&&(n.options=o(e)),e.shift(),{name:t,val:n}},g=function(e){e.shift();var t={},n={name:e.shift(),values:{},options:{}};if("{"!==e[0])throw new Error("Expected { but found "+e[0]);e.shift();while(e.length){if("}"===e[0])return e.shift(),";"===e[0]&&e.shift(),n;if("option"!==e[0]){var i=p(e);n.values[i.name]=i.val}else t=m(e),n.options[t.name]=t.value}throw new Error("No closing tag for enum")},m=function(e){var t=null,n=null,i=function(e){return"true"===e||"false"!==e&&e.replace(/^"+|"+$/gm,"")};while(e.length){if(";"===e[0])return e.shift(),{name:t,value:n};switch(e[0]){case"option":e.shift();var r="("===e[0];if(r&&e.shift(),t=e.shift(),r){if(")"!==e[0])throw new Error("Expected ) but found "+e[0]);e.shift()}"."===e[0][0]&&(t+=e.shift());break;case"=":if(e.shift(),null===t)throw new Error("Expected key for option with value: "+e[0]);if(n=i(e.shift()),"optimize_for"===t&&!/^(SPEED|CODE_SIZE|LITE_RUNTIME)$/.test(n))throw new Error("Unexpected value for option optimize_for: "+n);"{"===n&&(n=v(e));break;default:throw new Error("Unexpected token in option: "+e[0])}}},v=function(e){var t=function(e){return"true"===e||"false"!==e&&e.replace(/^"+|"+$/gm,"")},n={};while(e.length){if("}"===e[0])return e.shift(),n;var i="("===e[0];i&&e.shift();var r=e.shift();if(i){if(")"!==e[0])throw new Error("Expected ) but found "+e[0]);e.shift()}var s=null;switch(e[0]){case":":if(void 0!==n[r])throw new Error("Duplicate option map key "+r);e.shift(),s=t(e.shift()),"{"===s&&(s=v(e)),n[r]=s,";"===e[0]&&e.shift();break;case"{":if(e.shift(),s=v(e),void 0===n[r]&&(n[r]=[]),!Array.isArray(n[r]))throw new Error("Duplicate option map key "+r);n[r].push(s);break;default:throw new Error("Unexpected token in option map: "+e[0])}}throw new Error("No closing tag for option map")},b=function(e){e.shift();var t=e.shift().replace(/^"+|"+$/gm,"");if(";"!==e[0])throw new Error("Unexpected token: "+e[0]+'. Expected ";"');return e.shift(),t},w=function(e){e.shift();var t={name:e.shift(),methods:[],options:{}};if("{"!==e[0])throw new Error("Expected { but found "+e[0]);e.shift();while(e.length){if("}"===e[0])return e.shift(),";"===e[0]&&e.shift(),t;switch(e[0]){case"option":var n=m(e);if(void 0!==t.options[n.name])throw new Error("Duplicate option "+n.name);t.options[n.name]=n.value;break;case"rpc":t.methods.push(y(e));break;default:throw new Error("Unexpected token in service: "+e[0])}}throw new Error("No closing tag for service")},y=function(e){e.shift();var t={name:e.shift(),input_type:null,output_type:null,client_streaming:!1,server_streaming:!1,options:{}};if("("!==e[0])throw new Error("Expected ( but found "+e[0]);if(e.shift(),"stream"===e[0]&&(e.shift(),t.client_streaming=!0),t.input_type=e.shift(),")"!==e[0])throw new Error("Expected ) but found "+e[0]);if(e.shift(),"returns"!==e[0])throw new Error("Expected returns but found "+e[0]);if(e.shift(),"("!==e[0])throw new Error("Expected ( but found "+e[0]);if(e.shift(),"stream"===e[0]&&(e.shift(),t.server_streaming=!0),t.output_type=e.shift(),")"!==e[0])throw new Error("Expected ) but found "+e[0]);if(e.shift(),";"===e[0])return e.shift(),t;if("{"!==e[0])throw new Error("Expected { but found "+e[0]);e.shift();while(e.length){if("}"===e[0])return e.shift(),";"===e[0]&&e.shift(),t;if("option"!==e[0])throw new Error("Unexpected token in rpc options: "+e[0]);var n=m(e);if(void 0!==t.options[n.name])throw new Error("Duplicate option "+n.name);t.options[n.name]=n.value}throw new Error("No closing tag for rpc")},A=function(e){for(var t=i(e.toString()),n=0;nt.extensions.to)throw new Error(t.name+" does not declare "+e.tag+" as an extension number");t.fields.push(e)}))}))})),o.messages.forEach((function(e){e.fields.forEach((function(t){var n,i,r,a;function c(e){return e.name===t.type}function l(e){return e.name===r}if(t.options&&"true"===t.options.packed&&-1===s.indexOf(t.type)){if(-1===t.type.indexOf(".")){if(e.enums&&e.enums.some(c))return}else{if(n=t.type.split("."),n.length>2)throw new Error("what is this?");if(i=n[0],r=n[1],o.messages.some((function(e){if(e.name===i)return a=e,e})),a&&a.enums&&a.enums.some(l))return}throw new Error("Fields of type "+t.type+' cannot be declared [packed=true]. Only repeated fields of primitive numeric types (types which use the varint, 32-bit, or 64-bit wire types) can be declared "packed". See https://developers.google.com/protocol-buffers/docs/encoding#optional')}}))})),o};e.exports=A},"921e":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("c449"),s=n("7766"),o=n("9878"),a=n("15e4");e.exports=o((e,t)=>{const o=async function*(t,n={}){Array.isArray(t)||(t=[t]);const o=await e.post("refs",{timeout:n.timeout,signal:n.signal,searchParams:a({arg:t.map(e=>""+(i.isBuffer(e)?new r(e):e)),...n}),headers:n.headers,transform:s});yield*o.ndjson()};return o.local=n("0ae1")(t),o})},9263:function(e,t,n){"use strict";var i=n("ad6d"),r=n("9f7f"),s=RegExp.prototype.exec,o=String.prototype.replace,a=s,c=function(){var e=/a/,t=/b*/g;return s.call(e,"a"),s.call(t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),l=r.UNSUPPORTED_Y||r.BROKEN_CARET,u=void 0!==/()??/.exec("")[1],h=c||u||l;h&&(a=function(e){var t,n,r,a,h=this,f=l&&h.sticky,d=i.call(h),p=h.source,g=0,m=e;return f&&(d=d.replace("y",""),-1===d.indexOf("g")&&(d+="g"),m=String(e).slice(h.lastIndex),h.lastIndex>0&&(!h.multiline||h.multiline&&"\n"!==e[h.lastIndex-1])&&(p="(?: "+p+")",m=" "+m,g++),n=new RegExp("^(?:"+p+")",d)),u&&(n=new RegExp("^"+p+"$(?!\\s)",d)),c&&(t=h.lastIndex),r=s.call(f?n:h,m),f?r?(r.input=r.input.slice(g),r[0]=r[0].slice(g),r.index=h.lastIndex,h.lastIndex+=r[0].length):h.lastIndex=0:c&&r&&(h.lastIndex=h.global?r.index+r[0].length:t),u&&r&&r.length>1&&o.call(r[0],n,(function(){for(a=1;aasync(t={})=>{const{Strings:n}=await(await e.post("pubsub/ls",{timeout:t.timeout,signal:t.signal,searchParams:r(t),headers:t.headers})).json();return n||[]})},"94bf":function(e,t,n){"use strict";const i=n("c449"),r=n("5d98"),s=n("0e80");t=e.exports,t.codec=r.DAG_PB,t.defaultHashAlg=r.SHA2_256;const o=async(e,n)=>{const o={cidVersion:1,hashAlg:t.defaultHashAlg},a=Object.assign(o,n),c=await s(e,a.hashAlg),l=r.print[t.codec],u=new i(a.cidVersion,l,c);return u};t.cid=o},"94ca":function(e,t,n){var i=n("d039"),r=/#|\.prototype\./,s=function(e,t){var n=a[o(e)];return n==l||n!=c&&("function"==typeof t?i(t):!!t)},o=s.normalize=function(e){return String(e).replace(r,".").toLowerCase()},a=s.data={},c=s.NATIVE="N",l=s.POLYFILL="P";e.exports=s},"94e4":function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("c449"),s=n("2054"),o=n("675c"),a=n("5d98"),c=n("354e"),l=n(1),u=n("449d");function h(e={}){return{add:n("59bb")(e),addAll:n("74f2")(e),bitswap:n("f97d")(e),block:n("904e")(e),bootstrap:n("4923")(e),cat:n("de5e")(e),commands:n("a4b7")(e),config:n("af58")(e),dag:n("5ae5")(e),dht:n("ffe1")(e),diag:n("0150")(e),dns:n("e798")(e),files:n("f278")(e),get:n("3124")(e),getEndpointConfig:n("ac7d")(e),id:n("abe8")(e),key:n("5a90")(e),log:n("333d")(e),ls:n("c16b")(e),mount:n("423e")(e),name:n("05a4")(e),object:n("2f06")(e),pin:n("4d59")(e),ping:n("ac98")(e),pubsub:n("40d5")(e),refs:n("921e")(e),repo:n("ca35")(e),resolve:n("9a3b")(e),stats:n("ecf4")(e),stop:n("90a6")(e),shutdown:n("90a6")(e),swarm:n("546f")(e),version:n("5144")(e)}}Object.assign(h,{Buffer:i,CID:r,multiaddr:s,multibase:o,multicodec:a,multihash:c,globSource:l,urlSource:u}),e.exports=h},"956c":function(e,t,n){"use strict";function i(e){if("number"===typeof e){if(i.codes[e])return i.codes[e];throw new Error("no protocol with code: "+e)}if("string"===typeof e||e instanceof String){if(i.names[e])return i.names[e];throw new Error("no protocol with name: "+e)}throw new Error("invalid protocol id type: "+e)}const r=-1;function s(e,t,n,i,r){return{code:e,size:t,name:n,resolvable:Boolean(i),path:Boolean(r)}}i.lengthPrefixedVarSize=r,i.V=r,i.table=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,r,"ip6zone"],[53,r,"dns","resolvable"],[54,r,"dns4","resolvable"],[55,r,"dns6","resolvable"],[56,r,"dnsaddr","resolvable"],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,r,"unix",!1,"path"],[421,r,"ipfs"],[421,r,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,r,"garlic64"],[460,0,"quic"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[777,r,"memory"]],i.names={},i.codes={},i.table.map(e=>{const t=s.apply(null,e);i.codes[t.code]=t,i.names[t.name]=t}),i.object=s,e.exports=i},"95e9":function(e,t){e.exports=function(e){var t=function(e){var t=e.indexOf("//");return t>-1?e.slice(0,t):e},n=function(){var e=!1;return function(t){return"/*"===t?(e=!0,!1):"*/"===t?(e=!1,!1):!e}},i=function(e){return e.trim()};return e.replace(/([;,{}()=:[\]<>]|\/\*|\*\/)/g," $1 ").split(/\n/).map(i).filter(Boolean).map(t).map(i).filter(Boolean).join("\n").split(/\s+|\n+/gm).filter(n())}},"96a8":function(e,t,n){"use strict";var i=n("08df");const{Buffer:r}=n("b639");var s=n("d0f1"),o=function(e){if(!e)return null;var t={};return Object.keys(e).forEach((function(n){t[n]=e[n].value})),t};e.exports=function(e,t){if(t||(t={}),!e)throw new Error("Pass in a .proto string or a protobuf-schema parsed object");var n="object"!==typeof e||r.isBuffer(e)?i.parse(e):e,a=function(){var e=this;s(n,t.encodings||{}).forEach((function(t){e[t.name]=o(t.values)||t}))};return a.prototype.toString=function(){return i.stringify(n)},a.prototype.toJSON=function(){return n},new a}},"96cf":function(e,t,n){var i=function(e){"use strict";var t,n=Object.prototype,i=n.hasOwnProperty,r="function"===typeof Symbol?Symbol:{},s=r.iterator||"@@iterator",o=r.asyncIterator||"@@asyncIterator",a=r.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(L){c=function(e,t,n){return e[t]=n}}function l(e,t,n,i){var r=t&&t.prototype instanceof m?t:m,s=Object.create(r.prototype),o=new B(i||[]);return s._invoke=k(e,n,o),s}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(L){return{type:"throw",arg:L}}}e.wrap=l;var h="suspendedStart",f="suspendedYield",d="executing",p="completed",g={};function m(){}function v(){}function b(){}var w={};w[s]=function(){return this};var y=Object.getPrototypeOf,A=y&&y(y($([])));A&&A!==n&&i.call(A,s)&&(w=A);var E=b.prototype=m.prototype=Object.create(w);function C(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function F(e,t){function n(r,s,o,a){var c=u(e[r],e,s);if("throw"!==c.type){var l=c.arg,h=l.value;return h&&"object"===typeof h&&i.call(h,"__await")?t.resolve(h.__await).then((function(e){n("next",e,o,a)}),(function(e){n("throw",e,o,a)})):t.resolve(h).then((function(e){l.value=e,o(l)}),(function(e){return n("throw",e,o,a)}))}a(c.arg)}var r;function s(e,i){function s(){return new t((function(t,r){n(e,i,t,r)}))}return r=r?r.then(s,s):s()}this._invoke=s}function k(e,t,n){var i=h;return function(r,s){if(i===d)throw new Error("Generator is already running");if(i===p){if("throw"===r)throw s;return D()}n.method=r,n.arg=s;while(1){var o=n.delegate;if(o){var a=S(o,n);if(a){if(a===g)continue;return a}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===h)throw i=p,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=d;var c=u(e,t,n);if("normal"===c.type){if(i=n.done?p:f,c.arg===g)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(i=p,n.method="throw",n.arg=c.arg)}}}function S(e,n){var i=e.iterator[n.method];if(i===t){if(n.delegate=null,"throw"===n.method){if(e.iterator["return"]&&(n.method="return",n.arg=t,S(e,n),"throw"===n.method))return g;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return g}var r=u(i,e.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,g;var s=r.arg;return s?s.done?(n[e.resultName]=s.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,g):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function _(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function B(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function $(e){if(e){var n=e[s];if(n)return n.call(e);if("function"===typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function n(){while(++r=0;--s){var o=this.tryEntries[s],a=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var c=i.call(o,"catchLoc"),l=i.call(o,"finallyLoc");if(c&&l){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),_(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var i=n.completion;if("throw"===i.type){var r=i.arg;_(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:$(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),g}},e}(e.exports);try{regeneratorRuntime=i}catch(r){Function("r","regeneratorRuntime = r")(i)}},9878:function(e,t,n){"use strict";const i=n("0abd"),r=e=>t=>e(new i(t),t);e.exports=r},9975:function(e,t,n){"use strict";const i=async e=>{let t;for await(const n of e)t=n;return t};e.exports=i},"9a3b":function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async(t,n={})=>{const i=await e.post("resolve",{timeout:n.timeout,signal:n.signal,searchParams:r({arg:t,...n}),headers:n.headers}),{Path:s}=await i.json();return s})},"9b35":function(e,t,n){"use strict";const i=n("7766"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t={})=>{const n=await e.post("key/list",{timeout:t.timeout,signal:t.signal,searchParams:s(t),headers:t.headers}),r=await n.json();return(r.Keys||[]).map(e=>i(e))})},"9bd8":function(e,t,n){"use strict";const i=n("c449"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t,n={})=>{const r=await e.post("bitswap/unwant",{timeout:n.timeout,signal:n.signal,searchParams:s({arg:"string"===typeof t?t:new i(t).toString(),...n}),headers:n.headers});return r.json()})},"9bdd":function(e,t,n){var i=n("825a");e.exports=function(e,t,n,r){try{return r?t(i(n)[0],n[1]):t(n)}catch(o){var s=e["return"];throw void 0!==s&&i(s.call(e)),o}}},"9bf2":function(e,t,n){var i=n("83ab"),r=n("0cfb"),s=n("825a"),o=n("c04e"),a=Object.defineProperty;t.f=i?a:function(e,t,n){if(s(e),t=o(t,!0),s(n),r)try{return a(e,t,n)}catch(i){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},"9c3b":function(e,t,n){"use strict";const{Buffer:i}=n("b639");var r=n("cfce").defined,s=n("2612");function o(e,t,n,o,a){for(var c=Object.keys(o),l=n.length,u={},h=0;h-1){if(b)throw new Error("only one of the properties defined in oneof "+w+" can be set");b=!0}}for(v=0;v{const t=new Array(4);for(let n=0;n<4;n++)t[n]=255&e,e>>=8;return i.from(t)};e.exports={fromNumberTo32BitBuf:r}},"9ed3":function(e,t,n){"use strict";var i=n("ae93").IteratorPrototype,r=n("7c73"),s=n("5c6c"),o=n("d44e"),a=n("3f8c"),c=function(){return this};e.exports=function(e,t,n){var l=t+" Iterator";return e.prototype=r(i,{next:s(1,n)}),o(e,l,!1,!0),a[l]=c,e}},"9ef7":function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async function(t,n,i={}){const s=await e.post("files/chmod",{timeout:i.timeout,signal:i.signal,searchParams:r({arg:t,mode:n,...i}),headers:i.headers});await s.text()})},"9f7f":function(e,t,n){"use strict";var i=n("d039");function r(e,t){return RegExp(e,t)}t.UNSUPPORTED_Y=i((function(){var e=r("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),t.BROKEN_CARET=i((function(){var e=r("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},a127:function(e,t,n){"use strict";function i(e){const t=e[Symbol.asyncIterator]?e[Symbol.asyncIterator]():e[Symbol.iterator](),n=[],i={peek:()=>t.next(),push:e=>{n.push(e)},next:()=>n.length?{done:!1,value:n.shift()}:t.next()};return e[Symbol.asyncIterator]?i[Symbol.asyncIterator]=()=>i:i[Symbol.iterator]=()=>i,i}e.exports=i},a1a8:function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("1175"),s=n("956c"),o=n("c449"),a=n("40ff"),c=n("2612");function l(e,t){return t instanceof i?l.toString(e,t):l.toBuffer(e,t)}function u(e){if(!r.isIP(e))throw new Error("invalid ip address");return r.toBuffer(e)}function h(e){const t=r.toString(e);if(!t||!r.isIP(t))throw new Error("invalid ip address");return t}function f(e){const t=i.alloc(2);return t.writeUInt16BE(e,0),t}function d(e){return e.readUInt16BE(0)}function p(e){const t=i.from(e),n=i.from(c.encode(t.length));return i.concat([n,t])}function g(e){const t=c.decode(e);if(e=e.slice(c.decode.bytes),e.length!==t)throw new Error("inconsistent lengths");return e.toString()}function m(e){const t=new o(e).multihash,n=i.from(c.encode(t.length));return i.concat([n,t])}function v(e){const t=c.decode(e),n=e.slice(c.decode.bytes);if(n.length!==t)throw new Error("inconsistent lengths");return a.encode("base58btc",n).toString().slice(1)}function b(e){const t=e.split(":");if(2!==t.length)throw new Error("failed to parse onion addr: "+t+" does not contain a port number");if(16!==t[0].length)throw new Error("failed to parse onion addr: "+t[0]+" not a Tor onion address.");const n=a.decode("b"+t[0]),r=parseInt(t[1],10);if(r<1||r>65536)throw new Error("Port number is not in range(1, 65536)");const s=f(r);return i.concat([n,s])}function w(e){const t=e.split(":");if(2!==t.length)throw new Error("failed to parse onion addr: "+t+" does not contain a port number");if(56!==t[0].length)throw new Error("failed to parse onion addr: "+t[0]+" not a Tor onion3 address.");const n=a.decode("b"+t[0]),r=parseInt(t[1],10);if(r<1||r>65536)throw new Error("Port number is not in range(1, 65536)");const s=f(r);return i.concat([n,s])}function y(e){const t=e.slice(0,e.length-2),n=e.slice(e.length-2),i=a.encode("base32",t).toString().slice(1),r=d(n);return i+":"+r}e.exports=l,l.toString=function(e,t){switch(e=s(e),e.code){case 4:case 41:return h(t);case 6:case 273:case 33:case 132:return d(t);case 53:case 54:case 55:case 56:case 400:case 777:return g(t);case 421:return v(t);case 444:return y(t);case 445:return y(t);default:return t.toString("hex")}},l.toBuffer=function(e,t){switch(e=s(e),e.code){case 4:return u(t);case 41:return u(t);case 6:case 273:case 33:case 132:return f(parseInt(t,10));case 53:case 54:case 55:case 56:case 400:case 777:return p(t);case 421:return m(t);case 444:return b(t);case 445:return w(t);default:return i.from(t,"hex")}}},a262:function(e,t,n){"use strict";class i{constructor(e,t,n,i){this.name=e,this.code=t,this.alphabet=i,n&&i&&(this.engine=n(i))}encode(e){return this.engine.encode(e)}decode(e){return this.engine.decode(e)}isImplemented(){return this.engine}}e.exports=i},a36d:function(e,t,n){"use strict";e.exports={SendingQuery:0,PeerResponse:1,FinalPeer:2,QueryError:3,Provider:4,Value:5,AddingPeer:6,DialingPeer:7}},a390:function(e,t,n){"use strict";const{Buffer:i}=n("b639");class r{constructor(e,t,n,r){this.name=e,this.code=t,this.codeBuf=i.from(this.code),this.alphabet=r,this.engine=n(r)}encode(e){return this.engine.encode(e)}decode(e){for(const t of e)if(this.alphabet&&this.alphabet.indexOf(t)<0)throw new Error(`invalid character '${t}' in '${e}'`);return this.engine.decode(e)}}e.exports=r},a3b6:function(e,t,n){"use strict";const{BigNumber:i}=n("901e"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t={})=>{const n=await e.post("repo/stat",{timeout:t.timeout,signal:t.signal,searchParams:s(t),headers:t.headers}),r=await n.json();return{numObjects:new i(r.NumObjects),repoSize:new i(r.RepoSize),repoPath:r.RepoPath,version:r.Version,storageMax:new i(r.StorageMax)}})},a41e:function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async function*(t,n={}){const i=await e.post("name/resolve",{timeout:n.timeout,signal:n.signal,searchParams:r({arg:t,stream:!0,...n}),headers:n.headers});for await(const e of i.ndjson())yield e.Path})},a4b7:function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async(t={})=>{const n=await e.post("commands",{timeout:t.timeout,signal:t.signal,searchParams:r(t),headers:t.headers});return n.json()})},a5e1:function(e,t,n){"use strict";const i=n("2054"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t,n={})=>{t&&"object"===typeof t&&!i.isMultiaddr(t)&&(n=t,t=null);const r=await e.post("bootstrap/add",{timeout:n.timeout,signal:n.signal,searchParams:s({arg:t,...n}),headers:n.headers});return r.json()})},a691:function(e,t){var n=Math.ceil,i=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?i:n)(e)}},a79d:function(e,t,n){"use strict";var i=n("23e7"),r=n("c430"),s=n("fea9"),o=n("d039"),a=n("d066"),c=n("4840"),l=n("cdf9"),u=n("6eeb"),h=!!s&&o((function(){s.prototype["finally"].call({then:function(){}},(function(){}))}));i({target:"Promise",proto:!0,real:!0,forced:h},{finally:function(e){var t=c(this,a("Promise")),n="function"==typeof e;return this.then(n?function(n){return l(t,e()).then((function(){return n}))}:e,n?function(n){return l(t,e()).then((function(){throw n}))}:e)}}),r||"function"!=typeof s||s.prototype["finally"]||u(s.prototype,"finally",a("Promise").prototype["finally"])},aa4d:function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async(t={})=>{const n=await(await e.post("repo/version",{timeout:t.timeout,signal:t.signal,searchParams:r(t),headers:t.headers})).json();return n.Version})},ab3a:function(e,t,n){"use strict";const i=n("42a7"),{Buffer:r}=n("b639"),s=n("a390"),o=n("1bc1"),a=()=>({encode:e=>r.from(e).toString(),decode:e=>r.from(e)}),c=[["identity","\0",a,""],["base2","0",o(1),"01"],["base8","7",o(3),"01234567"],["base10","9",i,"0123456789"],["base16","f",o(4),"0123456789abcdef"],["base16upper","F",o(4),"0123456789ABCDEF"],["base32hex","v",o(5),"0123456789abcdefghijklmnopqrstuv"],["base32hexupper","V",o(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV"],["base32hexpad","t",o(5),"0123456789abcdefghijklmnopqrstuv="],["base32hexpadupper","T",o(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV="],["base32","b",o(5),"abcdefghijklmnopqrstuvwxyz234567"],["base32upper","B",o(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"],["base32pad","c",o(5),"abcdefghijklmnopqrstuvwxyz234567="],["base32padupper","C",o(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567="],["base32z","h",o(5),"ybndrfg8ejkmcpqxot1uwisza345h769"],["base36","k",i,"0123456789abcdefghijklmnopqrstuvwxyz"],["base36upper","K",i,"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"],["base58btc","z",i,"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"],["base58flickr","Z",i,"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],["base64","m",o(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"],["base64pad","M",o(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="],["base64url","u",o(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"],["base64urlpad","U",o(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_="]],l=c.reduce((e,t)=>(e[t[0]]=new s(t[0],t[1],t[2],t[3]),e),{}),u=c.reduce((e,t)=>(e[t[1]]=l[t[0]],e),{});e.exports={names:l,codes:u}},abb1:function(e,t,n){"use strict";const{Blob:i}=n("4196");function r(e){return ArrayBuffer.isView(e)||e instanceof ArrayBuffer}function s(e){return"undefined"!==typeof i&&e instanceof i}function o(e){return"object"===typeof e&&(e.path||e.content)}e.exports={isBytes:r,isBlob:s,isFileObject:o}},abe8:function(e,t,n){"use strict";const i=n("7766"),r=n("2054"),s=n("9878"),o=n("15e4");e.exports=s(e=>async(t={})=>{const n=await e.post("id",{timeout:t.timeout,signal:t.signal,searchParams:o(t),headers:t.headers}),s=await n.json(),a=i(s);return a.addresses&&(a.addresses=a.addresses.map(e=>r(e))),a})},ac1f:function(e,t,n){"use strict";var i=n("23e7"),r=n("9263");i({target:"RegExp",proto:!0,forced:/./.exec!==r},{exec:r})},ac7d:function(e,t,n){"use strict";const i=n("9878");e.exports=i(e=>()=>{const t=new URL(e.opts.base);return{host:t.hostname,port:t.port,protocol:t.protocol,pathname:t.pathname,"api-path":t.pathname}})},ac7f:function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async(t={})=>{const n=await e.post("diag/net",{timeout:t.timeout,signal:t.signal,searchParams:r(t),headers:t.headers});return n.json()})},ac98:function(e,t,n){"use strict";const i=n("7766"),r=n("9878"),s=n("15e4");e.exports=r(e=>async function*(t,n={}){const r=await e.post("ping",{timeout:n.timeout,signal:n.signal,searchParams:s({arg:""+t,...n}),headers:n.headers,transform:i});yield*r.ndjson()})},ad3d:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return E}));var i=n("ecee"),r="undefined"!==typeof window?window:"undefined"!==typeof e?e:"undefined"!==typeof self?self:{};function s(e,t){return t={exports:{}},e(t,t.exports),t.exports}var o=s((function(e){(function(t){var n=function(e,t,i){if(!l(t)||h(t)||f(t)||d(t)||c(t))return t;var r,s=0,o=0;if(u(t))for(r=[],o=t.length;s=0||Object.prototype.hasOwnProperty.call(e,i)&&(n[i]=e[i]);return n},h=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},r=(t.children||[]).map(g.bind(null,e)),s=Object.keys(t.attributes||{}).reduce((function(e,n){var i=t.attributes[n];switch(n){case"class":e["class"]=d(i);break;case"style":e["style"]=f(i);break;default:e.attrs[n]=i}return e}),{class:{},style:{},attrs:{}}),o=i.class,a=void 0===o?{}:o,c=i.style,h=void 0===c?{}:c,m=i.attrs,v=void 0===m?{}:m,b=u(i,["class","style","attrs"]);return"string"===typeof t?t:e(t.tag,l({class:p(s.class,a),style:l({},s.style,h),attrs:l({},s.attrs,v)},b,{props:n}),r)}var m=!1;try{m=!0}catch(C){}function v(){var e;!m&&console&&"function"===typeof console.error&&(e=console).error.apply(e,arguments)}function b(e,t){return Array.isArray(t)&&t.length>0||!Array.isArray(t)&&t?c({},e,t):{}}function w(e){var t,n=(t={"fa-spin":e.spin,"fa-pulse":e.pulse,"fa-fw":e.fixedWidth,"fa-border":e.border,"fa-li":e.listItem,"fa-inverse":e.inverse,"fa-flip-horizontal":"horizontal"===e.flip||"both"===e.flip,"fa-flip-vertical":"vertical"===e.flip||"both"===e.flip},c(t,"fa-"+e.size,null!==e.size),c(t,"fa-rotate-"+e.rotation,null!==e.rotation),c(t,"fa-pull-"+e.pull,null!==e.pull),c(t,"fa-swap-opacity",e.swapOpacity),t);return Object.keys(n).map((function(e){return n[e]?e:null})).filter((function(e){return e}))}function y(e,t){var n=0===(e||"").length?[]:[e];return n.concat(t).join(" ")}function A(e){return null===e?null:"object"===("undefined"===typeof e?"undefined":a(e))&&e.prefix&&e.iconName?e:Array.isArray(e)&&2===e.length?{prefix:e[0],iconName:e[1]}:"string"===typeof e?{prefix:"fas",iconName:e}:void 0}var E={name:"FontAwesomeIcon",functional:!0,props:{border:{type:Boolean,default:!1},fixedWidth:{type:Boolean,default:!1},flip:{type:String,default:null,validator:function(e){return["horizontal","vertical","both"].indexOf(e)>-1}},icon:{type:[Object,Array,String],required:!0},mask:{type:[Object,Array,String],default:null},listItem:{type:Boolean,default:!1},pull:{type:String,default:null,validator:function(e){return["right","left"].indexOf(e)>-1}},pulse:{type:Boolean,default:!1},rotation:{type:[String,Number],default:null,validator:function(e){return[90,180,270].indexOf(parseInt(e,10))>-1}},swapOpacity:{type:Boolean,default:!1},size:{type:String,default:null,validator:function(e){return["lg","xs","sm","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"].indexOf(e)>-1}},spin:{type:Boolean,default:!1},transform:{type:[String,Object],default:null},symbol:{type:[Boolean,String],default:!1},title:{type:String,default:null},inverse:{type:Boolean,default:!1}},render:function(e,t){var n=t.props,r=n.icon,s=n.mask,o=n.symbol,a=n.title,c=A(r),u=b("classes",w(n)),h=b("transform","string"===typeof n.transform?i["d"].transform(n.transform):n.transform),f=b("mask",A(s)),d=Object(i["b"])(c,l({},u,h,f,{symbol:o,title:a}));if(!d)return v("Could not find one or more icon(s)",c,f);var p=d.abstract,m=g.bind(null,e);return m(p[0],{},t.data)}};Boolean,Boolean}).call(this,n("c8ba"))},ad6d:function(e,t,n){"use strict";var i=n("825a");e.exports=function(){var e=i(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},adf6:function(e,t,n){"use strict";const i=n("0eff"),r=n("94bf"),s=async(e,t={})=>{const n=await r.cid(e.serialize(),t);return new i(t.name||"",e.size,n)};e.exports=s},ae93:function(e,t,n){"use strict";var i,r,s,o=n("e163"),a=n("9112"),c=n("5135"),l=n("b622"),u=n("c430"),h=l("iterator"),f=!1,d=function(){return this};[].keys&&(s=[].keys(),"next"in s?(r=o(o(s)),r!==Object.prototype&&(i=r)):f=!0),void 0==i&&(i={}),u||c(i,h)||a(i,h,d),e.exports={IteratorPrototype:i,BUGGY_SAFARI_ITERATORS:f}},aef6:function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("c449"),s=n("ec12");class o{constructor(e,t){if(!e||!ArrayBuffer.isView(e))throw new Error("first argument must be a buffer or typed array");if(i.isBuffer(e)||(e=i.from(e.buffer,e.byteOffset,e.byteLength)),!t||!r.isCID(t))throw new Error("second argument must be a CID");this._data=e,this._cid=t}get data(){return this._data}set data(e){throw new Error("Tried to change an immutable block")}get cid(){return this._cid}set cid(e){throw new Error("Tried to change an immutable block")}}e.exports=s(o,{className:"Block",symbolName:"@ipld/js-ipld-block/block"})},af3a:function(e,t){e.exports=o;var n=128,i=127,r=~i,s=Math.pow(2,31);function o(e,t,i){t=t||[],i=i||0;var a=i;while(e>=s)t[i++]=255&e|n,e/=128;while(e&r)t[i++]=255&e|n,e>>>=7;return t[i]=0|e,o.bytes=i-a+1,t}},af58:function(e,t,n){"use strict";e.exports=e=>({getAll:n("2c76")(e),get:n("bbb1")(e),set:n("3eb9")(e),replace:n("2b68")(e),profiles:n("f382")(e)})},b041:function(e,t,n){"use strict";var i=n("00ee"),r=n("f5df");e.exports=i?{}.toString:function(){return"[object "+r(this)+"]"}},b378:function(e,t){ace.define("ace/snippets",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/anchor","ace/keyboard/hash_handler","ace/tokenizer","ace/lib/dom","ace/editor"],(function(e,t,n){"use strict";var i=e("./lib/oop"),r=e("./lib/event_emitter").EventEmitter,s=e("./lib/lang"),o=e("./range").Range,a=e("./anchor").Anchor,c=e("./keyboard/hash_handler").HashHandler,l=e("./tokenizer").Tokenizer,u=o.comparePoints,h=function(){this.snippetMap={},this.snippetNameMap={}};(function(){i.implement(this,r),this.getTokenizer=function(){function e(e,t,n){return e=e.substr(1),/^\d+$/.test(e)&&!n.inFormatString?[{tabstopId:parseInt(e,10)}]:[{text:e}]}function t(e){return"(?:[^\\\\"+e+"]|\\\\.)"}return h.$tokenizer=new l({start:[{regex:/:/,onMatch:function(e,t,n){return n.length&&n[0].expectIf?(n[0].expectIf=!1,n[0].elseBranch=n[0],[n[0]]):":"}},{regex:/\\./,onMatch:function(e,t,n){var i=e[1];return"}"==i&&n.length||-1!="`$\\".indexOf(i)?e=i:n.inFormatString&&("n"==i||"t"==i?e="\n":-1!="ulULE".indexOf(i)&&(e={changeCase:i,local:i>"a"})),[e]}},{regex:/}/,onMatch:function(e,t,n){return[n.length?n.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:e},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(t,n,i){var r=e(t.substr(1),n,i);return i.unshift(r[0]),r},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+t("\\|")+"*\\|",onMatch:function(e,t,n){n[0].choices=e.slice(1,-1).split(",")},next:"start"},{regex:"/("+t("/")+"+)/(?:("+t("/")+"*)/)(\\w*):?",onMatch:function(e,t,n){var i=n[0];return i.fmtString=e,e=this.splitRegex.exec(e),i.guard=e[1],i.fmt=e[2],i.flag=e[3],""},next:"start"},{regex:"`"+t("`")+"*`",onMatch:function(e,t,n){return n[0].code=e.splice(1,-1),""},next:"start"},{regex:"\\?",onMatch:function(e,t,n){n[0]&&(n[0].expectIf=!0)},next:"start"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:"/("+t("/")+"+)/",token:"regex"},{regex:"",onMatch:function(e,t,n){n.inFormatString=!0},next:"start"}]}),h.prototype.getTokenizer=function(){return h.$tokenizer},h.$tokenizer},this.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map((function(e){return e.value||e}))},this.$getDefaultValue=function(e,t){if(/^[A-Z]\d+$/.test(t)){var n=t.substr(1);return(this.variables[t[0]+"__"]||{})[n]}if(/^\d+$/.test(t))return(this.variables.__||{})[t];if(t=t.replace(/^TM_/,""),e){var i=e.session;switch(t){case"CURRENT_WORD":var r=i.getWordRange();case"SELECTION":case"SELECTED_TEXT":return i.getTextRange(r);case"CURRENT_LINE":return i.getLine(e.getCursorPosition().row);case"PREV_LINE":return i.getLine(e.getCursorPosition().row-1);case"LINE_INDEX":return e.getCursorPosition().column;case"LINE_NUMBER":return e.getCursorPosition().row+1;case"SOFT_TABS":return i.getUseSoftTabs()?"YES":"NO";case"TAB_SIZE":return i.getTabSize();case"FILENAME":case"FILEPATH":return"";case"FULLNAME":return"Ace"}}},this.variables={},this.getVariableValue=function(e,t){return this.variables.hasOwnProperty(t)?this.variables[t](e,t)||"":this.$getDefaultValue(e,t)||""},this.tmStrFormat=function(e,t,n){var i=t.flag||"",r=t.guard;r=new RegExp(r,i.replace(/[^gi]/,""));var s=this.tokenizeTmSnippet(t.fmt,"formatString"),o=this,a=e.replace(r,(function(){o.variables.__=arguments;for(var e=o.resolveVariables(s,n),t="E",i=0;i1?(b=t[t.length-1].length,v+=t.length-1):b+=e.length,w+=e}else e.start?e.end={row:v,column:b}:e.start={row:v,column:b}}));var y=e.getSelectionRange(),A=e.session.replace(y,w),E=new f(e),C=e.inVirtualSelectionMode&&e.selection.index;E.addTabstops(a,y.start,A,C)},this.insertSnippet=function(e,t){var n=this;if(e.inVirtualSelectionMode)return n.insertSnippetForSelection(e,t);e.forEachSelection((function(){n.insertSnippetForSelection(e,t)}),null,{keepOrder:!0}),e.tabstopManager&&e.tabstopManager.tabNext()},this.$getScope=function(e){var t=e.session.$mode.$id||"";if(t=t.split("/").pop(),"html"===t||"php"===t){"php"!==t||e.session.$mode.inlinePhp||(t="html");var n=e.getCursorPosition(),i=e.session.getState(n.row);"object"===typeof i&&(i=i[0]),i.substring&&("js-"==i.substring(0,3)?t="javascript":"css-"==i.substring(0,4)?t="css":"php-"==i.substring(0,4)&&(t="php"))}return t},this.getActiveScopes=function(e){var t=this.$getScope(e),n=[t],i=this.snippetMap;return i[t]&&i[t].includeScopes&&n.push.apply(n,i[t].includeScopes),n.push("_"),n},this.expandWithTab=function(e,t){var n=this,i=e.forEachSelection((function(){return n.expandSnippetForSelection(e,t)}),null,{keepOrder:!0});return i&&e.tabstopManager&&e.tabstopManager.tabNext(),i},this.expandSnippetForSelection=function(e,t){var n,i=e.getCursorPosition(),r=e.session.getLine(i.row),s=r.substring(0,i.column),o=r.substr(i.column),a=this.snippetMap;return this.getActiveScopes(e).some((function(e){var t=a[e];return t&&(n=this.findMatchingSnippet(t,s,o)),!!n}),this),!!n&&(t&&t.dryRun||(e.session.doc.removeInLine(i.row,i.column-n.replaceBefore.length,i.column+n.replaceAfter.length),this.variables.M__=n.matchBefore,this.variables.T__=n.matchAfter,this.insertSnippetForSelection(e,n.content),this.variables.M__=this.variables.T__=null),!0)},this.findMatchingSnippet=function(e,t,n){for(var i=e.length;i--;){var r=e[i];if((!r.startRe||r.startRe.test(t))&&((!r.endRe||r.endRe.test(n))&&(r.startRe||r.endRe)))return r.matchBefore=r.startRe?r.startRe.exec(t):[""],r.matchAfter=r.endRe?r.endRe.exec(n):[""],r.replaceBefore=r.triggerRe?r.triggerRe.exec(t)[0]:"",r.replaceAfter=r.endTriggerRe?r.endTriggerRe.exec(n)[0]:"",r}},this.snippetMap={},this.snippetNameMap={},this.register=function(e,t){var n=this.snippetMap,i=this.snippetNameMap,r=this;function o(e){return e&&!/^\^?\(.*\)\$?$|^\\b$/.test(e)&&(e="(?:"+e+")"),e||""}function a(e,t,n){return e=o(e),t=o(t),n?(e=t+e,e&&"$"!=e[e.length-1]&&(e+="$")):(e+=t,e&&"^"!=e[0]&&(e="^"+e)),new RegExp(e)}function c(e){e.scope||(e.scope=t||"_"),t=e.scope,n[t]||(n[t]=[],i[t]={});var o=i[t];if(e.name){var c=o[e.name];c&&r.unregister(c),o[e.name]=e}n[t].push(e),e.tabTrigger&&!e.trigger&&(!e.guard&&/^\w/.test(e.tabTrigger)&&(e.guard="\\b"),e.trigger=s.escapeRegExp(e.tabTrigger)),(e.trigger||e.guard||e.endTrigger||e.endGuard)&&(e.startRe=a(e.trigger,e.guard,!0),e.triggerRe=new RegExp(e.trigger,"",!0),e.endRe=a(e.endTrigger,e.endGuard,!0),e.endTriggerRe=new RegExp(e.endTrigger,"",!0))}e||(e=[]),e&&e.content?c(e):Array.isArray(e)&&e.forEach(c),this._signal("registerSnippets",{scope:t})},this.unregister=function(e,t){var n=this.snippetMap,i=this.snippetNameMap;function r(e){var r=i[e.scope||t];if(r&&r[e.name]){delete r[e.name];var s=n[e.scope||t],o=s&&s.indexOf(e);o>=0&&s.splice(o,1)}}e.content?r(e):Array.isArray(e)&&e.forEach(r)},this.parseSnippetFile=function(e){e=e.replace(/\r/g,"");var t,n=[],i={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm;while(t=r.exec(e)){if(t[1])try{i=JSON.parse(t[1]),n.push(i)}catch(c){}if(t[4])i.content=t[4].replace(/^\t/gm,""),n.push(i),i={};else{var s=t[2],o=t[3];if("regex"==s){var a=/\/((?:[^\/\\]|\\.)*)|$/g;i.guard=a.exec(o)[1],i.trigger=a.exec(o)[1],i.endTrigger=a.exec(o)[1],i.endGuard=a.exec(o)[1]}else"snippet"==s?(i.tabTrigger=o.match(/^\S*/)[0],i.name||(i.name=o)):i[s]=o}}return n},this.getSnippetByName=function(e,t){var n,i=this.snippetNameMap;return this.getActiveScopes(t).some((function(t){var r=i[t];return r&&(n=r[e]),!!n}),this),n}}).call(h.prototype);var f=function(e){if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=s.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)};(function(){this.attach=function(e){this.index=0,this.ranges=[],this.tabstops=[],this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(e){var t="r"==e.action[0],n=e.start,i=e.end,r=n.row,s=i.row,o=s-r,a=i.column-n.column;if(t&&(o=-o,a=-a),!this.$inChange&&t){var c=this.selectedTabstop,l=c&&!c.some((function(e){return u(e.start,n)<=0&&u(e.end,i)>=0}));if(l)return this.detach()}for(var h=this.ranges,f=0;f0?(this.removeRange(d),f--):(d.start.row==r&&d.start.column>n.column&&(d.start.column+=a),d.end.row==r&&d.end.column>=n.column&&(d.end.column+=a),d.start.row>=r&&(d.start.row+=o),d.end.row>=r&&(d.end.row+=o),u(d.start,d.end)>0&&this.removeRange(d)))}h.length||this.detach()},this.updateLinkedFields=function(){var e=this.selectedTabstop;if(e&&e.hasLinkedRanges){this.$inChange=!0;for(var n=this.editor.session,i=n.getTextRange(e.firstNonLinked),r=e.length;r--;){var s=e[r];if(s.linked){var o=t.snippetManager.tmStrFormat(i,s.original);n.replace(s,o)}}this.$inChange=!1}},this.onAfterExec=function(e){e.command&&!e.command.readOnly&&this.updateLinkedFields()},this.onChangeSelection=function(){if(this.editor){for(var e=this.editor.selection.lead,t=this.editor.selection.anchor,n=this.editor.selection.isEmpty(),i=this.ranges.length;i--;)if(!this.ranges[i].linked){var r=this.ranges[i].contains(e.row,e.column),s=n||this.ranges[i].contains(t.row,t.column);if(r&&s)return}this.detach()}},this.onChangeSession=function(){this.detach()},this.tabNext=function(e){var t=this.tabstops.length,n=this.index+(e||1);n=Math.min(Math.max(n,1),t),n==t&&(n=0),this.selectTabstop(n),0===n&&this.detach()},this.selectTabstop=function(e){this.$openTabstops=null;var t=this.tabstops[this.index];if(t&&this.addTabstopMarkers(t),this.index=e,t=this.tabstops[this.index],t&&t.length){if(this.selectedTabstop=t,this.editor.inVirtualSelectionMode)this.editor.selection.setRange(t.firstNonLinked);else{var n=this.editor.multiSelect;n.toSingleRange(t.firstNonLinked.clone());for(var i=t.length;i--;)t.hasLinkedRanges&&t[i].linked||n.addRange(t[i].clone(),!0);n.ranges[0]&&n.addRange(n.ranges[0].clone())}this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)}},this.addTabstops=function(e,t,n){if(this.$openTabstops||(this.$openTabstops=[]),!e[0]){var i=o.fromPoints(n,n);g(i.start,t),g(i.end,t),e[0]=[i],e[0].index=0}var r=this.index,s=[r+1,0],a=this.ranges;e.forEach((function(e,n){for(var i=this.$openTabstops[n]||e,r=e.length;r--;){var c=e[r],l=o.fromPoints(c.start,c.end||c.start);p(l.start,t),p(l.end,t),l.original=c,l.tabstop=i,a.push(l),i!=e?i.unshift(l):i[r]=l,c.fmtString?(l.linked=!0,i.hasLinkedRanges=!0):i.firstNonLinked||(i.firstNonLinked=l)}i.firstNonLinked||(i.hasLinkedRanges=!1),i===e&&(s.push(i),this.$openTabstops[n]=i),this.addTabstopMarkers(i)}),this),s.length>2&&(this.tabstops.length&&s.push(s.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,s))},this.addTabstopMarkers=function(e){var t=this.editor.session;e.forEach((function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))}))},this.removeTabstopMarkers=function(e){var t=this.editor.session;e.forEach((function(e){t.removeMarker(e.markerId),e.markerId=null}))},this.removeRange=function(e){var t=e.tabstop.indexOf(e);e.tabstop.splice(t,1),t=this.ranges.indexOf(e),this.ranges.splice(t,1),this.editor.session.removeMarker(e.markerId),e.tabstop.length||(t=this.tabstops.indexOf(e.tabstop),-1!=t&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},this.keyboardHandler=new c,this.keyboardHandler.bindKeys({Tab:function(e){t.snippetManager&&t.snippetManager.expandWithTab(e)||e.tabstopManager.tabNext(1)},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1)},Esc:function(e){e.tabstopManager.detach()},Return:function(e){return!1}})}).call(f.prototype);var d={};d.onChange=a.prototype.onChange,d.setPosition=function(e,t){this.pos.row=e,this.pos.column=t},d.update=function(e,t,n){this.$insertRight=n,this.pos=e,this.onChange(t)};var p=function(e,t){0==e.row&&(e.column+=t.column),e.row+=t.row},g=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};e("./lib/dom").importCssString(".ace_snippet-marker { -moz-box-sizing: border-box; box-sizing: border-box; background: rgba(194, 193, 208, 0.09); border: 1px dotted rgba(211, 208, 235, 0.62); position: absolute;}"),t.snippetManager=new h;var m=e("./editor").Editor;(function(){this.insertSnippet=function(e,n){return t.snippetManager.insertSnippet(this,e,n)},this.expandSnippet=function(e){return t.snippetManager.expandWithTab(this,e)}}).call(m.prototype)})),ace.define("ace/ext/emmet",["require","exports","module","ace/keyboard/hash_handler","ace/editor","ace/snippets","ace/range","resources","resources","tabStops","resources","utils","actions","ace/config","ace/config"],(function(e,t,n){"use strict";var i,r,s=e("ace/keyboard/hash_handler").HashHandler,o=e("ace/editor").Editor,a=e("ace/snippets").snippetManager,c=e("ace/range").Range;function l(){}l.prototype={setupContext:function(e){this.ace=e,this.indentation=e.session.getTabString(),i||(i=window.emmet);var t=i.resources||i.require("resources");t.setVariable("indentation",this.indentation),this.$syntax=null,this.$syntax=this.getSyntax()},getSelectionRange:function(){var e=this.ace.getSelectionRange(),t=this.ace.session.doc;return{start:t.positionToIndex(e.start),end:t.positionToIndex(e.end)}},createSelection:function(e,t){var n=this.ace.session.doc;this.ace.selection.setRange({start:n.indexToPosition(e),end:n.indexToPosition(t)})},getCurrentLineRange:function(){var e=this.ace,t=e.getCursorPosition().row,n=e.session.getLine(t).length,i=e.session.doc.positionToIndex({row:t,column:0});return{start:i,end:i+n}},getCaretPos:function(){var e=this.ace.getCursorPosition();return this.ace.session.doc.positionToIndex(e)},setCaretPos:function(e){var t=this.ace.session.doc.indexToPosition(e);this.ace.selection.moveToPosition(t)},getCurrentLine:function(){var e=this.ace.getCursorPosition().row;return this.ace.session.getLine(e)},replaceContent:function(e,t,n,i){null==n&&(n=null==t?this.getContent().length:t),null==t&&(t=0);var r=this.ace,s=r.session.doc,o=c.fromPoints(s.indexToPosition(t),s.indexToPosition(n));r.session.remove(o),o.end=o.start,e=this.$updateTabstops(e),a.insertSnippet(r,e)},getContent:function(){return this.ace.getValue()},getSyntax:function(){if(this.$syntax)return this.$syntax;var e=this.ace.session.$modeId.split("/").pop();if("html"==e||"php"==e){var t=this.ace.getCursorPosition(),n=this.ace.session.getState(t.row);"string"!=typeof n&&(n=n[0]),n&&(n=n.split("-"),n.length>1?e=n[0]:"php"==e&&(e="html"))}return e},getProfileName:function(){var e=i.resources||i.require("resources");switch(this.getSyntax()){case"css":return"css";case"xml":case"xsl":return"xml";case"html":var t=e.getVariable("profile");return t||(t=-1!=this.ace.session.getLines(0,2).join("").search(/]+XHTML/i)?"xhtml":"html"),t;default:var n=this.ace.session.$mode;return n.emmetConfig&&n.emmetConfig.profile||"xhtml"}},prompt:function(e){return prompt(e)},getSelection:function(){return this.ace.session.getTextRange()},getFilePath:function(){return""},$updateTabstops:function(e){var t=1e3,n=0,r=null,s=i.tabStops||i.require("tabStops"),o=i.resources||i.require("resources"),a=o.getVocabulary("user"),c={tabstop:function(e){var i=parseInt(e.group,10),o=0===i;o?i=++n:i+=t;var a=e.placeholder;a&&(a=s.processText(a,c));var l="${"+i+(a?":"+a:"")+"}";return o&&(r=[e.start,l]),l},escape:function(e){return"$"==e?"\\$":"\\"==e?"\\\\":e}};if(e=s.processText(e,c),a.variables["insert_final_tabstop"]&&!/\$\{0\}$/.test(e))e+="${0}";else if(r){var l=i.utils?i.utils.common:i.require("utils");e=l.replaceSubstring(e,"${0}",r[0],r[1])}return e}};var u={expand_abbreviation:{mac:"ctrl+alt+e",win:"alt+e"},match_pair_outward:{mac:"ctrl+d",win:"ctrl+,"},match_pair_inward:{mac:"ctrl+j",win:"ctrl+shift+0"},matching_pair:{mac:"ctrl+alt+j",win:"alt+j"},next_edit_point:"alt+right",prev_edit_point:"alt+left",toggle_comment:{mac:"command+/",win:"ctrl+/"},split_join_tag:{mac:"shift+command+'",win:"shift+ctrl+`"},remove_tag:{mac:"command+'",win:"shift+ctrl+;"},evaluate_math_expression:{mac:"shift+command+y",win:"shift+ctrl+y"},increment_number_by_1:"ctrl+up",decrement_number_by_1:"ctrl+down",increment_number_by_01:"alt+up",decrement_number_by_01:"alt+down",increment_number_by_10:{mac:"alt+command+up",win:"shift+alt+up"},decrement_number_by_10:{mac:"alt+command+down",win:"shift+alt+down"},select_next_item:{mac:"shift+command+.",win:"shift+ctrl+."},select_previous_item:{mac:"shift+command+,",win:"shift+ctrl+,"},reflect_css_value:{mac:"shift+command+r",win:"shift+ctrl+r"},encode_decode_data_url:{mac:"shift+ctrl+d",win:"ctrl+'"},expand_abbreviation_with_tab:"Tab",wrap_with_abbreviation:{mac:"shift+ctrl+a",win:"shift+ctrl+a"}},h=new l;for(var f in t.commands=new s,t.runEmmetCommand=function e(t){try{h.setupContext(t);var n=i.actions||i.require("actions");if("expand_abbreviation_with_tab"==this.action){if(!t.selection.isEmpty())return!1;var r=t.selection.lead,s=t.session.getTokenAt(r.row,r.column);if(s&&/\btag\b/.test(s.type))return!1}if("wrap_with_abbreviation"==this.action)return setTimeout((function(){n.run("wrap_with_abbreviation",h)}),0);var o=n.run(this.action,h)}catch(a){if(!i)return p(e.bind(this,t)),!0;t._signal("changeStatus","string"==typeof a?a:a.message),console.log(a),o=!1}return o},u)t.commands.addCommand({name:"emmet:"+f,action:f,bindKey:u[f],exec:t.runEmmetCommand,multiSelectAction:"forEach"});t.updateCommands=function(e,n){n?e.keyBinding.addKeyboardHandler(t.commands):e.keyBinding.removeKeyboardHandler(t.commands)},t.isSupportedMode=function(e){if(!e)return!1;if(e.emmetConfig)return!0;var t=e.$id||e;return/css|less|scss|sass|stylus|html|php|twig|ejs|handlebars/.test(t)},t.isAvailable=function(e,n){if(/(evaluate_math_expression|expand_abbreviation)$/.test(n))return!0;var i=e.session.$mode,r=t.isSupportedMode(i);if(r&&i.$modes)try{h.setupContext(e),/js|php/.test(h.getSyntax())&&(r=!1)}catch(s){}return r};var d=function(e,n){var i=n;if(i){var r=t.isSupportedMode(i.session.$mode);!1===e.enableEmmet&&(r=!1),r&&p(),t.updateCommands(i,r)}},p=function(t){"string"==typeof r&&e("ace/config").loadModule(r,(function(){r=null,t&&t()}))};t.AceEmmetEditor=l,e("ace/config").defineOptions(o.prototype,"editor",{enableEmmet:{set:function(e){this[e?"on":"removeListener"]("changeMode",d),d({enableEmmet:!!e},this)},value:!0}}),t.setCore=function(e){"string"==typeof e?r=e:i=e}})),function(){ace.acequire(["ace/ext/emmet"],(function(){}))}()},b575:function(e,t,n){var i,r,s,o,a,c,l,u,h=n("da84"),f=n("06cf").f,d=n("c6b6"),p=n("2cf4").set,g=n("1cdc"),m=h.MutationObserver||h.WebKitMutationObserver,v=h.process,b=h.Promise,w="process"==d(v),y=f(h,"queueMicrotask"),A=y&&y.value;A||(i=function(){var e,t;w&&(e=v.domain)&&e.exit();while(r){t=r.fn,r=r.next;try{t()}catch(n){throw r?o():s=void 0,n}}s=void 0,e&&e.enter()},w?o=function(){v.nextTick(i)}:m&&!g?(a=!0,c=document.createTextNode(""),new m(i).observe(c,{characterData:!0}),o=function(){c.data=a=!a}):b&&b.resolve?(l=b.resolve(void 0),u=l.then,o=function(){u.call(l,i)}):o=function(){p.call(h,i)}),e.exports=A||function(e){var t={fn:e,next:void 0};s&&(s.next=t),r||(r=t,o()),s=t}},b622:function(e,t,n){var i=n("da84"),r=n("5692"),s=n("5135"),o=n("90e3"),a=n("4930"),c=n("fdbf"),l=r("wks"),u=i.Symbol,h=c?u:u&&u.withoutSetter||o;e.exports=function(e){return s(l,e)||(a&&s(u,e)?l[e]=u[e]:l[e]=h("Symbol."+e)),l[e]}},b623:function(e,t,n){"use strict";const i=n("0111"),{Buffer:r}=n("b639"),s=n("5d98"),o=n("0e80"),a=n("c449"),c=n("fa4e"),l=42;function u(e){return"string"===typeof e?e=new a(e).buffer:a.isCID(e)&&(e=e.buffer),new i.Tagged(l,r.concat([r.from("00","hex"),e]))}function h(e){let t;try{t=c(e)}catch(i){t=!1}if(t)throw new Error("The object passed has circular references");function n(e){if(!e||e instanceof Uint8Array||"string"===typeof e)return e;if(Array.isArray(e))return e.map(n);if(a.isCID(e))return u(e);const t=Object.keys(e);if(t.length>0){const i={};return t.forEach(t=>{"object"===typeof e[t]?i[t]=n(e[t]):i[t]=e[t]}),i}return e}return n(e)}t=e.exports,t.codec=s.DAG_CBOR,t.defaultHashAlg=s.SHA2_256;const f={[l]:e=>(e=e.slice(1),new a(e))},d=65536;let p=d;const g=67108864;let m=g,v=null;t.configureDecoder=e=>{let t=f;e?("number"===typeof e.size&&(p=e.size),"number"===typeof e.maxSize&&(m=e.maxSize),e.tags&&(t=Object.assign({},f,e&&e.tags))):(p=d,m=g);const n={tags:t,size:p};v=new i.Decoder(n),p=n.size},t.configureDecoder(),t.serialize=e=>{const t=h(e),n=i.encode(t);return n},t.deserialize=e=>{if(e.length>p&&e.length<=m&&t.configureDecoder({size:e.length}),e.length>p)throw new Error("Data is too large to deserialize with current decoder");const n=v.decodeAll(e);if(1!==n.length)throw new Error("Extraneous CBOR data found beyond initial top-level object");return n[0]},t.cid=async(e,n)=>{const i={cidVersion:1,hashAlg:t.defaultHashAlg},r=Object.assign(i,n),c=await o(e,r.hashAlg),l=s.print[t.codec],u=new a(r.cidVersion,l,c);return u}},b639:function(e,t,n){"use strict";(function(e){ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +var i=n("1fb5"),r=n("9152"),s=n("e3db");function o(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&"function"===typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(t){return!1}}function a(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function c(e,t){if(a()=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|e}function w(e){return+e!=e&&(e=0),l.alloc(+e)}function y(e,t){if(l.isBuffer(e))return e.length;if("undefined"!==typeof ArrayBuffer&&"function"===typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!==typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return X(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return Z(e).length;default:if(i)return X(e).length;t=(""+t).toLowerCase(),i=!0}}function A(e,t,n){var i=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if(n>>>=0,t>>>=0,n<=t)return"";e||(e="utf8");while(1)switch(e){case"hex":return I(this,t,n);case"utf8":case"utf-8":return L(this,t,n);case"ascii":return O(this,t,n);case"latin1":case"binary":return M(this,t,n);case"base64":return D(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,t,n);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),i=!0}}function E(e,t,n){var i=e[t];e[t]=e[n],e[n]=i}function C(e,t,n,i,r){if(0===e.length)return-1;if("string"===typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=r?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(r)return-1;n=e.length-1}else if(n<0){if(!r)return-1;n=0}if("string"===typeof t&&(t=l.from(t,i)),l.isBuffer(t))return 0===t.length?-1:F(e,t,n,i,r);if("number"===typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&"function"===typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):F(e,[t],n,i,r);throw new TypeError("val must be string, number or Buffer")}function F(e,t,n,i,r){var s,o=1,a=e.length,c=t.length;if(void 0!==i&&(i=String(i).toLowerCase(),"ucs2"===i||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(e.length<2||t.length<2)return-1;o=2,a/=2,c/=2,n/=2}function l(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(r){var u=-1;for(s=n;sa&&(n=a-c),s=n;s>=0;s--){for(var h=!0,f=0;fr&&(i=r)):i=r;var s=t.length;if(s%2!==0)throw new TypeError("Invalid hex string");i>s/2&&(i=s/2);for(var o=0;o239?4:l>223?3:l>191?2:1;if(r+h<=n)switch(h){case 1:l<128&&(u=l);break;case 2:s=e[r+1],128===(192&s)&&(c=(31&l)<<6|63&s,c>127&&(u=c));break;case 3:s=e[r+1],o=e[r+2],128===(192&s)&&128===(192&o)&&(c=(15&l)<<12|(63&s)<<6|63&o,c>2047&&(c<55296||c>57343)&&(u=c));break;case 4:s=e[r+1],o=e[r+2],a=e[r+3],128===(192&s)&&128===(192&o)&&128===(192&a)&&(c=(15&l)<<18|(63&s)<<12|(63&o)<<6|63&a,c>65535&&c<1114112&&(u=c))}null===u?(u=65533,h=1):u>65535&&(u-=65536,i.push(u>>>10&1023|55296),u=56320|1023&u),i.push(u),r+=h}return R(i)}t.Buffer=l,t.SlowBuffer=w,t.INSPECT_MAX_BYTES=50,l.TYPED_ARRAY_SUPPORT=void 0!==e.TYPED_ARRAY_SUPPORT?e.TYPED_ARRAY_SUPPORT:o(),t.kMaxLength=a(),l.poolSize=8192,l._augment=function(e){return e.__proto__=l.prototype,e},l.from=function(e,t,n){return u(null,e,t,n)},l.TYPED_ARRAY_SUPPORT&&(l.prototype.__proto__=Uint8Array.prototype,l.__proto__=Uint8Array,"undefined"!==typeof Symbol&&Symbol.species&&l[Symbol.species]===l&&Object.defineProperty(l,Symbol.species,{value:null,configurable:!0})),l.alloc=function(e,t,n){return f(null,e,t,n)},l.allocUnsafe=function(e){return d(null,e)},l.allocUnsafeSlow=function(e){return d(null,e)},l.isBuffer=function(e){return!(null==e||!e._isBuffer)},l.compare=function(e,t){if(!l.isBuffer(e)||!l.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,i=t.length,r=0,s=Math.min(n,i);r0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},l.prototype.compare=function(e,t,n,i,r){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),t<0||n>e.length||i<0||r>this.length)throw new RangeError("out of range index");if(i>=r&&t>=n)return 0;if(i>=r)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,i>>>=0,r>>>=0,this===e)return 0;for(var s=r-i,o=n-t,a=Math.min(s,o),c=this.slice(i,r),u=e.slice(t,n),h=0;hr)&&(n=r),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var s=!1;;)switch(i){case"hex":return k(this,e,t,n);case"utf8":case"utf-8":return S(this,e,t,n);case"ascii":return x(this,e,t,n);case"latin1":case"binary":return _(this,e,t,n);case"base64":return B(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return $(this,e,t,n);default:if(s)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),s=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var T=4096;function R(e){var t=e.length;if(t<=T)return String.fromCharCode.apply(String,e);var n="",i=0;while(ii)&&(n=i);for(var r="",s=t;sn)throw new RangeError("Trying to access beyond buffer length")}function j(e,t,n,i,r,s){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>r||te.length)throw new RangeError("Index out of range")}function U(e,t,n,i){t<0&&(t=65535+t+1);for(var r=0,s=Math.min(e.length-n,2);r>>8*(i?r:1-r)}function H(e,t,n,i){t<0&&(t=4294967295+t+1);for(var r=0,s=Math.min(e.length-n,4);r>>8*(i?r:3-r)&255}function z(e,t,n,i,r,s){if(n+i>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function W(e,t,n,i,s){return s||z(e,t,n,4,34028234663852886e22,-34028234663852886e22),r.write(e,t,n,i,23,4),n+4}function V(e,t,n,i,s){return s||z(e,t,n,8,17976931348623157e292,-17976931348623157e292),r.write(e,t,n,i,52,8),n+8}l.prototype.slice=function(e,t){var n,i=this.length;if(e=~~e,t=void 0===t?i:~~t,e<0?(e+=i,e<0&&(e=0)):e>i&&(e=i),t<0?(t+=i,t<0&&(t=0)):t>i&&(t=i),t0&&(r*=256))i+=this[e+--t]*r;return i},l.prototype.readUInt8=function(e,t){return t||N(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||N(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||N(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||N(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||N(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||N(e,t,this.length);var i=this[e],r=1,s=0;while(++s=r&&(i-=Math.pow(2,8*t)),i},l.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||N(e,t,this.length);var i=t,r=1,s=this[e+--i];while(i>0&&(r*=256))s+=this[e+--i]*r;return r*=128,s>=r&&(s-=Math.pow(2,8*t)),s},l.prototype.readInt8=function(e,t){return t||N(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||N(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(e,t){t||N(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(e,t){return t||N(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||N(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||N(e,4,this.length),r.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||N(e,4,this.length),r.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||N(e,8,this.length),r.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||N(e,8,this.length),r.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,n,i){if(e=+e,t|=0,n|=0,!i){var r=Math.pow(2,8*n)-1;j(this,e,t,n,r,0)}var s=1,o=0;this[t]=255&e;while(++o=0&&(o*=256))this[t+s]=e/o&255;return t+n},l.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):U(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):U(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):H(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):H(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,n,i){if(e=+e,t|=0,!i){var r=Math.pow(2,8*n-1);j(this,e,t,n,r-1,-r)}var s=0,o=1,a=0;this[t]=255&e;while(++s>0)-a&255;return t+n},l.prototype.writeIntBE=function(e,t,n,i){if(e=+e,t|=0,!i){var r=Math.pow(2,8*n-1);j(this,e,t,n,r-1,-r)}var s=n-1,o=1,a=0;this[t+s]=255&e;while(--s>=0&&(o*=256))e<0&&0===a&&0!==this[t+s+1]&&(a=1),this[t+s]=(e/o>>0)-a&255;return t+n},l.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):U(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):U(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):H(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):H(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,n){return W(this,e,t,!0,n)},l.prototype.writeFloatBE=function(e,t,n){return W(this,e,t,!1,n)},l.prototype.writeDoubleLE=function(e,t,n){return V(this,e,t,!0,n)},l.prototype.writeDoubleBE=function(e,t,n){return V(this,e,t,!1,n)},l.prototype.copy=function(e,t,n,i){if(n||(n=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t=0;--r)e[r+t]=this[r+n];else if(s<1e3||!l.TYPED_ARRAY_SUPPORT)for(r=0;r>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"===typeof e)for(s=t;s55295&&n<57344){if(!r){if(n>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(o+1===i){(t-=3)>-1&&s.push(239,191,189);continue}r=n;continue}if(n<56320){(t-=3)>-1&&s.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(t-=3)>-1&&s.push(239,191,189);if(r=null,n<128){if((t-=1)<0)break;s.push(n)}else if(n<2048){if((t-=2)<0)break;s.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;s.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return s}function Q(e){for(var t=[],n=0;n>8,r=n%256,s.push(r),s.push(i)}return s}function Z(e){return i.toByteArray(K(e))}function ee(e,t,n,i){for(var r=0;r=t.length||r>=e.length)break;t[r+n]=e[r]}return r}function te(e){return e!==e}}).call(this,n("c8ba"))},b6aa:function(e,t,n){"use strict";function i(e,t){for(const n in t)Object.defineProperty(e,n,{value:t[n],enumerable:!0,configurable:!0});return e}function r(e,t,n){if(!e||"string"===typeof e)throw new TypeError("Please pass an Error to err-code");n||(n={}),"object"===typeof t&&(n=t,t=void 0),null!=t&&(n.code=t);try{return i(e,n)}catch(r){n.message=e.message,n.stack=e.stack;const t=function(){};return t.prototype=Object.create(Object.getPrototypeOf(e)),i(new t,n)}}e.exports=r},b720:function(e,t,n){"use strict";const i=n("7766"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t={})=>{const n=await e.post("name/pubsub/state",{timeout:t.timeout,signal:t.signal,searchParams:s(t),headers:t.headers});return i(await n.json())})},b762:function(e,t,n){"use strict";var i=n("2612"),r=n("cfce").defined;function s(e){return`${e.substring(0,1).toUpperCase()}${e.substring(1)}`}function o(e,t,n,i){if(Object.prototype.hasOwnProperty.call(e,t))return;const r=s(t);Object.defineProperties(e,{[t]:{enumerable:!0,configurable:!0,set:e=>{n=e},get:()=>void 0===n?i:n},["has"+r]:{configurable:!0,value:()=>void 0!==n},["set"+r]:{configurable:!0,value:e=>{n=e}},["get"+r]:{configurable:!0,value:()=>n},["clear"+r]:{configurable:!0,value:()=>{n=void 0,e[t]=void 0}}})}function a(e,t,n){for(var a=[],h={},f=[],d=[],p=0;p-1){const e=s(u[h]);delete n["has"+e],delete n["get"+e],delete n["set"+e],delete n["clear"+e],delete n[u[h]]}let d;if(e.message){var p=i.decode(r,a);a+=i.decode.bytes;var g=e.decode(r,a,a+p);t.map?(d=n[l]||{},d[g.key]=g.value):t.repeated?(d=n[l]||[],d.push(g)):d=g}else t.repeated?(d=n[l]||[],d.push(e.decode(r,a))):d=e.decode(r,a);return o(n,l,d),a+=e.decode.bytes,a}return function t(s,p,g){if(null==p&&(p=0),null==g&&(g=s.length),!(g<=s.length&&p<=s.length))throw new Error("Decoded message is not valid");var m,v=p,w={};while(1){if(g<=p){var y,A,E="",C=0;for(C=0;C-1){F=!0;break}F||(y?m.repeated?A=[]:(A=A&&y[A]?y[A].value:y[Object.keys(y)[0]].value,A=parseInt(A||0,10)):(t=l(m),A=u(m,A)),o(w,E,A,t))}}return t.bytes=p-v,w}var x=i.decode(s,p);p+=i.decode.bytes;var _=x>>3,B=h[_];if(null!=B){var $=n[B];if(m=e.fields[B],m.packed){var D=i.decode(s,p);p+=i.decode.bytes,D+=p;while(p=n.length)throw A("invalid address: "+e);if(o.path){t.push([r,y(n.slice(i).join("/"))]);break}t.push([r,n[i]])}else t.push([r])}return t}function c(e){const t=[];return e.map(e=>{const n=E(e);t.push(n.name),e.length>1&&t.push(e[1])}),y(t.join("/"))}function l(e){return e.map(e=>{Array.isArray(e)||(e=[e]);const t=E(e);return e.length>1?[t.code,r.toBuffer(t.code,e[1])]:[t.code]})}function u(e){return e.map(e=>{const t=E(e);return e.length>1?[t.code,r.toString(t.code,e[1])]:[t.code]})}function h(e){return v(i.concat(e.map(e=>{const t=E(e);let n=i.from(o.encode(t.code));return e.length>1&&(n=i.concat([n,e[1]])),n})))}function f(e,t){if(e.size>0)return e.size/8;if(0===e.size)return 0;{const e=o.decode(t);return e+o.decode.bytes}}function d(e){const t=[];let n=0;while(ne.length)throw A("Invalid address buffer: "+e.toString("hex"));t.push([i,l])}return t}function p(e){const t=d(e),n=u(t);return c(n)}function g(e){e=y(e);const t=a(e),n=l(t);return h(n)}function m(e){return g(e)}function v(e){const t=b(e);if(t)throw t;return i.from(e)}function b(e){try{d(e)}catch(t){return t}}function w(e){return void 0===b(e)}function y(e){return"/"+e.trim().split("/").filter(e=>e).join("/")}function A(e){return new Error("Error parsing address: "+e)}function E(e){const t=s(e[0]);return t}e.exports={stringToStringTuples:a,stringTuplesToString:c,tuplesToStringTuples:u,stringTuplesToTuples:l,bufferToTuples:d,tuplesToBuffer:h,bufferToString:p,stringToBuffer:g,fromString:m,fromBuffer:v,validateBuffer:b,isValidBuffer:w,cleanPath:y,ParseError:A,protoFromTuple:E,sizeForAddr:f}},bb1c:function(e,t,n){"use strict";const i=n("c449"),{findSources:r}=n("d6ea"),s=n("9878"),o=n("15e4");e.exports=s(e=>async(...t)=>{const{sources:n,options:s}=r(t),a=await e.post("files/mv",{timeout:s.timeout,signal:s.signal,searchParams:o({arg:n.map(e=>i.isCID(e)?"/ipfs/"+e:e),...s}),headers:s.headers});await a.text()})},bbb1:function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async(t,n={})=>{if(!t)throw new Error("key argument is required");const i=await e.post("config",{timeout:n.timeout,signal:n.signal,searchParams:r({arg:t,...n}),headers:n.headers}),s=await i.json();return s.Value})},be97:function(e,t,n){const i=n("3301"),r=n("796b");e.exports=function(e){const t=r(e);let n;const s={[Symbol.asyncIterator]:()=>s,async next(e){if(n){let r;if(null==e||n.length===e)r=n,n=null;else if(n.length>e)r=n.shallowSlice(0,e),n=n.shallowSlice(e);else if(n.length{async function t(n,a={}){if(i.isBlock(n)){const{name:e,length:t}=s.decode(n.cid.multihash);a={...a,format:n.cid.codec,mhtype:e,mhlen:t,version:n.cid.version},n=n.data}else if(a.cid){const e=new r(a.cid),{name:t,length:n}=s.decode(e.multihash);a={...a,format:e.codec,mhtype:t,mhlen:n,version:e.version},delete a.cid}const h=new u,f=l([h.signal,a.signal]);let d;try{const t=await e.post("block/put",{timeout:a.timeout,signal:f,searchParams:c(a),...await o(n,h,a.headers)});d=await t.json()}catch(p){if("dag-pb"===a.format)return t(n,{...a,format:"protobuf"});if("dag-cbor"===a.format)return t(n,{...a,format:"cbor"});throw p}return new i(n,new r(d.Key))}return t})},c04e:function(e,t,n){var i=n("861d");e.exports=function(e,t){if(!i(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!i(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},c074:function(e,t,n){"use strict";n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return r}));var i={prefix:"fas",iconName:"clone",icon:[512,512,[],"f24d","M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z"]},r={prefix:"fas",iconName:"cloud-upload-alt",icon:[640,512,[],"f382","M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z"]}},c0dd:function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("c449"),{DAGNode:s,DAGLink:o}=n("8141"),a=n("9878"),c=n("15e4");e.exports=a(e=>async(t,n={})=>{const a=await e.post("object/get",{timeout:n.timeout,signal:n.signal,searchParams:c({arg:""+(i.isBuffer(t)?new r(t):t),dataEncoding:"base64",...n}),headers:n.headers}),l=await a.json();return new s(i.from(l.Data,"base64"),(l.Links||[]).map(e=>new o(e.Name,e.Size,e.Hash)))})},c16b:function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("c449"),s=n("9878"),o=n("15e4");function a(e){switch(e.Type){case 1:case 5:return"dir";case 2:return"file";default:return"unknown"}}e.exports=s(e=>async function*(t,n={}){const s=await e.post("ls",{timeout:n.timeout,signal:n.signal,searchParams:o({arg:""+(i.isBuffer(t)?new r(t):t),...n}),headers:n.headers});for await(let e of s.ndjson()){if(e=e.Objects,!e)throw new Error("expected .Objects in results");if(e=e[0],!e)throw new Error("expected one array in results.Objects");if(e=e.Links,!Array.isArray(e))throw new Error("expected one array in results.Objects[0].Links");for(const n of e){const e={name:n.Name,path:t+"/"+n.Name,size:n.Size,cid:new r(n.Hash),type:a(n),depth:n.Depth||1};n.Mode&&(e.mode=parseInt(n.Mode,8)),void 0!==n.Mtime&&null!==n.Mtime&&(e.mtime={secs:n.Mtime},void 0!==n.MtimeNsecs&&null!==n.MtimeNsecs&&(e.mtime.nsecs=n.MtimeNsecs)),yield e}}})},c2c8:function(e,t,n){"use strict";e.exports="// An IPFS MerkleDAG Link\nmessage PBLink {\n\n // multihash of the target object\n optional bytes Hash = 1;\n\n // utf string name. should be unique per object\n optional string Name = 2;\n\n // cumulative size of target object\n optional uint64 Tsize = 3;\n}\n\n// An IPFS MerkleDAG Node\nmessage PBNode {\n\n // refs to other objects\n repeated PBLink Links = 2;\n\n // opaque user data\n optional bytes Data = 1;\n}"},c430:function(e,t){e.exports=!1},c449:function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("354e"),s=n("675c"),o=n("5d98"),a=n("cfab"),c=n("42a6"),l=n("ec12");class u{constructor(e,t,n,a){if(h.isCID(e)){const t=e;return this.version=t.version,this.codec=t.codec,this.multihash=i.from(t.multihash),void(this.multibaseName=t.multibaseName||(0===t.version?"base58btc":"base32"))}if("string"===typeof e){const t=s.isEncoded(e);if(t){const n=s.decode(e);this.version=parseInt(n.slice(0,1).toString("hex"),16),this.codec=o.getCodec(n.slice(1)),this.multihash=o.rmPrefix(n.slice(1)),this.multibaseName=t}else this.version=0,this.codec="dag-pb",this.multihash=r.fromB58String(e),this.multibaseName="base58btc";return u.validateCID(this),void Object.defineProperty(this,"string",{value:e})}if(i.isBuffer(e)){const t=e.slice(0,1),n=parseInt(t.toString("hex"),16);if(1===n){const t=e;this.version=n,this.codec=o.getCodec(t.slice(1)),this.multihash=o.rmPrefix(t.slice(1)),this.multibaseName="base32"}else this.version=0,this.codec="dag-pb",this.multihash=e,this.multibaseName="base58btc";u.validateCID(this)}else this.version=e,this.codec=t,this.multihash=n,this.multibaseName=a||(0===e?"base58btc":"base32"),u.validateCID(this)}get buffer(){let e=this._buffer;if(!e){if(0===this.version)e=this.multihash;else{if(1!==this.version)throw new Error("unsupported version");e=i.concat([i.from("01","hex"),o.getCodeVarint(this.codec),this.multihash])}Object.defineProperty(this,"_buffer",{value:e})}return e}get prefix(){return i.concat([i.from("0"+this.version,"hex"),o.getCodeVarint(this.codec),r.prefix(this.multihash)])}toV0(){if("dag-pb"!==this.codec)throw new Error("Cannot convert a non dag-pb CID to CIDv0");const{name:e,length:t}=r.decode(this.multihash);if("sha2-256"!==e)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");if(32!==t)throw new Error("Cannot convert non 32 byte multihash CID to CIDv0");return new h(0,this.codec,this.multihash)}toV1(){return new h(1,this.codec,this.multihash)}toBaseEncodedString(e=this.multibaseName){if(this.string&&e===this.multibaseName)return this.string;let t=null;if(0===this.version){if("base58btc"!==e)throw new Error("not supported with CIDv0, to support different bases, please migrate the instance do CIDv1, you can do that through cid.toV1()");t=r.toB58String(this.multihash)}else{if(1!==this.version)throw new Error("unsupported version");t=s.encode(e,this.buffer).toString()}return e===this.multibaseName&&Object.defineProperty(this,"string",{value:t}),t}[Symbol.for("nodejs.util.inspect.custom")](){return"CID("+this.toString()+")"}toString(e){return this.toBaseEncodedString(e)}toJSON(){return{codec:this.codec,version:this.version,hash:this.multihash}}equals(e){return this.codec===e.codec&&this.version===e.version&&this.multihash.equals(e.multihash)}static validateCID(e){const t=c.checkCIDComponents(e);if(t)throw new Error(t)}}const h=l(u,{className:"CID",symbolName:"@ipld/js-cid/CID"});h.codecs=a,e.exports=h},c4f2:function(e,t,n){"use strict";const i=n("c449"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t,n={})=>{t=Array.isArray(t)?t:[t];const r=await(await e.post("pin/add",{timeout:n.timeout,signal:n.signal,searchParams:s({arg:t.map(e=>""+e),...n}),headers:n.headers})).json();return(r.Pins||[]).map(e=>({cid:new i(e)}))})},c6b6:function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},c6cd:function(e,t,n){var i=n("da84"),r=n("ce4e"),s="__core-js_shared__",o=i[s]||r(s,{});e.exports=o},c8ba:function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(i){"object"===typeof window&&(n=window)}e.exports=n},c8c2:function(e,t,n){"use strict";e.exports=e=>({addLink:n("3ae7")(e),appendData:n("8c04")(e),rmLink:n("67d1")(e),setData:n("fe3c")(e)})},c8f6:function(e,t,n){var i=n("14ec"),r=n("3193");e.exports={blake2b:i.blake2b,blake2bHex:i.blake2bHex,blake2bInit:i.blake2bInit,blake2bUpdate:i.blake2bUpdate,blake2bFinal:i.blake2bFinal,blake2s:r.blake2s,blake2sHex:r.blake2sHex,blake2sInit:r.blake2sInit,blake2sUpdate:r.blake2sUpdate,blake2sFinal:r.blake2sFinal}},ca35:function(e,t,n){"use strict";e.exports=e=>({gc:n("491e")(e),stat:n("a3b6")(e),version:n("aa4d")(e)})},ca84:function(e,t,n){var i=n("5135"),r=n("fc6a"),s=n("4d64").indexOf,o=n("d012");e.exports=function(e,t){var n,a=r(e),c=0,l=[];for(n in a)!i(o,n)&&i(a,n)&&l.push(n);while(t.length>c)i(a,n=t[c++])&&(~s(l,n)||l.push(n));return l}},cc12:function(e,t,n){var i=n("da84"),r=n("861d"),s=i.document,o=r(s)&&r(s.createElement);e.exports=function(e){return o?s.createElement(e):{}}},cc31:function(e,t,n){"use strict";const i=n("c449"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t={})=>{const n=await e.post("object/new",{timeout:t.timeout,signal:t.signal,searchParams:s({arg:t.template,...t}),headers:t.headers}),{Hash:r}=await n.json();return new i(r)})},cc3c:function(e,t,n){"use strict";const i=n("cfab"),r=n("1c13").varintEncode,s={};for(const o in i){const e=i[o];s[o]=r(e)}e.exports=Object.freeze(s)},cca6:function(e,t,n){var i=n("23e7"),r=n("60da");i({target:"Object",stat:!0,forced:Object.assign!==r},{assign:r})},cdf9:function(e,t,n){var i=n("825a"),r=n("861d"),s=n("f069");e.exports=function(e,t){if(i(e),r(t)&&t.constructor===e)return t;var n=s.f(e),o=n.resolve;return o(t),n.promise}},ce4e:function(e,t,n){var i=n("da84"),r=n("9112");e.exports=function(e,t){try{r(i,e,t)}catch(n){i[e]=t}return t}},ce8a:function(e,t,n){"use strict";const i=n("b6aa"),r=n("6017"),s=n("a127"),o=n("5d6d"),{isBytes:a,isBlob:c,isFileObject:l}=n("abb1");async function u(e,t){const n={path:e.path||"",mode:e.mode,mtime:e.mtime};return e.content?n.content=await t(e.content):e.path||(n.content=await t(e)),n}e.exports=async function*(e,t){if(null===e||void 0===e)throw i(new Error("Unexpected input: "+e),"ERR_UNEXPECTED_INPUT");if("string"===typeof e||e instanceof String)yield u(e,t);else if(a(e)||c(e))yield u(e,t);else{if("function"===typeof e.getReader&&(e=r(e)),e[Symbol.iterator]||e[Symbol.asyncIterator]){const n=s(e),{value:i,done:r}=await n.peek();if(r)return void(yield*n);if(n.push(i),Number.isInteger(i)||a(i))return void(yield u(n,t));if(l(i)||c(i)||"string"===typeof i||i instanceof String)return void(yield*o(n,e=>u(e,t)));if(i[Symbol.iterator]||i[Symbol.asyncIterator]||"function"===typeof i.getReader)return void(yield*o(n,e=>u(e,t)))}if(!l(e))throw i(new Error("Unexpected input: "+typeof e),"ERR_UNEXPECTED_INPUT");yield u(e,t)}}},cf29:function(e,t,n){"use strict";const i=n("c449"),{findSources:r}=n("d6ea"),s=n("9878"),o=n("15e4");e.exports=s(e=>async(...t)=>{const{sources:n,options:s}=r(t),a=await e.post("files/cp",{timeout:s.timeout,signal:s.signal,searchParams:o({arg:n.map(e=>i.isCID(e)?"/ipfs/"+e:e),...s}),headers:s.headers});await a.text()})},cfab:function(e){e.exports=JSON.parse('{"identity":0,"ip4":4,"tcp":6,"sha1":17,"sha2-256":18,"sha2-512":19,"sha3-512":20,"sha3-384":21,"sha3-256":22,"sha3-224":23,"shake-128":24,"shake-256":25,"keccak-224":26,"keccak-256":27,"keccak-384":28,"keccak-512":29,"blake3":30,"dccp":33,"murmur3-128":34,"murmur3-32":35,"ip6":41,"ip6zone":42,"path":47,"multicodec":48,"multihash":49,"multiaddr":50,"multibase":51,"dns":53,"dns4":54,"dns6":55,"dnsaddr":56,"protobuf":80,"cbor":81,"raw":85,"dbl-sha2-256":86,"rlp":96,"bencode":99,"dag-pb":112,"dag-cbor":113,"libp2p-key":114,"git-raw":120,"torrent-info":123,"torrent-file":124,"leofcoin-block":129,"leofcoin-tx":130,"leofcoin-pr":131,"sctp":132,"dag-jose":133,"dag-cose":134,"eth-block":144,"eth-block-list":145,"eth-tx-trie":146,"eth-tx":147,"eth-tx-receipt-trie":148,"eth-tx-receipt":149,"eth-state-trie":150,"eth-account-snapshot":151,"eth-storage-trie":152,"bitcoin-block":176,"bitcoin-tx":177,"bitcoin-witness-commitment":178,"zcash-block":192,"zcash-tx":193,"stellar-block":208,"stellar-tx":209,"md4":212,"md5":213,"bmt":214,"decred-block":224,"decred-tx":225,"ipld-ns":226,"ipfs-ns":227,"swarm-ns":228,"ipns-ns":229,"zeronet":230,"secp256k1-pub":231,"bls12_381-g1-pub":234,"bls12_381-g2-pub":235,"x25519-pub":236,"ed25519-pub":237,"dash-block":240,"dash-tx":241,"swarm-manifest":250,"swarm-feed":251,"udp":273,"p2p-webrtc-star":275,"p2p-webrtc-direct":276,"p2p-stardust":277,"p2p-circuit":290,"dag-json":297,"udt":301,"utp":302,"unix":400,"p2p":421,"ipfs":421,"https":443,"onion":444,"onion3":445,"garlic64":446,"garlic32":447,"tls":448,"quic":460,"ws":477,"wss":478,"p2p-websocket-star":479,"http":480,"json":512,"messagepack":513,"libp2p-peer-record":769,"sha2-256-trunc254-padded":4114,"ripemd-128":4178,"ripemd-160":4179,"ripemd-256":4180,"ripemd-320":4181,"x11":4352,"sm3-256":21325,"blake2b-8":45569,"blake2b-16":45570,"blake2b-24":45571,"blake2b-32":45572,"blake2b-40":45573,"blake2b-48":45574,"blake2b-56":45575,"blake2b-64":45576,"blake2b-72":45577,"blake2b-80":45578,"blake2b-88":45579,"blake2b-96":45580,"blake2b-104":45581,"blake2b-112":45582,"blake2b-120":45583,"blake2b-128":45584,"blake2b-136":45585,"blake2b-144":45586,"blake2b-152":45587,"blake2b-160":45588,"blake2b-168":45589,"blake2b-176":45590,"blake2b-184":45591,"blake2b-192":45592,"blake2b-200":45593,"blake2b-208":45594,"blake2b-216":45595,"blake2b-224":45596,"blake2b-232":45597,"blake2b-240":45598,"blake2b-248":45599,"blake2b-256":45600,"blake2b-264":45601,"blake2b-272":45602,"blake2b-280":45603,"blake2b-288":45604,"blake2b-296":45605,"blake2b-304":45606,"blake2b-312":45607,"blake2b-320":45608,"blake2b-328":45609,"blake2b-336":45610,"blake2b-344":45611,"blake2b-352":45612,"blake2b-360":45613,"blake2b-368":45614,"blake2b-376":45615,"blake2b-384":45616,"blake2b-392":45617,"blake2b-400":45618,"blake2b-408":45619,"blake2b-416":45620,"blake2b-424":45621,"blake2b-432":45622,"blake2b-440":45623,"blake2b-448":45624,"blake2b-456":45625,"blake2b-464":45626,"blake2b-472":45627,"blake2b-480":45628,"blake2b-488":45629,"blake2b-496":45630,"blake2b-504":45631,"blake2b-512":45632,"blake2s-8":45633,"blake2s-16":45634,"blake2s-24":45635,"blake2s-32":45636,"blake2s-40":45637,"blake2s-48":45638,"blake2s-56":45639,"blake2s-64":45640,"blake2s-72":45641,"blake2s-80":45642,"blake2s-88":45643,"blake2s-96":45644,"blake2s-104":45645,"blake2s-112":45646,"blake2s-120":45647,"blake2s-128":45648,"blake2s-136":45649,"blake2s-144":45650,"blake2s-152":45651,"blake2s-160":45652,"blake2s-168":45653,"blake2s-176":45654,"blake2s-184":45655,"blake2s-192":45656,"blake2s-200":45657,"blake2s-208":45658,"blake2s-216":45659,"blake2s-224":45660,"blake2s-232":45661,"blake2s-240":45662,"blake2s-248":45663,"blake2s-256":45664,"skein256-8":45825,"skein256-16":45826,"skein256-24":45827,"skein256-32":45828,"skein256-40":45829,"skein256-48":45830,"skein256-56":45831,"skein256-64":45832,"skein256-72":45833,"skein256-80":45834,"skein256-88":45835,"skein256-96":45836,"skein256-104":45837,"skein256-112":45838,"skein256-120":45839,"skein256-128":45840,"skein256-136":45841,"skein256-144":45842,"skein256-152":45843,"skein256-160":45844,"skein256-168":45845,"skein256-176":45846,"skein256-184":45847,"skein256-192":45848,"skein256-200":45849,"skein256-208":45850,"skein256-216":45851,"skein256-224":45852,"skein256-232":45853,"skein256-240":45854,"skein256-248":45855,"skein256-256":45856,"skein512-8":45857,"skein512-16":45858,"skein512-24":45859,"skein512-32":45860,"skein512-40":45861,"skein512-48":45862,"skein512-56":45863,"skein512-64":45864,"skein512-72":45865,"skein512-80":45866,"skein512-88":45867,"skein512-96":45868,"skein512-104":45869,"skein512-112":45870,"skein512-120":45871,"skein512-128":45872,"skein512-136":45873,"skein512-144":45874,"skein512-152":45875,"skein512-160":45876,"skein512-168":45877,"skein512-176":45878,"skein512-184":45879,"skein512-192":45880,"skein512-200":45881,"skein512-208":45882,"skein512-216":45883,"skein512-224":45884,"skein512-232":45885,"skein512-240":45886,"skein512-248":45887,"skein512-256":45888,"skein512-264":45889,"skein512-272":45890,"skein512-280":45891,"skein512-288":45892,"skein512-296":45893,"skein512-304":45894,"skein512-312":45895,"skein512-320":45896,"skein512-328":45897,"skein512-336":45898,"skein512-344":45899,"skein512-352":45900,"skein512-360":45901,"skein512-368":45902,"skein512-376":45903,"skein512-384":45904,"skein512-392":45905,"skein512-400":45906,"skein512-408":45907,"skein512-416":45908,"skein512-424":45909,"skein512-432":45910,"skein512-440":45911,"skein512-448":45912,"skein512-456":45913,"skein512-464":45914,"skein512-472":45915,"skein512-480":45916,"skein512-488":45917,"skein512-496":45918,"skein512-504":45919,"skein512-512":45920,"skein1024-8":45921,"skein1024-16":45922,"skein1024-24":45923,"skein1024-32":45924,"skein1024-40":45925,"skein1024-48":45926,"skein1024-56":45927,"skein1024-64":45928,"skein1024-72":45929,"skein1024-80":45930,"skein1024-88":45931,"skein1024-96":45932,"skein1024-104":45933,"skein1024-112":45934,"skein1024-120":45935,"skein1024-128":45936,"skein1024-136":45937,"skein1024-144":45938,"skein1024-152":45939,"skein1024-160":45940,"skein1024-168":45941,"skein1024-176":45942,"skein1024-184":45943,"skein1024-192":45944,"skein1024-200":45945,"skein1024-208":45946,"skein1024-216":45947,"skein1024-224":45948,"skein1024-232":45949,"skein1024-240":45950,"skein1024-248":45951,"skein1024-256":45952,"skein1024-264":45953,"skein1024-272":45954,"skein1024-280":45955,"skein1024-288":45956,"skein1024-296":45957,"skein1024-304":45958,"skein1024-312":45959,"skein1024-320":45960,"skein1024-328":45961,"skein1024-336":45962,"skein1024-344":45963,"skein1024-352":45964,"skein1024-360":45965,"skein1024-368":45966,"skein1024-376":45967,"skein1024-384":45968,"skein1024-392":45969,"skein1024-400":45970,"skein1024-408":45971,"skein1024-416":45972,"skein1024-424":45973,"skein1024-432":45974,"skein1024-440":45975,"skein1024-448":45976,"skein1024-456":45977,"skein1024-464":45978,"skein1024-472":45979,"skein1024-480":45980,"skein1024-488":45981,"skein1024-496":45982,"skein1024-504":45983,"skein1024-512":45984,"skein1024-520":45985,"skein1024-528":45986,"skein1024-536":45987,"skein1024-544":45988,"skein1024-552":45989,"skein1024-560":45990,"skein1024-568":45991,"skein1024-576":45992,"skein1024-584":45993,"skein1024-592":45994,"skein1024-600":45995,"skein1024-608":45996,"skein1024-616":45997,"skein1024-624":45998,"skein1024-632":45999,"skein1024-640":46000,"skein1024-648":46001,"skein1024-656":46002,"skein1024-664":46003,"skein1024-672":46004,"skein1024-680":46005,"skein1024-688":46006,"skein1024-696":46007,"skein1024-704":46008,"skein1024-712":46009,"skein1024-720":46010,"skein1024-728":46011,"skein1024-736":46012,"skein1024-744":46013,"skein1024-752":46014,"skein1024-760":46015,"skein1024-768":46016,"skein1024-776":46017,"skein1024-784":46018,"skein1024-792":46019,"skein1024-800":46020,"skein1024-808":46021,"skein1024-816":46022,"skein1024-824":46023,"skein1024-832":46024,"skein1024-840":46025,"skein1024-848":46026,"skein1024-856":46027,"skein1024-864":46028,"skein1024-872":46029,"skein1024-880":46030,"skein1024-888":46031,"skein1024-896":46032,"skein1024-904":46033,"skein1024-912":46034,"skein1024-920":46035,"skein1024-928":46036,"skein1024-936":46037,"skein1024-944":46038,"skein1024-952":46039,"skein1024-960":46040,"skein1024-968":46041,"skein1024-976":46042,"skein1024-984":46043,"skein1024-992":46044,"skein1024-1000":46045,"skein1024-1008":46046,"skein1024-1016":46047,"skein1024-1024":46048,"poseidon-bls12_381-a2-fc1":46081,"poseidon-bls12_381-a2-fc1-sc":46082,"zeroxcert-imprint-256":52753,"fil-commitment-unsealed":61697,"fil-commitment-sealed":61698,"holochain-adr-v0":8417572,"holochain-adr-v1":8483108,"holochain-key-v0":9728292,"holochain-key-v1":9793828,"holochain-sig-v0":10645796,"holochain-sig-v1":10711332}')},cfce:function(e,t,n){"use strict";t.defined=function(e){return null!==e&&void 0!==e&&("number"!==typeof e||!isNaN(e))}},d012:function(e,t){e.exports={}},d039:function(e,t){e.exports=function(e){try{return!!e()}catch(t){return!0}}},d066:function(e,t,n){var i=n("428f"),r=n("da84"),s=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?s(i[e])||s(r[e]):i[e]&&i[e][t]||r[e]&&r[e][t]}},d0f1:function(e,t,n){"use strict";var i=n("f5ac"),r=n("b762"),s=n("9c3b"),o=n("8741"),a=n("2612"),c=function(e){if(!e)return null;var t={};return Object.keys(e).forEach((function(n){t[n]=e[n].value})),t};e.exports=function(e,t){var n={},l={},u={},h=function(e,t){e.enums&&e.enums.forEach((function(e){e.id=t+(t?".":"")+e.name,l[e.id]=e,h(e,e.id)})),e.messages&&e.messages.forEach((function(i){i.id=t+(t?".":"")+i.name,n[i.id]=i,i.fields.forEach((function(i){if(i.map){var r="Map_"+i.map.from+"_"+i.map.to,s={name:r,enums:[],messages:[],fields:[{name:"key",type:i.map.from,tag:1,repeated:!1,required:!0},{name:"value",type:i.map.to,tag:2,repeated:!1,required:!1}],extensions:null,id:t+(t?".":"")+r};n[s.id]||(n[s.id]=s,e.messages.push(s)),i.type=r,i.repeated=!0}})),h(i,i.id)}))};h(e,"");var f=function(e){var t=Object.keys(e.values||[]).map((function(t){return parseInt(e.values[t].value,10)})),n=function e(n,i,r){if(!t.length||-1===t.indexOf(n))throw new Error("Invalid enum value: "+n);return a.encode(n,i,r),e.bytes=a.encode.bytes,i},r=function e(n,i){var r=a.decode(n,i);if(!t.length||-1===t.indexOf(r))throw new Error("Invalid enum value: "+r);return e.bytes=a.decode.bytes,r};return i.make(0,n,r,a.encodingLength)},d=function(e,t){e.messages.forEach((function(n){t[n.name]=p(n.name,e.id)})),e.enums.forEach((function(e){t[e.name]=c(e.values)})),t.type=2,t.message=!0,t.name=e.name;var n={};e.fields.forEach((function(e){e.oneof&&(n[e.oneof]||(n[e.oneof]=[]),n[e.oneof].push(e.name))}));var i=e.fields.map((function(t){return p(t.type,e.id)})),a=o(e,i,n),l=s(e,p,i,n,a),u=r(e,p,i);return l.bytes=u.bytes=0,t.buffer=!0,t.encode=l,t.decode=u,t.encodingLength=a,t},p=function(e,r,s){if(t&&t[e])return t[e];if(i[e])return i[e];var o=(r?r+"."+e:e).split(".").map((function(t,n,i){return i.slice(0,n).concat(e).join(".")})).reverse().reduce((function(e,t){return e||n[t]||l[t]}),null);if(!1===s)return o;if(!o)throw new Error("Could not resolve "+e);if(o.values)return f(o);var a=u[o.id]||d(o,u[o.id]={});return a};return(e.enums||[]).concat((e.messages||[]).map((function(e){return p(e.id)})))}},d1e7:function(e,t,n){"use strict";var i={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,s=r&&!i.call({1:2},1);t.f=s?function(e){var t=r(this,e);return!!t&&t.enumerable}:i},d2aa:function(e,t,n){"use strict";class i extends Error{constructor(e="Request timed out"){super(e),this.name="TimeoutError"}}t.TimeoutError=i;class r extends Error{constructor(e="The operation was aborted."){super(e),this.name="AbortError"}}t.AbortError=r;class s extends Error{constructor(e){super(e.statusText),this.name="HTTPError",this.response=e}}t.HTTPError=s},d2bb:function(e,t,n){var i=n("825a"),r=n("3bbe");e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,e.call(n,[]),t=n instanceof Array}catch(s){}return function(n,s){return i(n),r(s),t?e.call(n,s):n.__proto__=s,n}}():void 0)},d3b7:function(e,t,n){var i=n("00ee"),r=n("6eeb"),s=n("b041");i||r(Object.prototype,"toString",s,{unsafe:!0})},d44e:function(e,t,n){var i=n("9bf2").f,r=n("5135"),s=n("b622"),o=s("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,o)&&i(e,o,{configurable:!0,value:t})}},d6ea:function(e,t,n){"use strict";t.findSources=e=>{let t={},n=[];return Array.isArray(e[e.length-1])||"object"!==typeof e[e.length-1]||(t=e.pop()),n=1===e.length&&Array.isArray(e[0])?e[0]:e,{sources:n,options:t}}},d72a:function(e,t,n){"use strict";const i=n("2054"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t={})=>{const n=await e.post("swarm/addrs",{timeout:t.timeout,signal:t.signal,searchParams:s(t),headers:t.headers}),{Addrs:r}=await n.json();return Object.keys(r).map(e=>({id:e,addrs:(r[e]||[]).map(e=>i(e))}))})},d784:function(e,t,n){"use strict";n("ac1f");var i=n("6eeb"),r=n("d039"),s=n("b622"),o=n("9263"),a=n("9112"),c=s("species"),l=!r((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")})),u=function(){return"$0"==="a".replace(/./,"$0")}(),h=s("replace"),f=function(){return!!/./[h]&&""===/./[h]("a","$0")}(),d=!r((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));e.exports=function(e,t,n,h){var p=s(e),g=!r((function(){var t={};return t[p]=function(){return 7},7!=""[e](t)})),m=g&&!r((function(){var t=!1,n=/a/;return"split"===e&&(n={},n.constructor={},n.constructor[c]=function(){return n},n.flags="",n[p]=/./[p]),n.exec=function(){return t=!0,null},n[p](""),!t}));if(!g||!m||"replace"===e&&(!l||!u||f)||"split"===e&&!d){var v=/./[p],b=n(p,""[e],(function(e,t,n,i,r){return t.exec===o?g&&!r?{done:!0,value:v.call(t,n,i)}:{done:!0,value:e.call(n,t,i)}:{done:!1}}),{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),w=b[0],y=b[1];i(String.prototype,e,w),i(RegExp.prototype,p,2==t?function(e,t){return y.call(e,this,t)}:function(e){return y.call(e,this)})}h&&a(RegExp.prototype[p],"sham",!0)}},da84:function(e,t,n){(function(t){var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof t&&t)||Function("return this")()}).call(this,n("c8ba"))},dac4:function(e,t,n){const{Buffer:i}=n("b639"),r=n("3301"),{S_IFMT:s,S_IFBLK:o,S_IFCHR:a,S_IFDIR:c,S_IFIFO:l,S_IFLNK:u}=n("6aa7"),h=n("dad8"),f=n("76b6"),d=parseInt("755",8),p=parseInt("644",8),g=i.alloc(1024);function m(e){switch(e&s){case o:return"block-device";case a:return"character-device";case c:return"directory";case l:return"fifo";case u:return"symlink"}return"file"}function v(e){if(e&=511,e)return new r(g.slice(0,512-e))}function b(e){if(!e.pax){const t=f.encode(e);if(t)return t}return w(e)}function w(e){const t=f.encodePax({name:e.name,linkname:e.linkname,pax:e.pax}),n={name:"PaxHeader",mode:e.mode,uid:e.uid,gid:e.gid,size:t.length,mtime:e.mtime,type:"pax-header",linkname:e.linkname&&"PaxHeader",uname:e.uname,gname:e.gname,devmajor:e.devmajor,devminor:e.devminor};return new r([f.encode(n),t,v(t.length),f.encode({...n,size:e.size,type:e.type})])}e.exports=()=>async function*(e){for await(let{header:t,body:n}of e){if(t.size&&"symlink"!==t.type||(t.size=0),t.type||(t.type=m(t.mode)),t.mode||(t.mode="directory"===t.type?d:p),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),"string"===typeof n&&(n=i.from(n)),i.isBuffer(n)||r.isBufferList(n)){t.size=n.length,yield new r([b(t),n,v(t.size)]);continue}if("symlink"===t.type&&!t.linkname){t.linkname=(await h(n)).toString(),yield b(t);continue}if(yield b(t),"file"!==t.type&&"contiguous-file"!==t.type)continue;let e=0;for await(const t of n)e+=t.length,yield r.isBufferList(t)?t:new r(t);if(e!==t.size)throw new Error("size mismatch");const s=v(t.size);s&&(yield s)}yield new r(g)}},dad8:function(e,t,n){const i=n("3301"),r={string:()=>"",buffer:()=>i()};e.exports=async(e,t)=>{if(t=t||{},t.type&&!r[t.type])throw new Error(`invalid type "${t.type}"`);let n,i;for await(const s of e)n||(i=t.type||"string"===typeof s?"string":"buffer",n=r[i]()),"string"===i?n+=s:n.append(s);return n||r[t.type||"buffer"]()}},dc90:function(e,t,n){function i(e){function t(e){let t=0;for(let n=0;n{if("%%"===n)return n;a++;const s=i.formatters[r];if("function"===typeof s){const i=e[a];n=s.call(t,i),e.splice(a,1),a--}return n}),i.formatArgs.call(t,e);const c=t.log||i.log;c.apply(t,e)}return o.namespace=e,o.enabled=i.enabled(e),o.useColors=i.useColors(),o.color=t(e),o.destroy=r,o.extend=s,"function"===typeof i.init&&i.init(o),i.instances.push(o),o}function r(){const e=i.instances.indexOf(this);return-1!==e&&(i.instances.splice(e,1),!0)}function s(e,t){const n=i(this.namespace+("undefined"===typeof t?":":t)+e);return n.log=this.log,n}function o(e){let t;i.save(e),i.names=[],i.skips=[];const n=("string"===typeof e?e:"").split(/[\s,]+/),r=n.length;for(t=0;t"-"+e)].join(",");return i.enable(""),e}function c(e){if("*"===e[e.length-1])return!0;let t,n;for(t=0,n=i.skips.length;t{i[t]=e[t]}),i.instances=[],i.names=[],i.skips=[],i.formatters={},i.selectColor=t,i.enable(i.load()),i}e.exports=i},ddcd:function(e,t,n){"use strict";const i=n("675c"),{Buffer:r}=n("b639"),s=n("34eb")("ipfs-http-client:pubsub:subscribe"),o=n("7ae7"),a=n("9878"),c=n("15e4");async function l(e,{onMessage:t,onEnd:n,onError:o}){o=o||s;try{for await(const n of e)try{t({from:i.encode("base58btc",r.from(n.from,"base64")).toString().slice(1),data:r.from(n.data,"base64"),seqno:r.from(n.seqno,"base64"),topicIDs:n.topicIDs})}catch(a){a.message="Failed to parse pubsub message: "+a.message,o(a,!1,n)}}catch(a){"aborted"!==a.type&&"AbortError"!==a.name&&o(a,!0)}finally{n()}}e.exports=a((e,t)=>{const i=o.singleton(),a=n("ea64")(t);return async(t,n,o={})=>{let u;o.signal=i.subscribe(t,n,o.signal);const h=setTimeout(async()=>{s(`Publishing empty message to "${t}" to resolve subscription request`);try{await a(t,r.alloc(0),o)}catch(e){s("Failed to publish empty message",e)}},1e3);try{u=await e.post("pubsub/sub",{timeout:o.timeout,signal:o.signal,searchParams:c({arg:t,...o}),headers:o.headers})}catch(f){throw i.unsubscribe(t,n),f}clearTimeout(h),l(u.ndjson(),{onMessage:n,onEnd:()=>i.unsubscribe(t,n),onError:o.onError})}})},de5e:function(e,t,n){"use strict";const i=n("c449"),r=n("9878"),s=n("15e4");e.exports=r(e=>async function*(t,n={}){const r=await e.post("cat",{timeout:n.timeout,signal:n.signal,searchParams:s({arg:"string"===typeof t?t:new i(t).toString(),...n}),headers:n.headers});yield*r.iterator()})},df75:function(e,t,n){var i=n("ca84"),r=n("7839");e.exports=Object.keys||function(e){return i(e,r)}},df7c:function(e,t,n){(function(e){function n(e,t){for(var n=0,i=e.length-1;i>=0;i--){var r=e[i];"."===r?e.splice(i,1):".."===r?(e.splice(i,1),n++):n&&(e.splice(i,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function i(e){"string"!==typeof e&&(e+="");var t,n=0,i=-1,r=!0;for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!r){n=t+1;break}}else-1===i&&(r=!1,i=t+1);return-1===i?"":e.slice(n,i)}function r(e,t){if(e.filter)return e.filter(t);for(var n=[],i=0;i=-1&&!i;s--){var o=s>=0?arguments[s]:e.cwd();if("string"!==typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(t=o+"/"+t,i="/"===o.charAt(0))}return t=n(r(t.split("/"),(function(e){return!!e})),!i).join("/"),(i?"/":"")+t||"."},t.normalize=function(e){var i=t.isAbsolute(e),o="/"===s(e,-1);return e=n(r(e.split("/"),(function(e){return!!e})),!i).join("/"),e||i||(e="."),e&&o&&(e+="/"),(i?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(r(e,(function(e,t){if("string"!==typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},t.relative=function(e,n){function i(e){for(var t=0;t=0;n--)if(""!==e[n])break;return t>n?[]:e.slice(t,n-t+1)}e=t.resolve(e).substr(1),n=t.resolve(n).substr(1);for(var r=i(e.split("/")),s=i(n.split("/")),o=Math.min(r.length,s.length),a=o,c=0;c=1;--s)if(t=e.charCodeAt(s),47===t){if(!r){i=s;break}}else r=!1;return-1===i?n?"/":".":n&&1===i?"/":e.slice(0,i)},t.basename=function(e,t){var n=i(e);return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n},t.extname=function(e){"string"!==typeof e&&(e+="");for(var t=-1,n=0,i=-1,r=!0,s=0,o=e.length-1;o>=0;--o){var a=e.charCodeAt(o);if(47!==a)-1===i&&(r=!1,i=o+1),46===a?-1===t?t=o:1!==s&&(s=1):-1!==t&&(s=-1);else if(!r){n=o+1;break}}return-1===t||-1===i||0===s||1===s&&t===i-1&&t===n+1?"":e.slice(t,i)};var s="b"==="ab".substr(-1)?function(e,t,n){return e.substr(t,n)}:function(e,t,n){return t<0&&(t=e.length+t),e.substr(t,n)}}).call(this,n("4362"))},e03b:function(e,t,n){"use strict";const i=n("2bbf"),r=e=>i({exact:!0}).test(e);r.v4=e=>i.v4({exact:!0}).test(e),r.v6=e=>i.v6({exact:!0}).test(e),r.version=e=>r(e)?r.v4(e)?4:6:void 0,e.exports=r},e0dc:function(e,t,n){"use strict";const i=n("c449"),r=n("2054"),s=n("7766"),o=n("9878"),a=n("15e4");e.exports=o(e=>async function*(t,n={}){const o=await e.post("dht/query",{timeout:n.timeout,signal:n.signal,searchParams:a({arg:new i(t),...n}),headers:n.headers});for await(let e of o.ndjson())e=s(e),e.id=new i(e.id),e.responses=(e.responses||[]).map(({ID:e,Addrs:t})=>({id:e,addrs:(t||[]).map(e=>r(e))})),yield e})},e163:function(e,t,n){var i=n("5135"),r=n("7b0b"),s=n("f772"),o=n("e177"),a=s("IE_PROTO"),c=Object.prototype;e.exports=o?Object.getPrototypeOf:function(e){return e=r(e),i(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?c:null}},e166:function(e,t,n){"use strict";const i=n("c449"),r=n("9878"),s=n("15e4");e.exports=r(e=>async function*(t={}){t.paths&&(t.paths=Array.isArray(t.paths)?t.paths:[t.paths]);const n=await e.post("pin/ls",{timeout:t.timeout,signal:t.signal,searchParams:s({...t,arg:(t.paths||[]).map(e=>""+e),stream:!0}),headers:t.headers});for await(const e of n.ndjson())yield{cid:new i(e.Cid),type:e.Type}})},e177:function(e,t,n){var i=n("d039");e.exports=!i((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},e260:function(e,t,n){"use strict";var i=n("fc6a"),r=n("44d2"),s=n("3f8c"),o=n("69f3"),a=n("7dd0"),c="Array Iterator",l=o.set,u=o.getterFor(c);e.exports=a(Array,"Array",(function(e,t){l(this,{type:c,target:i(e),index:0,kind:t})}),(function(){var e=u(this),t=e.target,n=e.kind,i=e.index++;return!t||i>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:i,done:!1}:"values"==n?{value:t[i],done:!1}:{value:[i,t[i]],done:!1}}),"values"),s.Arguments=s.Array,r("keys"),r("values"),r("entries")},e2cc:function(e,t,n){var i=n("6eeb");e.exports=function(e,t,n){for(var r in t)i(e,r,t[r],n);return e}},e3db:function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},e667:function(e,t){e.exports=function(e){try{return{error:!1,value:e()}}catch(t){return{error:!0,value:t}}}},e6cf:function(e,t,n){"use strict";var i,r,s,o,a=n("23e7"),c=n("c430"),l=n("da84"),u=n("d066"),h=n("fea9"),f=n("6eeb"),d=n("e2cc"),p=n("d44e"),g=n("2626"),m=n("861d"),v=n("1c0b"),b=n("19aa"),w=n("c6b6"),y=n("8925"),A=n("2266"),E=n("1c7e"),C=n("4840"),F=n("2cf4").set,k=n("b575"),S=n("cdf9"),x=n("44de"),_=n("f069"),B=n("e667"),$=n("69f3"),D=n("94ca"),L=n("b622"),T=n("2d00"),R=L("species"),O="Promise",M=$.get,I=$.set,P=$.getterFor(O),N=h,j=l.TypeError,U=l.document,H=l.process,z=u("fetch"),W=_.f,V=W,G="process"==w(H),K=!!(U&&U.createEvent&&l.dispatchEvent),Y="unhandledrejection",q="rejectionhandled",X=0,Q=1,J=2,Z=1,ee=2,te=D(O,(function(){var e=y(N)!==String(N);if(!e){if(66===T)return!0;if(!G&&"function"!=typeof PromiseRejectionEvent)return!0}if(c&&!N.prototype["finally"])return!0;if(T>=51&&/native code/.test(N))return!1;var t=N.resolve(1),n=function(e){e((function(){}),(function(){}))},i=t.constructor={};return i[R]=n,!(t.then((function(){}))instanceof n)})),ne=te||!E((function(e){N.all(e)["catch"]((function(){}))})),ie=function(e){var t;return!(!m(e)||"function"!=typeof(t=e.then))&&t},re=function(e,t,n){if(!t.notified){t.notified=!0;var i=t.reactions;k((function(){var r=t.value,s=t.state==Q,o=0;while(i.length>o){var a,c,l,u=i[o++],h=s?u.ok:u.fail,f=u.resolve,d=u.reject,p=u.domain;try{h?(s||(t.rejection===ee&&ce(e,t),t.rejection=Z),!0===h?a=r:(p&&p.enter(),a=h(r),p&&(p.exit(),l=!0)),a===u.promise?d(j("Promise-chain cycle")):(c=ie(a))?c.call(a,f,d):f(a)):d(r)}catch(g){p&&!l&&p.exit(),d(g)}}t.reactions=[],t.notified=!1,n&&!t.rejection&&oe(e,t)}))}},se=function(e,t,n){var i,r;K?(i=U.createEvent("Event"),i.promise=t,i.reason=n,i.initEvent(e,!1,!0),l.dispatchEvent(i)):i={promise:t,reason:n},(r=l["on"+e])?r(i):e===Y&&x("Unhandled promise rejection",n)},oe=function(e,t){F.call(l,(function(){var n,i=t.value,r=ae(t);if(r&&(n=B((function(){G?H.emit("unhandledRejection",i,e):se(Y,e,i)})),t.rejection=G||ae(t)?ee:Z,n.error))throw n.value}))},ae=function(e){return e.rejection!==Z&&!e.parent},ce=function(e,t){F.call(l,(function(){G?H.emit("rejectionHandled",e):se(q,e,t.value)}))},le=function(e,t,n,i){return function(r){e(t,n,r,i)}},ue=function(e,t,n,i){t.done||(t.done=!0,i&&(t=i),t.value=n,t.state=J,re(e,t,!0))},he=function(e,t,n,i){if(!t.done){t.done=!0,i&&(t=i);try{if(e===n)throw j("Promise can't be resolved itself");var r=ie(n);r?k((function(){var i={done:!1};try{r.call(n,le(he,e,i,t),le(ue,e,i,t))}catch(s){ue(e,i,s,t)}})):(t.value=n,t.state=Q,re(e,t,!1))}catch(s){ue(e,{done:!1},s,t)}}};te&&(N=function(e){b(this,N,O),v(e),i.call(this);var t=M(this);try{e(le(he,this,t),le(ue,this,t))}catch(n){ue(this,t,n)}},i=function(e){I(this,{type:O,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:X,value:void 0})},i.prototype=d(N.prototype,{then:function(e,t){var n=P(this),i=W(C(this,N));return i.ok="function"!=typeof e||e,i.fail="function"==typeof t&&t,i.domain=G?H.domain:void 0,n.parent=!0,n.reactions.push(i),n.state!=X&&re(this,n,!1),i.promise},catch:function(e){return this.then(void 0,e)}}),r=function(){var e=new i,t=M(e);this.promise=e,this.resolve=le(he,e,t),this.reject=le(ue,e,t)},_.f=W=function(e){return e===N||e===s?new r(e):V(e)},c||"function"!=typeof h||(o=h.prototype.then,f(h.prototype,"then",(function(e,t){var n=this;return new N((function(e,t){o.call(n,e,t)})).then(e,t)}),{unsafe:!0}),"function"==typeof z&&a({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return S(N,z.apply(l,arguments))}}))),a({global:!0,wrap:!0,forced:te},{Promise:N}),p(N,O,!1,!0),g(O),s=u(O),a({target:O,stat:!0,forced:te},{reject:function(e){var t=W(this);return t.reject.call(void 0,e),t.promise}}),a({target:O,stat:!0,forced:c||te},{resolve:function(e){return S(c&&this===s?N:this,e)}}),a({target:O,stat:!0,forced:ne},{all:function(e){var t=this,n=W(t),i=n.resolve,r=n.reject,s=B((function(){var n=v(t.resolve),s=[],o=0,a=1;A(e,(function(e){var c=o++,l=!1;s.push(void 0),a++,n.call(t,e).then((function(e){l||(l=!0,s[c]=e,--a||i(s))}),r)})),--a||i(s)}));return s.error&&r(s.value),n.promise},race:function(e){var t=this,n=W(t),i=n.reject,r=B((function(){var r=v(t.resolve);A(e,(function(e){r.call(t,e).then(n.resolve,i)}))}));return r.error&&i(r.value),n.promise}})},e798:function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async(t,n={})=>{const i=await e.post("dns",{timeout:n.timeout,signal:n.signal,searchParams:r({arg:t,...n}),headers:n.headers}),s=await i.json();return s.Path})},e7c7:function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async(t={})=>{const n=await e.post("diag/sys",{timeout:t.timeout,signal:t.signal,searchParams:r(t),headers:t.headers});return n.json()})},e893:function(e,t,n){var i=n("5135"),r=n("56ef"),s=n("06cf"),o=n("9bf2");e.exports=function(e,t){for(var n=r(t),a=o.f,c=s.f,l=0;lasync(t,n,i={})=>{const c=r({arg:t,...i}),l=new a,u=o([l.signal,i.signal]),h=await e.post("pubsub/pub",{timeout:i.timeout,signal:u,searchParams:c,...await s(n,l,i.headers)});await h.text()})},ec12:function(e,t,n){"use strict";function i(e,{className:t,symbolName:n}){const i=Symbol.for(n),r={[t]:class extends e{constructor(...e){super(...e),Object.defineProperty(this,i,{value:!0})}get[Symbol.toStringTag](){return t}}}[t];return r["is"+t]=e=>!(!e||!e[i]),r}function r(e,{className:t,symbolName:n,withoutNew:i}){const r=Symbol.for(n),s={[t]:function(...t){if(i&&!(this instanceof s))return new s(...t);const n=e.call(this,...t)||this;return n&&!n[r]&&Object.defineProperty(n,r,{value:!0}),n}}[t];return s.prototype=Object.create(e.prototype),s.prototype.constructor=s,Object.defineProperty(s.prototype,Symbol.toStringTag,{get(){return t}}),s["is"+t]=e=>!(!e||!e[r]),s}e.exports=i,e.exports.proto=r},ec71:function(e,t,n){"use strict";const i=n("7766"),r=n("9878"),s=n("15e4");e.exports=r(e=>async(t,n={})=>{const r=await e.post("name/publish",{timeout:n.timeout,signal:n.signal,searchParams:s({arg:t,...n}),headers:n.headers});return i(await r.json())})},ec76:function(e,t,n){var i=n("2612");t.encode=function e(t,n,r){t=t>=0?2*t:-2*t-1;var s=i.encode(t,n,r);return e.bytes=i.encode.bytes,s},t.decode=function e(t,n){var r=i.decode(t,n);return e.bytes=i.decode.bytes,1&r?(r+1)/-2:r/2},t.encodingLength=function(e){return i.encodingLength(e>=0?2*e:-2*e-1)}},ecee:function(e,t,n){"use strict";(function(e){function i(e){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){for(var n=0;n-1;r--){var s=n[r],o=(s.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(o)>-1&&(i=s)}return k.head.insertBefore(t,i),e}}var ye="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function Ae(){var e=12,t="";while(e-- >0)t+=ye[62*Math.random()|0];return t}function Ee(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function Ce(e){return Object.keys(e||{}).reduce((function(t,n){return t+"".concat(n,'="').concat(Ee(e[n]),'" ')}),"").trim()}function Fe(e){return Object.keys(e||{}).reduce((function(t,n){return t+"".concat(n,": ").concat(e[n],";")}),"")}function ke(e){return e.size!==be.size||e.x!==be.x||e.y!==be.y||e.rotate!==be.rotate||e.flipX||e.flipY}function Se(e){var t=e.transform,n=e.containerWidth,i=e.iconWidth,r={transform:"translate(".concat(n/2," 256)")},s="translate(".concat(32*t.x,", ").concat(32*t.y,") "),o="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),a="rotate(".concat(t.rotate," 0 0)"),c={transform:"".concat(s," ").concat(o," ").concat(a)},l={transform:"translate(".concat(i/2*-1," -256)")};return{outer:r,inner:c,path:l}}function xe(e){var t=e.transform,n=e.width,i=void 0===n?$:n,r=e.height,s=void 0===r?$:r,o=e.startCentered,a=void 0!==o&&o,c="";return c+=a&&_?"translate(".concat(t.x/ve-i/2,"em, ").concat(t.y/ve-s/2,"em) "):a?"translate(calc(-50% + ".concat(t.x/ve,"em), calc(-50% + ").concat(t.y/ve,"em)) "):"translate(".concat(t.x/ve,"em, ").concat(t.y/ve,"em) "),c+="scale(".concat(t.size/ve*(t.flipX?-1:1),", ").concat(t.size/ve*(t.flipY?-1:1),") "),c+="rotate(".concat(t.rotate,"deg) "),c}var _e={x:0,y:0,width:"100%",height:"100%"};function Be(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill="black"),e}function $e(e){return"g"===e.tag?e.children:[e]}function De(e){var t=e.children,n=e.attributes,i=e.main,r=e.mask,s=e.maskId,o=e.transform,a=i.width,l=i.icon,u=r.width,h=r.icon,f=Se({transform:o,containerWidth:u,iconWidth:a}),d={tag:"rect",attributes:c({},_e,{fill:"white"})},p=l.children?{children:l.children.map(Be)}:{},g={tag:"g",attributes:c({},f.inner),children:[Be(c({tag:l.tag,attributes:c({},l.attributes,f.path)},p))]},m={tag:"g",attributes:c({},f.outer),children:[g]},v="mask-".concat(s||Ae()),b="clip-".concat(s||Ae()),w={tag:"mask",attributes:c({},_e,{id:v,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[d,m]},y={tag:"defs",children:[{tag:"clipPath",attributes:{id:b},children:$e(h)},w]};return t.push(y,{tag:"rect",attributes:c({fill:"currentColor","clip-path":"url(#".concat(b,")"),mask:"url(#".concat(v,")")},_e)}),{children:t,attributes:n}}function Le(e){var t=e.children,n=e.attributes,i=e.main,r=e.transform,s=e.styles,o=Fe(s);if(o.length>0&&(n["style"]=o),ke(r)){var a=Se({transform:r,containerWidth:i.width,iconWidth:i.width});t.push({tag:"g",attributes:c({},a.outer),children:[{tag:"g",attributes:c({},a.inner),children:[{tag:i.icon.tag,children:i.icon.children,attributes:c({},i.icon.attributes,a.path)}]}]})}else t.push(i.icon);return{children:t,attributes:n}}function Te(e){var t=e.children,n=e.main,i=e.mask,r=e.attributes,s=e.styles,o=e.transform;if(ke(o)&&n.found&&!i.found){var a=n.width,l=n.height,u={x:a/l/2,y:.5};r["style"]=Fe(c({},s,{"transform-origin":"".concat(u.x+o.x/16,"em ").concat(u.y+o.y/16,"em")}))}return[{tag:"svg",attributes:r,children:t}]}function Re(e){var t=e.prefix,n=e.iconName,i=e.children,r=e.attributes,s=e.symbol,o=!0===s?"".concat(t,"-").concat(z.familyPrefix,"-").concat(n):s;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:c({},r,{id:o}),children:i}]}]}function Oe(e){var t=e.icons,n=t.main,i=t.mask,r=e.prefix,s=e.iconName,o=e.transform,a=e.symbol,l=e.title,u=e.maskId,h=e.titleId,f=e.extra,d=e.watchable,p=void 0!==d&&d,g=i.found?i:n,m=g.width,v=g.height,b="fa-w-".concat(Math.ceil(m/v*16)),w=[z.replacementClass,s?"".concat(z.familyPrefix,"-").concat(s):"",b].filter((function(e){return-1===f.classes.indexOf(e)})).concat(f.classes).join(" "),y={children:[],attributes:c({},f.attributes,{"data-prefix":r,"data-icon":s,class:w,role:f.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(m," ").concat(v)})};p&&(y.attributes[T]=""),l&&y.children.push({tag:"title",attributes:{id:y.attributes["aria-labelledby"]||"title-".concat(h||Ae())},children:[l]});var A=c({},y,{prefix:r,iconName:s,main:n,mask:i,maskId:u,transform:o,symbol:a,styles:f.styles}),E=i.found&&n.found?De(A):Le(A),C=E.children,F=E.attributes;return A.children=C,A.attributes=F,a?Re(A):Te(A)}function Me(e){var t=e.content,n=e.width,i=e.height,r=e.transform,s=e.title,o=e.extra,a=e.watchable,l=void 0!==a&&a,u=c({},o.attributes,s?{title:s}:{},{class:o.classes.join(" ")});l&&(u[T]="");var h=c({},o.styles);ke(r)&&(h["transform"]=xe({transform:r,startCentered:!0,width:n,height:i}),h["-webkit-transform"]=h["transform"]);var f=Fe(h);f.length>0&&(u["style"]=f);var d=[];return d.push({tag:"span",attributes:u,children:[t]}),s&&d.push({tag:"span",attributes:{class:"sr-only"},children:[s]}),d}var Ie=function(){},Pe=(z.measurePerformance&&S&&S.mark&&S.measure,function(e,t){return function(n,i,r,s){return e.call(t,n,i,r,s)}}),Ne=function(e,t,n,i){var r,s,o,a=Object.keys(e),c=a.length,l=void 0!==i?Pe(t,i):t;for(void 0===n?(r=1,o=e[a[0]]):(r=0,o=n);r2&&void 0!==arguments[2]?arguments[2]:{},i=n.skipHooks,r=void 0!==i&&i,s=Object.keys(t).reduce((function(e,n){var i=t[n],r=!!i.icon;return r?e[i.iconName]=i.icon:e[n]=i,e}),{});"function"!==typeof V.hooks.addPack||r?V.styles[e]=c({},V.styles[e]||{},s):V.hooks.addPack(e,s),"fas"===e&&je("fa",t)}var Ue=V.styles,He=V.shims,ze=function(){var e=function(e){return Ne(Ue,(function(t,n,i){return t[i]=Ne(n,e,{}),t}),{})};e((function(e,t,n){return t[3]&&(e[t[3]]=n),e})),e((function(e,t,n){var i=t[2];return e[n]=n,i.forEach((function(t){e[t]=n})),e}));var t="far"in Ue;Ne(He,(function(e,n){var i=n[0],r=n[1],s=n[2];return"far"!==r||t||(r="fas"),e[i]={prefix:r,iconName:s},e}),{})};ze();V.styles;function We(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}function Ve(e){var t=e.tag,n=e.attributes,i=void 0===n?{}:n,r=e.children,s=void 0===r?[]:r;return"string"===typeof e?Ee(e):"<".concat(t," ").concat(Ce(i),">").concat(s.map(Ve).join(""),"")}var Ge=function(e){var t={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return e?e.toLowerCase().split(" ").reduce((function(e,t){var n=t.toLowerCase().split("-"),i=n[0],r=n.slice(1).join("-");if(i&&"h"===r)return e.flipX=!0,e;if(i&&"v"===r)return e.flipY=!0,e;if(r=parseFloat(r),isNaN(r))return e;switch(i){case"grow":e.size=e.size+r;break;case"shrink":e.size=e.size-r;break;case"left":e.x=e.x-r;break;case"right":e.x=e.x+r;break;case"up":e.y=e.y-r;break;case"down":e.y=e.y+r;break;case"rotate":e.rotate=e.rotate+r;break}return e}),t):t};function Ke(e){this.name="MissingIcon",this.message=e||"Icon unavailable",this.stack=(new Error).stack}Ke.prototype=Object.create(Error.prototype),Ke.prototype.constructor=Ke;var Ye={fill:"currentColor"},qe={attributeType:"XML",repeatCount:"indefinite",dur:"2s"},Xe=(c({},Ye,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"}),c({},qe,{attributeName:"opacity"}));c({},Ye,{cx:"256",cy:"364",r:"28"}),c({},qe,{attributeName:"r",values:"28;14;28;28;14;28;"}),c({},Xe,{values:"1;0;1;1;0;1;"}),c({},Ye,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),c({},Xe,{values:"1;0;0;0;0;1;"}),c({},Ye,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),c({},Xe,{values:"0;0;1;1;0;0;"}),V.styles;function Qe(e){var t=e[0],n=e[1],i=e.slice(4),r=l(i,1),s=r[0],o=null;return o=Array.isArray(s)?{tag:"g",attributes:{class:"".concat(z.familyPrefix,"-").concat(M.GROUP)},children:[{tag:"path",attributes:{class:"".concat(z.familyPrefix,"-").concat(M.SECONDARY),fill:"currentColor",d:s[0]}},{tag:"path",attributes:{class:"".concat(z.familyPrefix,"-").concat(M.PRIMARY),fill:"currentColor",d:s[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:s}},{found:!0,width:t,height:n,icon:o}}V.styles;var Je='svg:not(:root).svg-inline--fa {\n overflow: visible;\n}\n\n.svg-inline--fa {\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.225em;\n}\n.svg-inline--fa.fa-w-1 {\n width: 0.0625em;\n}\n.svg-inline--fa.fa-w-2 {\n width: 0.125em;\n}\n.svg-inline--fa.fa-w-3 {\n width: 0.1875em;\n}\n.svg-inline--fa.fa-w-4 {\n width: 0.25em;\n}\n.svg-inline--fa.fa-w-5 {\n width: 0.3125em;\n}\n.svg-inline--fa.fa-w-6 {\n width: 0.375em;\n}\n.svg-inline--fa.fa-w-7 {\n width: 0.4375em;\n}\n.svg-inline--fa.fa-w-8 {\n width: 0.5em;\n}\n.svg-inline--fa.fa-w-9 {\n width: 0.5625em;\n}\n.svg-inline--fa.fa-w-10 {\n width: 0.625em;\n}\n.svg-inline--fa.fa-w-11 {\n width: 0.6875em;\n}\n.svg-inline--fa.fa-w-12 {\n width: 0.75em;\n}\n.svg-inline--fa.fa-w-13 {\n width: 0.8125em;\n}\n.svg-inline--fa.fa-w-14 {\n width: 0.875em;\n}\n.svg-inline--fa.fa-w-15 {\n width: 0.9375em;\n}\n.svg-inline--fa.fa-w-16 {\n width: 1em;\n}\n.svg-inline--fa.fa-w-17 {\n width: 1.0625em;\n}\n.svg-inline--fa.fa-w-18 {\n width: 1.125em;\n}\n.svg-inline--fa.fa-w-19 {\n width: 1.1875em;\n}\n.svg-inline--fa.fa-w-20 {\n width: 1.25em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-border {\n height: 1.5em;\n}\n.svg-inline--fa.fa-li {\n width: 2em;\n}\n.svg-inline--fa.fa-fw {\n width: 1.25em;\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: #ff253a;\n border-radius: 1em;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #fff;\n height: 1.5em;\n line-height: 1;\n max-width: 5em;\n min-width: 1.5em;\n overflow: hidden;\n padding: 0.25em;\n right: 0;\n text-overflow: ellipsis;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: 0;\n right: 0;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: 0;\n left: 0;\n right: auto;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n right: 0;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: 0;\n right: auto;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-lg {\n font-size: 1.3333333333em;\n line-height: 0.75em;\n vertical-align: -0.0667em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit;\n}\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: 0.1em;\n padding: 0.2em 0.25em 0.15em;\n}\n\n.fa-pull-left {\n float: left;\n}\n\n.fa-pull-right {\n float: right;\n}\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: 0.3em;\n}\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: 0.3em;\n}\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n -webkit-filter: none;\n filter: none;\n}\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: #fff;\n}\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse {\n color: #fff;\n}';function Ze(){var e=D,t=L,n=z.familyPrefix,i=z.replacementClass,r=Je;if(n!==e||i!==t){var s=new RegExp("\\.".concat(e,"\\-"),"g"),o=new RegExp("\\--".concat(e,"\\-"),"g"),a=new RegExp("\\.".concat(t),"g");r=r.replace(s,".".concat(n,"-")).replace(o,"--".concat(n,"-")).replace(a,".".concat(i))}return r}var et=function(){function e(){r(this,e),this.definitions={}}return o(e,[{key:"add",value:function(){for(var e=this,t=arguments.length,n=new Array(t),i=0;i1&&void 0!==arguments[1]?arguments[1]:{},i=(t||{}).icon?t:it(t||{}),r=n.mask;return r&&(r=(r||{}).icon?r:it(r||{})),e(i,c({},n,{mask:r}))}}var st=new et,ot=!1,at={transform:function(e){return Ge(e)}},ct=rt((function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.transform,i=void 0===n?be:n,r=t.symbol,s=void 0!==r&&r,o=t.mask,a=void 0===o?null:o,l=t.maskId,u=void 0===l?null:l,h=t.title,f=void 0===h?null:h,d=t.titleId,p=void 0===d?null:d,g=t.classes,m=void 0===g?[]:g,v=t.attributes,b=void 0===v?{}:v,w=t.styles,y=void 0===w?{}:w;if(e){var A=e.prefix,E=e.iconName,C=e.icon;return nt(c({type:"icon"},e),(function(){return tt(),z.autoA11y&&(f?b["aria-labelledby"]="".concat(z.replacementClass,"-title-").concat(p||Ae()):(b["aria-hidden"]="true",b["focusable"]="false")),Oe({icons:{main:Qe(C),mask:a?Qe(a.icon):{found:!1,width:null,height:null,icon:{}}},prefix:A,iconName:E,transform:c({},be,i),symbol:s,title:f,maskId:u,titleId:p,extra:{attributes:b,styles:y,classes:m}})}))}})),lt=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.transform,i=void 0===n?be:n,r=t.title,s=void 0===r?null:r,o=t.classes,a=void 0===o?[]:o,l=t.attributes,h=void 0===l?{}:l,f=t.styles,d=void 0===f?{}:f;return nt({type:"text",content:e},(function(){return tt(),Me({content:e,transform:c({},be,i),title:s,extra:{attributes:h,styles:d,classes:["".concat(z.familyPrefix,"-layers-text")].concat(u(a))}})}))}}).call(this,n("c8ba"))},ecf4:function(e,t,n){"use strict";e.exports=e=>({bitswap:n("8b87")(e),bw:n("2bb8")(e),repo:n("a3b6")(e)})},ee98:function(e,t,n){(function(t,i){e.exports=i(n("2b0e"))})(0,(function(e){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.i=function(e){return e},n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:i})},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=2)}([function(e,t){e.exports=function(e,t,n,i){var r,s=e=e||{},o=typeof e.default;"object"!==o&&"function"!==o||(r=e,s=e.default);var a="function"===typeof s?s.options:s;if(t&&(a.render=t.render,a.staticRenderFns=t.staticRenderFns),n&&(a._scopeId=n),i){var c=Object.create(a.computed||null);Object.keys(i).forEach((function(e){var t=i[e];c[e]=function(){return t}})),a.computed=c}return{esModule:r,exports:s,options:a}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var i=n(20),r=n.n(i),s=new r.a({name:"vue-notification"})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(3),r=n.n(i),s=n(1),o="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a={install:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.installed){this.installed=!0,this.params=t,e.component(t.componentName||"notifications",r.a);var n=function(e){"string"===typeof e&&(e={title:"",text:e}),"object"===("undefined"===typeof e?"undefined":o(e))&&s["a"].$emit("add",e)};n.close=function(e){s["a"].$emit("close",e)};var i=t.name||"notify";e.prototype["$"+i]=n,e[i]=n}}};t["default"]=a},function(e,t,n){n(17);var i=n(0)(n(5),n(15),null,null);e.exports=i.exports},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t["default"]={name:"CssGroup",props:["name"]}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(2),r=n(1),s=n(9),o=n(7),a=n(13),c=n.n(a),l=n(12),u=n.n(l),h=n(8);function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d={IDLE:0,DESTROYED:2},p={name:"Notifications",components:{VelocityGroup:c.a,CssGroup:u.a},props:{group:{type:String,default:""},width:{type:[Number,String],default:300},reverse:{type:Boolean,default:!1},position:{type:[String,Array],default:function(){return o["a"].position}},classes:{type:String,default:"vue-notification"},animationType:{type:String,default:"css",validator:function(e){return"css"===e||"velocity"===e}},animation:{type:Object,default:function(){return o["a"].velocityAnimation}},animationName:{type:String,default:o["a"].cssAnimation},speed:{type:Number,default:300},cooldown:{type:Number,default:0},duration:{type:Number,default:3e3},delay:{type:Number,default:0},max:{type:Number,default:1/0},ignoreDuplicates:{type:Boolean,default:!1},closeOnClick:{type:Boolean,default:!0}},data:function(){return{list:[],velocity:i["default"].params.velocity}},mounted:function(){r["a"].$on("add",this.addItem),r["a"].$on("close",this.closeItem)},computed:{actualWidth:function(){return n.i(h["a"])(this.width)},isVA:function(){return"velocity"===this.animationType},componentName:function(){return this.isVA?"VelocityGroup":"CssGroup"},styles:function(){var e=n.i(s["a"])(this.position),t=e.x,i=e.y,r=this.actualWidth.value,o=this.actualWidth.type,a=f({width:r+o},i,"0px");return"center"===t?a["left"]="calc(50% - "+r/2+o+")":a[t]="0px",a},active:function(){return this.list.filter((function(e){return e.state!==d.DESTROYED}))},botToTop:function(){return this.styles.hasOwnProperty("bottom")}},methods:{destroyIfNecessary:function(e){this.closeOnClick&&this.destroy(e)},addItem:function(e){var t=this;if(e.group=e.group||"",this.group===e.group)if(e.clean||e.clear)this.destroyAll();else{var i="number"===typeof e.duration?e.duration:this.duration,r="number"===typeof e.speed?e.speed:this.speed,o="boolean"===typeof e.ignoreDuplicates?e.ignoreDuplicates:this.ignoreDuplicates,a=e.title,c=e.text,l=e.type,u=e.data,h=e.id,f={id:h||n.i(s["b"])(),title:a,text:c,type:l,state:d.IDLE,speed:r,length:i+2*r,data:u};i>=0&&(f.timer=setTimeout((function(){t.destroy(f)}),f.length));var p=this.reverse?!this.botToTop:this.botToTop,g=-1,m=this.active.some((function(t){return t.title===e.title&&t.text===e.text})),v=!o||!m;v&&(p?(this.list.push(f),this.active.length>this.max&&(g=0)):(this.list.unshift(f),this.active.length>this.max&&(g=this.active.length-1)),-1!==g&&this.destroy(this.active[g]))}},closeItem:function(e){this.destroyById(e)},notifyClass:function(e){return["vue-notification-template",this.classes,e.type]},notifyWrapperStyle:function(e){return this.isVA?null:{transition:"all "+e.speed+"ms"}},destroy:function(e){clearTimeout(e.timer),e.state=d.DESTROYED,this.isVA||this.clean()},destroyById:function(e){var t=this.list.find((function(t){return t.id===e}));t&&this.destroy(t)},destroyAll:function(){this.active.forEach(this.destroy)},getAnimation:function(e,t){var n=this.animation[e];return"function"===typeof n?n.call(this,t):n},enter:function(e){var t=e.el,n=e.complete,i=this.getAnimation("enter",t);this.velocity(t,i,{duration:this.speed,complete:n})},leave:function(e){var t=e.el,n=e.complete,i=this.getAnimation("leave",t);this.velocity(t,i,{duration:this.speed,complete:n})},clean:function(){this.list=this.list.filter((function(e){return e.state!==d.DESTROYED}))}}};t["default"]=p},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t["default"]={name:"VelocityGroup",methods:{enter:function(e,t){this.$emit("enter",{el:e,complete:t})},leave:function(e,t){this.$emit("leave",{el:e,complete:t})},afterLeave:function(){this.$emit("afterLeave")}}}},function(e,t,n){"use strict";t["a"]={position:["top","right"],cssAnimation:"vn-fade",velocityAnimation:{enter:function(e){var t=e.clientHeight;return{height:[t,0],opacity:[1,0]}},leave:{height:0,opacity:[0,1]}}}},function(e,t,n){"use strict";var i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r="[-+]?[0-9]*.?[0-9]+",s=[{name:"px",regexp:new RegExp("^"+r+"px$")},{name:"%",regexp:new RegExp("^"+r+"%$")},{name:"px",regexp:new RegExp("^"+r+"$")}],o=function(e){if("auto"===e)return{type:e,value:0};for(var t=0;tn.parts.length&&(i.parts.length=n.parts.length)}else{var o=[];for(r=0;rasync(t,n={})=>{t&&"object"===typeof t&&!i.isMultiaddr(t)&&(n=t,t=null);const r=await e.post("bootstrap/rm",{timeout:n.timeout,signal:n.signal,searchParams:s({arg:t,...n}),headers:n.headers});return r.json()})},f140:function(e,t,n){"use strict";const i=n("96a8"),r=i(n("c2c8")),s=n("0eff");t=e.exports;const o=e=>{const t={};return e.Data&&e.Data.byteLength>0?t.Data=e.Data:t.Data=null,e.Links&&e.Links.length>0?t.Links=e.Links.map(e=>({Hash:e.Hash.buffer,Name:e.Name,Tsize:e.Tsize})):t.Links=null,t},a=e=>{const t=e.Data,n=e.Links||[],i=r.PBNode.encode(o({Data:t,Links:n}));return i},c=(e,t=[])=>{const n={Data:e};return n.Links=t.map(e=>s.isDAGLink(e)?e:s.util.createDagLinkFromB58EncodedHash(e)),a(n)};t.serializeDAGNode=a,t.serializeDAGNodeLike=c},f278:function(e,t,n){"use strict";e.exports=e=>({chmod:n("9ef7")(e),cp:n("cf29")(e),flush:n("786a")(e),ls:n("5365")(e),mkdir:n("7ec9")(e),mv:n("bb1c")(e),read:n("06b1")(e),rm:n("71ef")(e),stat:n("51a1")(e),touch:n("578c")(e),write:n("7996")(e)})},f2d1:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var i={prefix:"fab",iconName:"github",icon:[496,512,[],"f09b","M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"]}},f382:function(e,t,n){"use strict";e.exports=e=>({apply:n("f739")(e),list:n("4bf1")(e)})},f5ac:function(e,t,n){"use strict";var i=n("2612"),r=n("ec76");const{Buffer:s}=n("b639");var o=function(e,t,n,i){return t.bytes=n.bytes=0,{type:e,encode:t,decode:n,encodingLength:i}};t.make=o,t.bytes=function(){var e=function(e){return s.isBuffer(e)?e.length:s.byteLength(e)},t=function(t){var n=e(t);return i.encodingLength(n)+n},n=function(t,r,s){var o=s,a=e(t);return i.encode(a,r,s),s+=i.encode.bytes,t instanceof Uint8Array?r.set(t,s):r.write(t,s,a),s+=a,n.bytes=s-o,r},r=function(e,t){var n=t,s=i.decode(e,t);t+=i.decode.bytes;var o=e.slice(t,t+s);return t+=o.length,r.bytes=t-n,o};return o(2,n,r,t)}(),t.string=function(){var e=function(e){var t=s.byteLength(e);return i.encodingLength(t)+t},t=function(e,n,r){var o=r,a=s.byteLength(e);return i.encode(a,n,r,"utf-8"),r+=i.encode.bytes,n.write(e,r,a),r+=a,t.bytes=r-o,n},n=function(e,t){var r=t,s=i.decode(e,t);t+=i.decode.bytes;var o=e.toString("utf-8",t,t+s);return t+=s,n.bytes=t-r,o};return o(2,t,n,e)}(),t.bool=function(){var e=function(e){return 1},t=function(e,n,i){return n[i]=e?1:0,t.bytes=1,n},n=function(e,t){var i=e[t]>0;return n.bytes=1,i};return o(0,t,n,e)}(),t.int32=function(){var e=function(t,n){var r=i.decode(t,n);return e.bytes=i.decode.bytes,r>2147483647?r-4294967296:r},t=function(e,n,r){return i.encode(e<0?e+4294967296:e,n,r),t.bytes=i.encode.bytes,n},n=function(e){return i.encodingLength(e<0?e+4294967296:e)};return o(0,t,e,n)}(),t.int64=function(){var e=function(t,n){var r=i.decode(t,n);if(r>=Math.pow(2,63)){var o=9;while(255===t[n+o-1])o--;o=o||9;var a=s.allocUnsafe(o);t.copy(a,0,n,n+o),a[o-1]=127&a[o-1],r=-1*i.decode(a,0),e.bytes=10}else e.bytes=i.decode.bytes;return r},t=function(e,n,r){if(e<0){var s=r+9;i.encode(-1*e,n,r),r+=i.encode.bytes-1,n[r]=128|n[r];while(rasync(t,n={})=>{t=Array.isArray(t)?t:[t];const i=await e.post("swarm/connect",{timeout:n.timeout,signal:n.signal,searchParams:r({arg:t.map(e=>""+e),...n}),headers:n.headers}),{Strings:s}=await i.json();return s||[]})},f739:function(e,t,n){"use strict";const i=n("9878"),r=n("15e4");e.exports=i(e=>async(t,n={})=>{const i=await e.post("config/profile/apply",{timeout:n.timeout,signal:n.signal,searchParams:r({arg:t,...n}),headers:n.headers}),s=await i.json();return{original:s.OldCfg,updated:s.NewCfg}})},f772:function(e,t,n){var i=n("5692"),r=n("90e3"),s=i("keys");e.exports=function(e){return s[e]||(s[e]=r(e))}},f97d:function(e,t,n){"use strict";e.exports=e=>({wantlist:n("7b5f")(e),wantlistForPeer:n("67ed")(e),stat:n("8b87")(e),unwant:n("9bd8")(e)})},fa45:function(e,t){e.exports=r;var n=128,i=127;function r(e,t){var s,o=0,a=(t=t||0,0),c=t,l=e.length;do{if(c>=l)throw r.bytes=0,new RangeError("Could not decode varint");s=e[c++],o+=a<28?(s&i)<=n);return r.bytes=c-t,o}},fa4e:function(e,t,n){var i=n("05e5");function r(e){if(!(e instanceof Object))throw new TypeError('"obj" must be an object (or inherit from it)');return s(e)}function s(e,t){for(var n in t=new i(e,t),e){var r=e[n];if(r instanceof Object&&(t.contains(r)||s(r,t)))return!0}return!1}e.exports=r},fa9f:function(e,t,n){"use strict";e.exports=e=>({cancel:n("7f99")(e),state:n("b720")(e),subs:n("271f")(e)})},fc6a:function(e,t,n){var i=n("44ad"),r=n("1d80");e.exports=function(e){return i(r(e))}},fdbf:function(e,t,n){var i=n("4930");e.exports=i&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},fe3c:function(e,t,n){"use strict";const{Buffer:i}=n("b639"),r=n("c449"),s=n("542b"),o=n("9878"),a=n("15e4"),c=n("74fd"),l=n("91d3");e.exports=o(e=>async(t,n,o={})=>{const u=new l,h=c([u.signal,o.signal]),{Hash:f}=await(await e.post("object/patch/set-data",{timeout:o.timeout,signal:h,searchParams:a({arg:[""+(i.isBuffer(t)?new r(t):t)],...o}),...await s(n,u,o.headers)})).json();return new r(f)})},fea9:function(e,t,n){var i=n("da84");e.exports=i.Promise},ff0e:function(e,t,n){const i=n("2054"),r=(e,t)=>t,s=(e,t,n,i)=>{if(i&&!1===i.assumeHttp)return`tcp://${e}:${t}`;let r="tcp",s=":"+t;const o=n[n.length-1];return"tcp"===o.protocol&&(r="443"===t?"https":"http",s="443"===t||"80"===t?"":s),`${r}://${e}${s}`},o={ip4:r,ip6:(e,t,n,i)=>1===i.length&&"ip6"===i[0].protocol?t:`[${t}]`,tcp:(e,t,n,i,r)=>i.some(e=>["http","https","ws","wss"].includes(e.protocol))?`${e}:${t}`:s(e,t,i,r),udp:(e,t)=>`udp://${e}:${t}`,dnsaddr:r,dns4:r,dns6:r,ipfs:(e,t)=>`${e}/ipfs/${t}`,p2p:(e,t)=>`${e}/p2p/${t}`,http:e=>"http://"+e,https:e=>"https://"+e,ws:e=>"ws://"+e,wss:e=>"wss://"+e,"p2p-websocket-star":e=>e+"/p2p-websocket-star","p2p-webrtc-star":e=>e+"/p2p-webrtc-star","p2p-webrtc-direct":e=>e+"/p2p-webrtc-direct"};e.exports=(e,t)=>{const n=i(e),r=e.toString().split("/").slice(1);return n.tuples().map(e=>({protocol:r.shift(),content:e[1]?r.shift():null})).reduce((e,n,i,r)=>{const s=o[n.protocol];if(!s)throw new Error("Unsupported protocol "+n.protocol);return s(e,n.content,i,r,t)},"")}},ffe1:function(e,t,n){"use strict";e.exports=e=>({get:n("4815")(e),put:n("1f2a")(e),findProvs:n("0e68")(e),findPeer:n("1c65")(e),provide:n("12a6")(e),query:n("e0dc")(e)})}}]); +//# sourceMappingURL=chunk-vendors.08351f9e.js.map \ No newline at end of file diff --git a/js/chunk-vendors.08351f9e.js.map b/js/chunk-vendors.08351f9e.js.map new file mode 100644 index 0000000..430403b --- /dev/null +++ b/js/chunk-vendors.08351f9e.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/borc/src/index.js","webpack:///./node_modules/ipfs-http-client/src/diag/index.js","webpack:///./node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/ipfs-http-client/src/name/index.js","webpack:///./node_modules/is-circular/lib/node.js","webpack:///./node_modules/brace/index.js","webpack:///./node_modules/multiaddr/node_modules/multibase/src/constants.js","webpack:///./node_modules/ipfs-http-client/src/files/read.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/ipfs-http-client/src/bootstrap/list.js","webpack:///./node_modules/ipfs-http-client/src/swarm/peers.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./node_modules/protocol-buffers-schema/index.js","webpack:///./node_modules/ipld-raw/node_modules/multihashing-async/src/utils.js","webpack:///./node_modules/ipfs-http-client/src/lib/core.js","webpack:///./node_modules/ipfs-http-client/src/refs/local.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/protocol-buffers-schema/stringify.js","webpack:///./node_modules/ipfs-http-client/src/key/rm.js","webpack:///./node_modules/ipfs-http-client/src/object/data.js","webpack:///./node_modules/any-signal/abort-controller.browser.js","webpack:///./node_modules/ipfs-http-client/src/block/get.js","webpack:///./node_modules/ipfs-http-client/src/dht/find-provs.js","webpack:///./node_modules/multihashing-async/src/index.js","webpack:///./node_modules/ipld-dag-pb/src/dag-link/dagLink.js","webpack:///./node_modules/it-tar/extract-headers.js","webpack:///./node_modules/merge-options/node_modules/is-plain-obj/index.js","webpack:///./node_modules/ipld-dag-pb/src/dag-node/dagNode.js","webpack:///./node_modules/ipfs-core-utils/src/files/normalise-input/normalise-content.browser.js","webpack:///./node_modules/multiaddr/src/ip.js","webpack:///./node_modules/ipfs-http-client/src/key/import.js","webpack:///./node_modules/ipfs-http-client/src/dht/provide.js","webpack:///./node_modules/ipld-raw/node_modules/multihashing-async/src/blake.js","webpack:///./node_modules/ms/index.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/blakejs/blake2b.js","webpack:///./node_modules/ipfs-http-client/src/lib/to-url-search-params.js","webpack:///./node_modules/ipfs-http-client/src/swarm/disconnect.js","webpack:///./node_modules/iso-url/index.js","webpack:///./node_modules/multicodec/src/print.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/multibase/src/rfc4648.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/internals/a-function.js","webpack:///./node_modules/multicodec/src/util.js","webpack:///./node_modules/js-sha3/src/sha3.js","webpack:///./node_modules/ipfs-http-client/src/dht/find-peer.js","webpack:///./node_modules/multiaddr/node_modules/multibase/src/base16.js","webpack:///./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/ipfs-http-client/src/object/put.js","webpack:///./node_modules/core-js/internals/engine-is-ios.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./node_modules/iso-url/src/url-browser.js","webpack:///./node_modules/ipfs-http-client/src/dht/put.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/multiaddr/src/index.js","webpack:///./node_modules/core-js/internals/iterate.js","webpack:///./node_modules/borc/src/tagged.js","webpack:///./node_modules/ipld-raw/node_modules/multihashing-async/src/sha.browser.js","webpack:///./node_modules/ipld-dag-pb/src/dag-node/sortLinks.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/murmurhash3js-revisited/lib/murmurHash3js.js","webpack:///./node_modules/stream-to-it/source.js","webpack:///./node_modules/ipfs-http-client/src/lib/mode-to-string.js","webpack:///./node_modules/varint/index.js","webpack:///./node_modules/core-js/internals/set-species.js","webpack:///./node_modules/multihashing-async/src/sha.browser.js","webpack:///./node_modules/ipfs-http-client/src/name/pubsub/subs.js","webpack:///./node_modules/ipfs-utils/src/http/fetch.browser.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/ipfs-utils/src/env.js","webpack:///./node_modules/vue/dist/vue.runtime.esm.js","webpack:///./node_modules/ipfs-http-client/src/config/replace.js","webpack:///./node_modules/ipfs-http-client/src/stats/bw.js","webpack:///./node_modules/is-ip/node_modules/ip-regex/index.js","webpack:///./node_modules/ipfs-http-client/src/config/getAll.js","webpack:///./node_modules/ipld-dag-pb/src/resolver.js","webpack:///./node_modules/core-js/internals/task.js","webpack:///./node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/borc/src/encoder.js","webpack:///./node_modules/ipfs-http-client/src/object/index.js","webpack:///./node_modules/ipfs-http-client/src/get.js","webpack:///./node_modules/ipfs-http-client/src/block/rm.js","webpack:///./node_modules/blakejs/blake2s.js","webpack:///./node_modules/bl/BufferList.js","webpack:///./node_modules/ipfs-http-client/src/log/index.js","webpack:///./node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/ipfs-http-client/src/swarm/localAddrs.js","webpack:///./node_modules/ipfs-http-client/src/object/stat.js","webpack:///./node_modules/debug/src/browser.js","webpack:///./node_modules/multihashes/src/index.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/multiaddr/node_modules/multibase/src/base32.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/ipfs-http-client/src/object/patch/add-link.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/ipfs-http-client/src/pubsub/unsubscribe.js","webpack:///./node_modules/ipfs-http-client/src/log/level.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./node_modules/parse-duration/index.mjs","webpack:///./node_modules/iso-url/src/relative.js","webpack:///./node_modules/ipld-dag-pb/src/dag-node/rmLink.js","webpack:///./node_modules/ipfs-http-client/src/config/set.js","webpack:///./node_modules/ipld-dag-cbor/src/index.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/multihashing-async/src/crypto.js","webpack:///./node_modules/ipfs-http-client/src/pubsub/index.js","webpack:///./node_modules/multiaddr/node_modules/multibase/src/index.js","webpack:///./node_modules/murmurhash3js-revisited/index.js","webpack:///./node_modules/ipfs-utils/src/globalthis.js","webpack:///./node_modules/ipfs-http-client/src/mount.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/cids/src/cid-util.js","webpack:///./node_modules/base-x/src/index.js","webpack:///./node_modules/ipfs-http-client/src/log/tail.js","webpack:///./node_modules/ipfs-http-client/src/bootstrap/reset.js","webpack:///./node_modules/node-libs-browser/mock/process.js","webpack:///./node_modules/ipfs-http-client/src/key/rename.js","webpack:///./node_modules/ipfs-utils/src/files/url-source.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/core-js/internals/host-report-errors.js","webpack:///./node_modules/p-defer/index.js","webpack:///./node_modules/ipld-dag-pb/src/dag-node/addLink.js","webpack:///./node_modules/multihashes/src/constants.js","webpack:///./node_modules/ipfs-http-client/src/dht/get.js","webpack:///./node_modules/core-js/internals/species-constructor.js","webpack:///./node_modules/ipfs-http-client/src/pubsub/peers.js","webpack:///./node_modules/ipfs-http-client/src/repo/gc.js","webpack:///./node_modules/ipfs-http-client/src/bootstrap/index.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/ipfs-http-client/src/config/profiles/list.js","webpack:///./node_modules/it-tar/index.js","webpack:///./node_modules/ipfs-core-utils/src/files/normalise-input/index.browser.js","webpack:///./node_modules/ipfs-http-client/src/pin/index.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/ipld-raw/src/index.js","webpack:///./node_modules/ipfs-http-client/src/object/links.js","webpack:///./node_modules/ipfs-http-client/src/diag/cmds.js","webpack:///./node_modules/merge-options/index.js","webpack:///./node_modules/borc/src/simple.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/has.js","webpack:///./node_modules/ipfs-http-client/src/version.js","webpack:///./node_modules/ipfs-http-client/src/files/stat.js","webpack:///./node_modules/ipfs-http-client/src/block/stat.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/ipfs-http-client/src/files/ls.js","webpack:///./node_modules/ipfs-http-client/src/lib/multipart-request.browser.js","webpack:///./node_modules/ipfs-http-client/src/swarm/index.js","webpack:///./node_modules/ipld-dag-cbor/src/resolver.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/ipfs-http-client/src/dag/get.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/ipfs-http-client/src/files/touch.js","webpack:///./node_modules/ipfs-http-client/src/pin/rm.js","webpack:///./node_modules/ipfs-http-client/src/add.js","webpack:///./node_modules/multihashing-async/src/blake.js","webpack:///./node_modules/ipld-raw/node_modules/multihashing-async/src/crypto.js","webpack:///./node_modules/ipfs-http-client/src/key/index.js","webpack:///./node_modules/multicodec/src/int-table.js","webpack:///./node_modules/ipfs-http-client/src/dag/index.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/it-map/index.js","webpack:///./node_modules/multicodec/src/index.js","webpack:///./node_modules/borc/src/utils.js","webpack:///./node_modules/browser-readablestream-to-it/index.js","webpack:///./node_modules/multiaddr/node_modules/multibase/src/base64.js","webpack:///./node_modules/core-js/internals/object-assign.js","webpack:///./node_modules/ipfs-http-client/src/lib/object-to-camel-with-metadata.js","webpack:///./node_modules/varint/length.js","webpack:///./node_modules/ipfs-http-client/src/dag/put.js","webpack:///./node_modules/is-electron/index.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/ipfs-utils/src/http.js","webpack:///./node_modules/multibase/src/index.js","webpack:///./node_modules/ipfs-http-client/src/object/patch/rm-link.js","webpack:///./node_modules/ipfs-http-client/src/bitswap/wantlist-for-peer.js","webpack:///./node_modules/ipfs-http-client/src/bootstrap/clear.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/iso-constants/index.browser.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./node_modules/ipfs-http-client/src/dag/resolve.js","webpack:///./node_modules/ipfs-http-client/src/files/rm.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/ipfs-http-client/src/log/ls.js","webpack:///./node_modules/ipfs-http-client/src/add-all.js","webpack:///./node_modules/any-signal/index.js","webpack:///./node_modules/it-tar/pack-headers.js","webpack:///./node_modules/ipfs-http-client/src/lib/object-to-camel.js","webpack:///./node_modules/ipld-raw/node_modules/multihashing-async/src/index.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/ipfs-http-client/src/files/flush.js","webpack:///./node_modules/it-reader/index.js","webpack:///./node_modules/ipfs-utils/src/text-decoder.browser.js","webpack:///./node_modules/ipfs-http-client/src/files/write.js","webpack:///./node_modules/ipfs-http-client/src/pubsub/subscription-tracker.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/ipld-dag-pb/src/dag-node/index.js","webpack:///./node_modules/ipfs-http-client/src/bitswap/wantlist.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/vue2-ace-editor/index.js","webpack:///./node_modules/core-js/internals/define-iterator.js","webpack:///./node_modules/stable/stable.js","webpack:///./node_modules/ipfs-http-client/src/files/mkdir.js","webpack:///./node_modules/ipfs-http-client/src/name/pubsub/cancel.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/multicodec/src/constants.js","webpack:///./node_modules/ipld-dag-pb/src/index.js","webpack:///./node_modules/borc/src/decoder.asm.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/ipfs-http-client/src/lib/mtime-to-object.js","webpack:///./node_modules/blakejs/util.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/borc/src/decoder.js","webpack:///./node_modules/ipfs-http-client/src/key/gen.js","webpack:///./node_modules/ipld-dag-pb/src/util.js","webpack:///./node_modules/borc/src/constants.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/safe-buffer/index.js","webpack:///./node_modules/protons/src/compile/encoding-length.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/ipfs-http-client/src/bitswap/stat.js","webpack:///./node_modules/ipfs-http-client/src/object/patch/append-data.js","webpack:///./node_modules/borc/src/diagnose.js","webpack:///./node_modules/bignumber.js/bignumber.js","webpack:///./node_modules/ipfs-http-client/src/block/index.js","webpack:///./node_modules/it-tar/extract.js","webpack:///./node_modules/ipfs-http-client/src/stop.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/abort-controller/browser.js","webpack:///./node_modules/protocol-buffers-schema/parse.js","webpack:///./node_modules/ipfs-http-client/src/refs/index.js","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/ipfs-http-client/src/pubsub/ls.js","webpack:///./node_modules/ipld-dag-pb/src/genCid.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/ipfs-http-client/src/index.js","webpack:///./node_modules/multiaddr/src/protocols-table.js","webpack:///./node_modules/protocol-buffers-schema/tokenize.js","webpack:///./node_modules/protons/src/index.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/ipfs-http-client/src/lib/configure.js","webpack:///./node_modules/it-last/index.js","webpack:///./node_modules/ipfs-http-client/src/resolve.js","webpack:///./node_modules/ipfs-http-client/src/key/list.js","webpack:///./node_modules/ipfs-http-client/src/bitswap/unwant.js","webpack:///./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/protons/src/compile/encode.js","webpack:///./node_modules/multihashing-async/src/utils.js","webpack:///./node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./node_modules/ipfs-http-client/src/files/chmod.js","webpack:///./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///./node_modules/it-peekable/index.js","webpack:///./node_modules/multiaddr/src/convert.js","webpack:///./node_modules/multiaddr/node_modules/multibase/src/base.js","webpack:///./node_modules/ipfs-http-client/src/dht/response-types.js","webpack:///./node_modules/multibase/src/base.js","webpack:///./node_modules/ipfs-http-client/src/repo/stat.js","webpack:///./node_modules/ipfs-http-client/src/name/resolve.js","webpack:///./node_modules/ipfs-http-client/src/commands.js","webpack:///./node_modules/ipfs-http-client/src/bootstrap/add.js","webpack:///./node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/core-js/modules/es.promise.finally.js","webpack:///./node_modules/ipfs-http-client/src/repo/version.js","webpack:///./node_modules/multibase/src/constants.js","webpack:///./node_modules/ipfs-core-utils/src/files/normalise-input/utils.js","webpack:///./node_modules/ipfs-http-client/src/id.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/ipfs-http-client/src/get-endpoint-config.js","webpack:///./node_modules/ipfs-http-client/src/diag/net.js","webpack:///./node_modules/ipfs-http-client/src/ping.js","webpack:///./node_modules/@fortawesome/vue-fontawesome/index.es.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/ipld-dag-pb/src/dag-node/toDagLink.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/ipld-block/src/index.js","webpack:///./node_modules/varint/encode.js","webpack:///./node_modules/ipfs-http-client/src/config/index.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/brace/ext/emmet.js","webpack:///./node_modules/core-js/internals/microtask.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/ipld-dag-cbor/src/util.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/err-code/index.js","webpack:///./node_modules/ipfs-http-client/src/name/pubsub/state.js","webpack:///./node_modules/protons/src/compile/decode.js","webpack:///./node_modules/brace/theme/gob.js","webpack:///./node_modules/multiaddr/src/codec.js","webpack:///./node_modules/ipfs-http-client/src/files/mv.js","webpack:///./node_modules/ipfs-http-client/src/config/get.js","webpack:///./node_modules/it-tar/lte-reader.js","webpack:///./node_modules/ipld-dag-pb/src/dag-link/util.js","webpack:///./node_modules/ipfs-http-client/src/block/put.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/index.es.js","webpack:///./node_modules/ipfs-http-client/src/object/get.js","webpack:///./node_modules/ipfs-http-client/src/ls.js","webpack:///./node_modules/ipld-dag-pb/src/dag.proto.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/cids/src/index.js","webpack:///./node_modules/ipfs-http-client/src/pin/add.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/ipfs-http-client/src/object/patch/index.js","webpack:///./node_modules/blakejs/index.js","webpack:///./node_modules/ipfs-http-client/src/repo/index.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/ipfs-http-client/src/object/new.js","webpack:///./node_modules/multicodec/src/varint-table.js","webpack:///./node_modules/core-js/modules/es.object.assign.js","webpack:///./node_modules/core-js/internals/promise-resolve.js","webpack:///./node_modules/core-js/internals/set-global.js","webpack:///./node_modules/ipfs-core-utils/src/files/normalise-input/normalise-input.js","webpack:///./node_modules/ipfs-http-client/src/files/cp.js","webpack:///./node_modules/protons/src/compile/utils.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/protons/src/compile/index.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/ipfs-utils/src/http/error.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/ipfs-http-client/src/files/utils.js","webpack:///./node_modules/ipfs-http-client/src/swarm/addrs.js","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/it-tar/pack.js","webpack:///./node_modules/it-concat/index.js","webpack:///./node_modules/debug/src/common.js","webpack:///./node_modules/ipfs-http-client/src/pubsub/subscribe.js","webpack:///./node_modules/ipfs-http-client/src/cat.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/is-ip/index.js","webpack:///./node_modules/ipfs-http-client/src/dht/query.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/ipfs-http-client/src/pin/ls.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///./node_modules/core-js/internals/redefine-all.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/core-js/internals/perform.js","webpack:///./node_modules/core-js/modules/es.promise.js","webpack:///./node_modules/ipfs-http-client/src/dns.js","webpack:///./node_modules/ipfs-http-client/src/diag/sys.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./node_modules/ipfs-http-client/src/pubsub/publish.js","webpack:///./node_modules/class-is/index.js","webpack:///./node_modules/ipfs-http-client/src/name/publish.js","webpack:///./node_modules/signed-varint/index.js","webpack:///./node_modules/@fortawesome/fontawesome-svg-core/index.es.js","webpack:///./node_modules/ipfs-http-client/src/stats/index.js","webpack:///./node_modules/vue-notification/dist/index.js","webpack:///./node_modules/ipld-dag-pb/src/dag-link/index.js","webpack:///./node_modules/core-js/internals/new-promise-capability.js","webpack:///./node_modules/ipfs-http-client/src/bootstrap/rm.js","webpack:///./node_modules/ipld-dag-pb/src/serialize.js","webpack:///./node_modules/ipfs-http-client/src/files/index.js","webpack:///./node_modules/@fortawesome/free-brands-svg-icons/index.es.js","webpack:///./node_modules/ipfs-http-client/src/config/profiles/index.js","webpack:///./node_modules/protons/src/compile/encodings.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/ipfs-http-client/src/swarm/connect.js","webpack:///./node_modules/ipfs-http-client/src/config/profiles/apply.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/ipfs-http-client/src/bitswap/index.js","webpack:///./node_modules/varint/decode.js","webpack:///./node_modules/is-circular/index.js","webpack:///./node_modules/ipfs-http-client/src/name/pubsub/index.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/ipfs-http-client/src/object/patch/set-data.js","webpack:///./node_modules/core-js/internals/native-promise-constructor.js","webpack:///./node_modules/multiaddr-to-uri/index.js","webpack:///./node_modules/ipfs-http-client/src/dht/index.js"],"names":["wellKnownSymbol","TO_STRING_TAG","test","module","exports","String","Diagnose","Decoder","Encoder","Simple","Tagged","decodeAll","decodeFirst","diagnose","encode","decode","leveldb","buffer","name","config","net","sys","cmds","aFunction","fn","that","length","undefined","call","a","b","c","apply","arguments","publish","resolve","pubsub","Node","value","next","this","prototype","contains","cursor","ACE_NAMESPACE","global","window","acequirejs","define","deps","payload","modules","payloads","original","console","error","trace","_acequire","parentId","callback","lookup","Object","toString","params","i","l","dep","acequire","push","packagedModule","normalizeModule","moduleName","indexOf","chunks","split","charAt","base","slice","join","previous","replace","mod","id","uri","packaged","req","returnValue","exportAce","ns","root","ace","real","exec","RegExp","match","compliantExecNpcg","compliantLastIndexIncrement","x","lastIndex","getNativeFlags","regex","ignoreCase","multiline","extended","sticky","array","item","from","Array","str","r2","source","index","_xregexp","captureNames","Empty","Function","bind","target","TypeError","args","bound","result","concat","defineGetter","defineSetter","lookupGetter","lookupSetter","supportsAccessors","prototypeOfArray","prototypeOfObject","_toString","owns","hasOwnProperty","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","splice","makeArray","lengthBefore","array_splice","start","deleteCount","pos","removeCount","Math","max","removed","insert","add","remove","min","tailOldPos","tailNewPos","tailCount","lengthAfterRemove","isArray","obj","createEmpty","boxedString","splitString","forEach","fun","object","toObject","self","thisp","map","filter","every","some","reduce","reduceRight","sought","toInteger","lastIndexOf","abs","getPrototypeOf","__proto__","constructor","getOwnPropertyDescriptor","ERR_NON_OBJECT","property","descriptor","enumerable","configurable","getter","setter","get","set","getOwnPropertyNames","keys","create","empty","propertyIsEnumerable","isPrototypeOf","toLocaleString","valueOf","properties","Type","defineProperties","doesDefinePropertyWork","defineProperty","exception","definePropertyWorksOnObject","definePropertyWorksOnDom","document","createElement","definePropertyFallback","ERR_NON_OBJECT_DESCRIPTOR","ERR_NON_OBJECT_TARGET","ERR_ACCESSORS_NOT_SUPPORTED","seal","freeze","freezeObject","preventExtensions","isSealed","isFrozen","isExtensible","hasDontEnumBug","dontEnums","dontEnumsLength","key","ii","dontEnum","Date","now","getTime","ws","trim","trimBeginRegexp","trimEndRegexp","n","floor","o","XHTML_NS","getDocumentHead","doc","head","getElementsByTagName","documentElement","tag","createElementNS","hasCssClass","el","classes","className","addCssClass","removeCssClass","toggleCssClass","setCssClass","node","include","hasCssString","sheets","createStyleSheet","styleSheets","owningElement","importCssString","cssText","style","appendChild","createTextNode","importCssStylsheet","link","rel","href","getInnerWidth","element","parseInt","computedStyle","clientWidth","getInnerHeight","clientHeight","scrollbarWidth","inner","width","minWidth","height","display","outer","position","left","overflow","body","noScrollbar","offsetWidth","withScrollbar","removeChild","pageYOffset","getPageScrollTop","getPageScrollLeft","pageXOffset","scrollTop","scrollLeft","getComputedStyle","currentStyle","setInnerHtml","innerHtml","cloneNode","innerHTML","parentNode","replaceChild","setInnerText","innerText","textContent","getInnerText","getParentWindow","defaultView","parentWindow","inherits","ctor","superCtor","super_","writable","mixin","implement","proto","oop","Keys","ret","MODIFIER_KEYS","16","17","18","224","KEY_MODS","FUNCTION_KEYS","8","9","13","19","27","32","33","34","35","36","37","38","39","40","44","45","46","96","97","98","99","100","101","102","103","104","105","112","113","114","115","116","117","118","119","120","121","122","123","144","145","PRINTABLE_KEYS","48","49","50","51","52","53","54","55","56","57","59","61","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","107","109","110","186","187","188","189","190","191","192","219","220","221","222","111","106","toLowerCase","enter","escape","esc","del","mods","pow","keyCodeToString","keyCode","keyString","fromCharCode","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","navigator","os","platform","ua","userAgent","isWin","isIE","appName","parseFloat","isOldIE","isGecko","isMozilla","Controllers","controllers","product","isOldGecko","isOpera","opera","isWebKit","isChrome","isAIR","isIPad","isChromeOS","isIOS","MSStream","useragent","pressedKeys","ts","addListener","elem","type","addEventListener","attachEvent","wrapper","event","_wrapper","removeListener","removeEventListener","detachEvent","stopEvent","e","stopPropagation","preventDefault","cancelBubble","getButton","ctrlKey","altKey","shiftKey","button","1","2","4","capture","eventHandler","releaseCaptureHandler","onMouseUp","addTouchMoveListener","startx","starty","touches","touchObj","clientX","clientY","wheelX","wheelY","addMouseWheelListener","factor","wheelDeltaX","wheelDeltaY","wheelDelta","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","axis","HORIZONTAL_AXIS","detail","addMultiMouseDownListener","elements","timeouts","callbackName","startX","startY","timer","clicks","eventNames","3","onMousedown","isNewClick","clearTimeout","setTimeout","_clicks","onDblclick","getModifierHash","metaKey","normalizeCommandKeys","hashId","getModifierState","altGr","location","keyLocation","timeStamp","dt","defaultPrevented","resetPressedKeys","getModifierString","addCommandKeyListener","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","postMessageId","nextTick","win","messageName","listener","data","nextFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","last","stringReverse","string","reverse","stringRepeat","count","stringTrimLeft","stringTrimRight","copyObject","copy","copyArray","deepCopy","arrayToMap","arr","createMap","props","arrayRemove","escapeRegExp","escapeHTML","getMatchOffsets","regExp","matches","offset","deferredCall","fcn","deferred","timeout","cancel","schedule","isPending","delayedCall","defaultTimeout","_self","delay","dom","lang","KEYS","MODS","BROKEN_SETDATA","USE_IE_MIME_TYPE","TextInput","host","text","isTouchPad","setAttribute","opacity","insertBefore","firstChild","PLACEHOLDER","copied","cut","pasted","inComposition","tempStyle","isSelectionEmpty","isFocused","activeElement","onBlur","onFocus","resetSelection","focus","blur","syncSelection","syncValue","isEmpty","inputHandler","selectionStart","selectionEnd","setSelectionRange","resetValue","selection","isAllSelected","onSelect","selectAll","setInputHandler","cb","getInputHandler","afterContextMenu","sendText","onPaste","substr","execCommand","substring","onTextInput","onInput","handleClipboardData","forceIEMime","clipboardData","mime","setData","getData","doCopy","isCut","getCopyText","onCut","onCopy","select","onCommandKey","closeTimeout","onCompositionStart","$readOnly","canUndo","session","$undoManager","onCompositionUpdate","on","onCompositionEnd","markUndoGroup","clearSelection","val","lastValue","undo","r","getRange","range","setRange","needsOnInput","syncComposition","onContextMenuClose","renderer","$keepTextAreaAtCursor","$moveTextAreaToCursor","getElement","setReadOnly","readOnly","onContextMenu","_emit","domEvent","moveToMouse","bringToFront","rect","container","getBoundingClientRect","top","borderTopWidth","borderLeftWidth","maxTop","bottom","move","textInput","scroller","typingResetTimeout","typing","detectArrowKeys","up","home","option","right","end","down","shift","TextInputIOS","DRAG_OFFSET","SCROLL_COOLDOWN_T","DefaultHandlers","mouseHandler","$clickSelection","editor","setDefaultHandler","onMouseDown","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","onTouchMove","selectByLines","extendSelectionBy","selectByWords","calcDistance","ax","ay","bx","by","sqrt","calcRangeOrientation","row","cmp","column","anchor","ev","inSelection","getDocumentPosition","mousedownEvent","selectionRange","getSelectionRange","selectionEmpty","$blockScrolling","moveToPosition","time","$focusTimout","inMultiSelectMode","captureMouse","startSelect","setState","waitForClickSelection","screenToTextCoordinates","y","getShiftKey","selectToPosition","setCapture","setStyle","comparePoint","orientedRange","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","unsetStyle","releaseCapture","focusWait","distance","getBracketRange","getWordRange","isMultiLine","getLineRange","getAccelKey","$lastScroll","t","vx","vy","allowed","prevScroll","direction","canScroll","isScrollableBy","speed","isSlower","scrollBy","stop","Tooltip","isOpen","$element","$parentNode","$init","setText","setHtml","html","setPosition","setClassName","show","hide","getHeight","offsetHeight","getWidth","destroy","GutterHandler","tooltipTimeout","mouseEvent","tooltipAnnotation","gutter","$gutterLayer","tooltip","GutterTooltip","showTooltip","annotation","$annotations","hideTooltip","maxRow","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","_signal","$tooltipFollowsMouse","moveTooltip","gutterElement","gutterRegion","getRegion","selectTo","srcElement","isMousePressed","$gutter","windowWidth","innerWidth","windowHeight","innerHeight","MouseEvent","$inSelection","propagationStopped","AUTOSCROLL_DELAY","SCROLL_CURSOR_DELAY","SCROLL_CURSOR_HYSTERESIS","DragdropHandler","blankImage","src","dragSelectionMarker","timerId","dragCursor","dragOperation","isInternal","autoScrollStartTime","cursorMovedTime","cursorPointOnCaretMoved","mouseTarget","counter","prevCursor","vMovement","hMovement","moveCursorToPosition","autoScroll","lineHeight","layerConfig","characterWidth","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","onDragInterval","addDragMarker","toOrientedRange","addMarker","getSelectionStyle","$cursorLayer","setBlinking","clearInterval","setInterval","onMouseMove","clearDragMarker","removeMarker","fromOrientedRange","getReadOnly","onDragStart","cancelDrag","draggable","dataTransfer","effectAllowed","setDragImage","clearData","getTextRange","onDragEnd","dropEffect","setCursorStyle","onDragEnter","canAccept","getDropEffect","onDragOver","onMouseMoveTimer","onDragLeave","onDrop","moveText","dropData","types","copyAllowed","moveAllowed","copyModifierState","dragWait","interval","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","state","dragDrop","$dragEnabled","clickCount","eventTarget","unselectable","url","xhr","XMLHttpRequest","open","onreadystatechange","readyState","responseText","send","loadScript","path","s","onload","_","isAbort","qualifyURL","EventEmitter","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","listeners","defaultHandler","once","newCallback","handlers","_disabled_","old","disabled","removeDefaultHandler","pop","capturing","off","removeAllListeners","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","$options","getOption","opt","warn","forwardTo","handlesSet","message","reportError","msg","Error","AppConfig","$defaultOptions","defineOptions","options","initialValue","resetOptions","setDefaultValue","opts","setDefaultValues","optionHash","workerPath","modePath","themePath","basePath","suffix","$moduleUrls","init","scriptOptions","scriptUrl","currentScript","_currentScript","currentDocument","ownerDocument","scripts","script","getAttribute","attributes","j","attr","deHyphenate","m","m1","toUpperCase","all","moduleUrl","component","parts","sep","re","setModuleUrl","subst","$loading","loadModule","onLoad","moduleType","afterLoad","DefaultGutterHandler","MouseHandler","focusEditor","windowBlurred","hasFocus","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","Boolean","gutterEl","$dragDelay","character","insideStart","mousemove","$scrollSpeed","mouseMoveHandler","which","releaseMouse","$mouseMoved","onCaptureEnd","onCaptureInterval","$onCaptureMouseMove","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimout","tooltipFollowsMouse","FoldHandler","fold","getFoldAt","removeFold","expandFold","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","getLine","addFold","keyUtil","KeyBinding","$editor","$data","$handlers","commands","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","h","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","command","passEvent","dir","hiLevel","lastArabic","hasUBAT_B","hasUBAT_S","impTab_LTR","impTab_RTL","LTR","RTL","L","R","EN","AN","ON","B","S","AL","WS","CS","ES","ET","NSM","LRE","RLE","PDF","LRO","RLO","BN","UnicodeTBL00","UnicodeTBL20","_computeLevels","chars","levels","len","charTypes","impTab","prevState","newClass","newLevel","newState","action","cond","condPos","ix","_getCharacterType","_getCharClass","_invertLevel","lev","_array","lo","hi","tmp","wType","nType","cType","rtlCandidate","ch","uc","charCodeAt","ON_R","R_H","DOT","doBidiReorder","textCharTypes","isRtl","logicalFromVisual","bidiLevels","hasBidiCharacters","getVisualFromLogicalIdx","logIdx","rowMap","bidiUtil","bidiRE","BidiHandler","bidiMap","currentRow","charWidths","EOL","showInvisibles","isRtlDir","line","wrapIndent","isLastRow","EOF","seenBidi","isBidiRow","docRow","splitIndex","updateRowLine","updateBidiMap","onChange","delta","lines","getDocumentRow","rowCache","$screenRowCache","$getRowCacheIndex","$docRowCache","getSplitIndex","currentIndex","prevIndex","$useWrapMode","splits","$wrapData","indent","size","isFullWidth","getScreenTabSize","endOfLine","markAsDirty","updateCharacterWidths","fontMetrics","$characterSize","bidiCharWidth","$measureCharWidth","getShowInvisibles","setShowInvisibles","setEolChar","eolChar","setTextDir","getPosLeft","col","visualIdx","getSelections","startCol","endCol","level","selections","selColMin","selColMax","isSelected","isSelectedPrev","visIdx","offsetToCol","posX","logicalIdx","charWidth","comparePoints","p1","p2","Range","startRow","startColumn","endRow","endColumn","isEqual","compare","compareRange","p","containsRange","intersects","isEnd","isStart","setStart","setEnd","inside","insideEnd","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","extend","clone","collapseRows","toScreenRange","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","Selection","getDocument","lead","selectionLead","createAnchor","selectionAnchor","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","getCursor","getPosition","getSelectionAnchor","getSelectionLead","shiftSelection","columns","moveCursorTo","isBackwards","$moveSelection","mover","moveTo","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectWord","selectAWord","getAWordRange","excludeLastChar","rowEnd","rowStart","foldLine","getFoldLine","selectLine","moveCursorBy","wouldMoveIntoSoftTab","tabSize","isTabStop","getTabSize","getNavigateWithinSoftTabs","firstColumnPosition","screenToDocumentPosition","beforeCursor","getDisplayLine","leadingSpace","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","search","moveCursorLongWordRight","rightOfCursor","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","offsetX","screenPos","$bidiHandler","round","docPos","lineWidgets","keepDesiredColumn","moveCursorToScreen","desiredColumn","getRangeOfMovements","func","toJSON","rangeCount","ranges","r1","fromJSON","rangeList","toSingleRange","addRange","MAX_TOKEN_COUNT","Tokenizer","rules","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","flag","splitterRurles","rule","caseInsensitive","adjustedregex","matchcount","token","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","digit","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","values","tokens","stack","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","consumeLineEnd","merge","unshift","TextHighlightRules","$rules","addRules","prefix","nextState","getRules","embedRules","HighlightRules","escapeRules","append","$embeds","getEmbeds","pushState","popState","normalizeRules","processState","processed","toInsert","stateName","includeName","noEscape","keywordMap","createKeywordMapper","splitChar","keywords","list","$keywordList","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","mode","getBehaviours","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","rowCount","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","getCurrentTokenPosition","getCurrentTokenRange","context","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","defaultQuotes","initContext","multiSelect","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","selected","opening","closing","rowDiff","CstyleBehaviour","getCursorPosition","getWrapBehavioursEnabled","isSaneInsertion","braces","recordAutoInsert","recordMaybeInsert","rightChar","matching","$findOpeningBracket","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","openBracePos","findMatchingBracket","next_indent","$getIndent","getTabString","quotes","$mode","$quotes","lineCommentStart","quote","leftChar","rightToken","pair","stringBefore","stringAfter","wordRe","isWordBefore","isWordAfter","iterator","$matchTokenType","iterator2","bracket","addUnicodePackage","pack","codePoint","packages","Ll","Lu","Lt","Lm","Lo","M","Mn","Mc","Me","N","Nd","Nl","No","P","Pd","Ps","Pe","Pi","Pf","Pc","Po","Sm","Sc","Sk","So","Z","Zs","Zl","Zp","C","Cc","Cf","Co","Cs","Cn","unicode","Mode","$defaultBehaviour","getTokenizer","$tokenizer","$highlightRules","$highlightRuleConfig","blockComment","toggleCommentLines","ignoreBlankLines","shouldRemove","minIndent","Infinity","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","removeInLine","commentWithSpace","comment","insertInLine","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","iter","minEmptyLength","toggleBlockComment","colDiff","initialRange","startRange","endRange","getNextLineIndent","tab","checkOutdent","input","autoOutdent","createWorker","createModeDelegates","$modes","delegations","scope","functionName","$delegator","method","transformAction","param","$behaviour","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","word","score","meta","$id","applyDelta","docLines","doNotValidate","Anchor","$onChange","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","$getTransformedPoint","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$clipPositionToDocument","$insertRight","noClip","Document","textOrLines","$lines","insertMergedLines","setValue","getValue","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","clippedPos","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","MAX","to","chunk","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","first","scheduleStart","$updateOnChange","getState","SearchHighlight","clazz","setRegexp","MAX_RANGES","cache","update","markerLayer","drawSingleLineMarker","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","sort","containsRow","walk","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","log","foldBefore","newFoldLine","foldLineNext","idxToPosition","idx","lastFoldEndColumn","RangeList","pointIndex","excludeEdges","startIndex","endIndex","addList","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","lineDif","Fold","subFolds","consumePoint","consumeRange","restorePoint","restoreRange","subFold","collapseChildren","addSubFold","afterStart","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","lastFold","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","getCommentFoldRange","depth","getFoldWidget","getFoldWidgetRange","$foldStyles","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","children","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","BracketMatch","chr","charBeforeCursor","$findClosingBracket","$brackets","typeRe","openBracket","valueIndex","closingBracket","valueLength","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","$uid","onChangeFold","setMode","bgTokenizer","resetCaches","$resetRowCache","cacheArray","low","mid","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$fromUndo","ignore","$deltasDoc","$deltasFold","$informUndoManager","$deltas","setUndoManager","getUndoManager","reset","getSelection","undoManager","$syncInformUndoManager","group","execute","mergeUndoDeltas","$defaultUndoManager","redo","setUseSoftTabs","$useSoftTabs","$indentWithTabs","setTabSize","$tabSize","setNavigateWithinSoftTabs","navigateWithinSoftTabs","$navigateWithinSoftTabs","$overwrite","setOverwrite","overwrite","getOverwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","setBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","marker","addDynamicMarker","markerId","markers","getMarkers","highlight","$searchHighlight","highlightLines","setAnnotations","annotations","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$modeId","$onChangeMode","$isPlaceholder","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","getMode","$scrollTop","setScrollTop","isNaN","getScrollTop","$scrollLeft","setScrollLeft","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","w","lineWidgetWidth","force","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","undoChanges","dontSelect","lastUndoRange","$getUndoSelection","foldDelta","redoChanges","setUndoSelect","enable","isUndo","fromRange","toPosition","toRange","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","$moveLines","diff","$clipRowToDocument","Number","MAX_VALUE","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","$wrapLimitRange","setUseWrapMode","useWrapMode","getUseWrapMode","setWrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","limit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","CHAR","CHAR_EXT","PUNCTUATION","SPACE","TAB","TAB_SPACE","displayLength","lastSplit","lastDocSplit","isCode","$wrapAsCode","indentedSoftWrap","$indentedSoftWrap","maxIndent","getWrapIndent","indentation","addSplit","displayed","minSplit","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","doCache","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","wrap","$wrap","firstLineNumber","useSoftTabs","Search","addWordBoundary","needle","wordBoundary","find","$matchIterator","sr","sc","er","ec","skipCurrent","findAll","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","$disableFakeMultiline","wholeWord","modifier","caseSensitive","$assembleMultilineRegExp","backwards","forEachInLine","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","bindKey","isDefault","addCommand","removeCommand","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","parseKeys","_addCommandToBinding","other","otherPos","removeCommands","bindKeys","keyList","findKeyCommand","$keyChain","CommandManager","byName","isAvailable","toggleRecording","$inReplay","recording","macro","$addCommandToMacro","oldMacro","replay","trimMacro","mac","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","prompt","gotoLine","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","firstLineEndCol","selectedText","selectedCount","insertLine","curLine","newRanges","exitMultiSelectMode","defaultCommands","Editor","getContainerElement","getTextAreaContainer","textarea","$mouseHandler","keyBinding","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","startOperation","endOperation","$opResetTimer","curOp","docChanged","selectionChanged","prevOp","commadEvent","previousCommand","scrollSelectionIntoView","animateScrolling","$mergeableCommands","$mergeUndoDeltas","prev","mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","handler","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","updateFull","oldEditor","getSession","cursorPos","resize","onResize","setTheme","theme","getTheme","getFontSize","setFontSize","$highlightBrackets","$bracketHighlight","$highlightPending","getMatching","$highlightTags","$highlightTagPending","$tagHighlight","prevToken","sbm","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","updateLines","$updateHighlightActiveLine","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","startOuter","endOuter","lineCols","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","inVirtualSelectionMode","getBehavioursEnabled","transform","$mergeNextCommand","d","lineState","shouldOutdent","lineIndent","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","setDisplayIndentGuides","getDisplayIndentGuides","setShowPrintMargin","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","swap","originalRange","$getSelectedRows","getNumberAt","_numberRx","number","amount","charRange","isFinite","nr","fp","decimals","nnr","toFixed","replaceRange","sel","endPoint","moved","totalDiff","rangeIndex","subRows","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","isRowVisible","isRowFullyVisible","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","scrollToLine","center","animate","alignCursor","getCursorPositionScreen","expand","matchType","bracketType","found","brackets","lineNumber","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","preventScroll","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","searchBox","$pixelPos","$resetCursorStyle","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","behavioursEnabled","wrapBehavioursEnabled","autoScrollEditorIntoView","keybindingId","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","showLineNumbers","showGutter","displayIndentGuides","fontSize","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","foldStyle","UndoManager","$serializeDelta","$deserializeDelta","cloneDeltaSetsObj","deltaSets_old","fnGetModifiedDelta","deltaSets_new","deltaSet_old","deltaSet_new","delta_old","deltaSets","$doc","hasUndo","dirtyCounter","$undoStack","$redoStack","NaN","undoSelectionRange","redoSelectionRange","$deserializeDeltas","hasRedo","markClean","isClean","$serializeDeltas","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","$cells","rowInfo","annoText","gutterOffset","breakpoints","decorations","$firstLineNumber","lastLineNumber","gutterRenderer","$renderer","cell","textNode","foldWidget","getText","minHeight","$fixedWidth","padding","$padding","$computePadding","ceil","$showLineNumbers","setShowLineNumbers","getShowLineNumbers","paddingLeft","paddingRight","Marker","getBorderClass","tl","tr","br","bl","setPadding","setMarkers","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","drawBidiSingleLineMarker","firstRowScreen","stringBuilder","extraStyle","curr","clazzModified","lineRange","range1","radiusClass","extraLength","Text","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","getLineHeight","$fontMetrics","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","$tabStrings","tabStr","$indentGuideRe","spaceClass","tabClass","spaceContent","tabContent","scrollLines","lineElements","childNodes","lineElementsIdx","lineElement","$renderLine","$useLineGroups","oldConfig","lastChild","fragment","$renderLinesFragment","createDocumentFragment","$textToken","$renderToken","replaceReg","replaceFunc","tabIdx","idx4","classToUse","space","output","renderIndentGuide","cols","$renderWrappedLine","onlyContents","splitChars","$renderSimpleLine","$getFoldLineTokens","renderTokens","addTokens","$measureNode","isIE8","Cursor","isVisible","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateVisibility","$updateOpacity","visibility","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","blink","getPixelPosition","onScreen","cursorLeft","cursorTop","$selectionMarkers","cursorIndex","pixelPos","drawCursor","$setOverwrite","MAX_SCROLL_H","ScrollBar","parent","classSuffix","setVisible","skipEvent","onScroll","coeff","VScrollBar","scrollHeight","$scrollbarWidth","$minWidth","setHeight","setInnerHeight","setScrollHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBarV","ScrollBarH","RenderLoop","onRender","pending","changes","change","CHAR_COUNT","FontMetrics","$setMeasureNodeStyles","$main","$testFractionalRect","isRoot","whiteSpace","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","setPolling","GutterLayer","MarkerLayer","TextLayer","CursorLayer","editorCss","VirtualRenderer","content","onGutterResize","$markerBack","textLayer","$textLayer","canvas","$markerFront","$horizScroll","$vScroll","scrollBar","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","maxHeight","v","$loop","$renderChanges","CHANGE_FULL","CHANGE_CURSOR","CHANGE_MARKER","CHANGE_GUTTER","CHANGE_SCROLL","CHANGE_LINES","CHANGE_TEXT","CHANGE_SIZE","CHANGE_MARKER_BACK","CHANGE_MARKER_FRONT","CHANGE_H_SCROLL","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","updateFontSize","$changes","$updateSizeAsync","resizing","scrollWidth","$updateCachedSize","$extraHeight","oldSize","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$updateGutterLineHighlight","$gutterLineHighlight","$printMarginEl","containerEl","posTop","posLeft","$composition","setScrollMargin","sm","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","unfreeze","st","marginTop","marginLeft","$highlightGutterLine","$updateLines","$autosize","desiredHeight","$maxPixelHeight","$gutterWidth","hideScrollbars","screenLines","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","topMargin","bottomMargin","alignment","STEPS","$calcSteps","fromValue","toValue","steps","x_min","dx","initialScroll","oldSteps","$timer","scrollTo","canvasPos","textToScreenCoordinates","pageX","pageY","keepTextAreaAtCursor","$themeId","cssClass","$theme","isDark","setMouseCursor","maxPixelHeight","$workerBlob","workerUrl","Blob","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","blobBuilder","getBlob","blob","URL","webkitURL","blobURL","createObjectURL","Worker","WorkerClient","topLevelNamespaces","classname","importScripts","$sendDeltaQueue","changeListener","onMessage","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","callbackId","callbacks","onmessage","err","deltaQueue","cmd","emit","ex","attachToDocument","q","UIWorkerClient","messageBuffer","main","emitSync","sender","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","onUpdate","$others","undoStack","$undostack","$undoStackDepth","setup","selectionBefore","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","updateMarkers","updateMarker","undosRequired","isSamePoint","alt","ctrl","accel","selectionMode","isMultiSelect","mouseX","mouseY","onMouseSelection","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","blockSelect","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","onMouseSelectionEnd","onSelectionInterval","selectMoreLines","selectMore","splitIntoLines","alignCursors","multiSelectCommands","getSelectionMarkers","$blockChangeEvents","$onAddRange","$onRemoveRange","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","startOffsetX","endOffsetX","yBackwards","docEnd","MultiSelect","$multiselectOnSessionChange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","addAltCursorListeners","altCursor","altDown","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","forEachSelection","keepOrder","$byLines","reg","cmdResult","anim","buf","nl","additive","skip","screenLead","toRemove","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","startW","textW","endW","isLeftAligned","isRightAligned","alignLeft","alignRight","unAlign","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","hidden","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","changedWidgets","fixedWidth","coverLine","fullWidth","binarySearch","comparator","findAnnotations","matched","oldWidget","gutterAnno","arrow","onmousedown","Renderer","edit","_id","getElementById","env","tagName","oldNode","createEditSession","version","Base","baseX","base16","base32","base64","constants","names","tupple","codes","Buffer","toIterable","configure","toUrlSearchParams","api","async","res","post","signal","searchParams","arg","headers","DESCRIPTORS","propertyIsEnumerableModule","createPropertyDescriptor","toIndexedObject","toPrimitive","has","IE8_DOM_DEFINE","nativeGetOwnPropertyDescriptor","f","O","json","multiaddr","Peers","peer","info","addr","Addr","Peer","rawPeerInfo","Muxer","muxer","Latency","latency","Streams","streams","Direction","parse","stringify","fromNumberTo32BitBuf","bytes","Multiaddr","toUri","isBrowser","isWebWorker","parseDuration","default","HTTP","isMultiaddr","normalizeInput","apiPath","pathname","protocol","hostname","port","errorHandler","response","startsWith","Message","HTTPError","includes","TimeoutError","KEBAB_REGEX","kebabCase","parseTimeout","Client","super","handleError","transformSearchParams","out","URLSearchParams","put","delete","fetch","resource","toCamel","ndjson","fails","onfield","repeated","required","oneof","onoption","enums","onenum","messages","oneofs","fields","onenumvalue","onoptionMap","k","onservices","methods","onrpc","rpc","def","client_streaming","input_type","server_streaming","output_type","lvl","schema","syntax","package","services","CID","cid","isBuffer","arrayBuffer","AbortController","Block","Provider","Responses","ID","Addrs","addrs","errcode","multihash","crypto","Multihashing","alg","digest","hash","createHash","coerceCode","functions","0","identity","sha1","sha2256","sha2512","sha3512","sha3384","sha3256","sha3224","shake128","shake256","keccak224","keccak256","keccak384","keccak512","murmur3128","murmur332","dblSha2256","addBlake","validate","newHash","withIs","DAGLink","Name","Tsize","Hash","_nameBuf","toBaseEncodedString","_json","assign","symbolName","BufferList","ZERO_OFFSET","USTAR_MAGIC","GNU_MAGIC","GNU_VER","MAGIC_OFFSET","VERSION_OFFSET","clamp","defaultValue","toType","block","num","cksum","sum","parse256","positive","zero","tuple","byte","decodeOct","shallowSlice","decodeStr","encoding","decodeLongPath","isBufferList","decodePax","keyIndex","filenameEncoding","typeflag","uid","gid","mtime","linkname","uname","gname","devmajor","devminor","sortLinks","serializeDAGNode","toDAGLink","addLink","rmLink","DAGNode","links","serializedSize","alloc","isDAGLink","util","createDagLinkFromB58EncodedHash","Data","Links","_serializedSize","_size","_invalidateCached","serialize","errCode","itPeekable","browserStreamToIt","isBytes","isBlob","toBlob","getReader","Symbol","asyncIterator","peekable","done","peek","itToBlob","isInteger","stream","isIp","isIP","isV4","v4","isV6","v6","toBuffer","ip","buff","sections","v4Buffer","isv4","argv","readUInt16BE","pem","password","cids","responses","blake","minB","minS","blake2b","blake2bInit","blake2bUpdate","blake2bFinal","blake2s","blake2sInit","blake2sUpdate","blake2sFinal","makeB2Hash","hf","ctx","table","fmtShort","ms","msAbs","fmtLong","plural","isPlural","long","JSON","classof","regexpExec","ADD64AA","o0","o1","ADD64AC","b0","b1","B2B_GET32","B2B_G","iy","x0","x1","y0","y1","xor0","xor1","BLAKE2B_IV32","Uint32Array","SIGMA8","SIGMA82","Uint8Array","blake2bCompress","outlen","keylen","blake2bHex","toHex","modeToString","mtimeToObject","hashAlg","secs","mtimeNsecs","nsecs","urlSearchParams","Strings","URLWithLegacySupport","format","defaultBase","relative","tableByCode","code","entries","it","Constructor","alphabet","bitsPerChar","bits","written","SyntaxError","pad","mask","getBuiltIn","varint","bufferToNumber","numberToBuffer","hexString","varintBufferEncode","varintBufferDecode","varintEncode","INPUT_ERROR","FINALIZE_ERROR","WINDOW","JS_SHA3_NO_WINDOW","WEB_WORKER","NODE_JS","JS_SHA3_NO_NODE_JS","process","versions","COMMON_JS","JS_SHA3_NO_COMMON_JS","AMD","ARRAY_BUFFER","JS_SHA3_NO_ARRAY_BUFFER","ArrayBuffer","HEX_CHARS","SHAKE_PADDING","CSHAKE_PADDING","KECCAK_PADDING","PADDING","SHIFT","RC","BITS","SHAKE_BITS","OUTPUT_TYPES","CSHAKE_BYTEPAD","JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW","isView","createOutputMethod","outputType","Keccak","createShakeOutputMethod","outputBits","createCshakeOutputMethod","createKmacOutputMethod","createOutputMethods","createMethod","createShakeMethod","createCshakeMethod","bytepad","createKmacMethod","Kmac","algorithms","methodNames","algorithm","methodName","newMethodName","blocks","finalized","blockCount","byteCount","outputBlocks","extraBytes","notString","lastByteIndex","encodeString","strs","paddingBytes","zeros","finalize","hex","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","b2","b3","b4","b5","b6","b7","b8","b9","b10","b11","b12","b13","b14","b15","b16","b17","b18","b19","b20","b21","b22","b23","b24","b25","b26","b27","b28","b29","b30","b31","b32","b33","b34","b35","b36","b37","b38","b39","b40","b41","b42","b43","b44","b45","b46","b47","b48","b49","FinalPeer","peerId","char","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","multipartRequest","anySignal","tmpObj","enc","isDAGNode","Size","controller","asyncGeneratorStep","gen","reject","_next","_throw","Promise","then","_asyncToGenerator","auth","username","query","origin","revokeObjectURL","userPass","byteLength","toByteArray","fromByteArray","revLookup","Arr","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","curByte","tripletToBase64","encodeChunk","uint8","maxChunkLength","len2","codec","protocols","multibase","inspect","for","fromBuffer","fromString","protos","protoCodes","bufferToString","toOptions","parsed","family","transport","sizeForAddr","protoNames","tuples","bufferToTuples","stringTuples","tuplesToStringTuples","encapsulate","decapsulate","decapsulateCode","tuplesToBuffer","getPeerId","b58str","ipfs","getPath","equals","nodeAddress","address","fromNodeAddress","isThinWaistAddress","isName","resolvable","anObject","isArrayIteratorMethod","toLength","getIteratorMethod","callWithSafeIterationClosing","Result","stopped","iterate","iterable","AS_ENTRIES","IS_ITERATOR","iterFn","step","boundFunction","_pushTag","pushAny","converters","msCrypto","subtle","factory","multihashing","linkSort","nameAsBuffer","inplace","integer","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","FORCED","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","sham","internalObjectKeys","enumBugKeys","hiddenKeys","library","_validBytes","_x86Multiply","_x86Rotl","_x86Fmix","_x64Add","_x64Multiply","_x64Rotl","_x64LeftShift","_x64Xor","_x64Fmix","x86","hash32","seed","inputValidation","remainder","h1","k1","hash128","h2","h3","h4","k2","k3","k4","x64","murmurHash3","readable","reader","read","releaseLock","padStart","encodingLength","definePropertyModule","SPECIES","CONSTRUCTOR_NAME","AbortError","request","overrideMimeType","setRequestHeader","onabort","abort","onDownloadProgress","onprogress","onUploadProgress","upload","handleEvent","Response","ResponseWithURL","responseURL","status","statusText","parseHeaders","getAllResponseHeaders","onerror","ontimeout","Request","Headers","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","shadowRoot","_injectStyles","originalRender","existing","beforeCreate","isElectron","IS_ENV_WITH_DOM","nodeType","IS_ELECTRON","IS_BROWSER","IS_ELECTRON_MAIN","IS_ELECTRON_RENDERER","IS_NODE","release","IS_WEBWORKER","WorkerGlobalScope","IS_TEST","isTest","isElectronMain","isElectronRenderer","isNode","isEnvWithDom","emptyObject","isUndef","isDef","isTrue","isFalse","isPrimitive","isObject","isPlainObject","isRegExp","isValidArrayIndex","isPromise","catch","toNumber","makeMap","expectsLowerCase","isReservedAttribute","hasOwn","cached","hit","camelizeRE","camelize","capitalize","hyphenateRE","hyphenate","polyfillBind","boundFn","_length","nativeBind","toArray","_from","noop","no","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","keysA","keysB","looseIndexOf","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","optionMergeStrategies","silent","productionTip","devtools","performance","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","unicodeRegExp","isReserved","bailRE","parsePath","segments","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","weexPlatform","UA","isIE9","isEdge","isFF","nativeWatch","watch","supportsPassive","isServerRendering","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","Reflect","ownKeys","Set","clear","Dep","subs","addSub","sub","removeSub","depend","addDep","notify","targetStack","pushTarget","popTarget","VNode","elm","componentOptions","asyncFactory","fnContext","fnOptions","fnScopeId","componentInstance","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","methodsToPatch","inserted","ob","__ob__","observeArray","arrayKeys","shouldObserve","toggleObserving","Observer","vmCount","protoAugment","copyAugment","observe","asRootData","_isVue","defineReactive$$1","customSetter","shallow","childOb","dependArray","newVal","items","strats","mergeData","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","dedupeHooks","hooks","mergeAssets","key$1","inject","computed","provide","defaultStrat","normalizeProps","normalizeInject","normalized","normalizeDirectives","dirs","directives","def$$1","mergeOptions","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","prop","absent","booleanIndex","getTypeIndex","stringIndex","getPropDefaultValue","prevShouldObserve","_props","getType","isSameType","expectedTypes","cur","$parent","errorCaptured","globalHandleError","invokeWithErrorHandling","_handled","logError","timerFunc","isUsingMicroTask","flushCallbacks","copies","MutationObserver","setImmediate","observer","characterData","_resolve","seenObjects","traverse","_traverse","seen","isA","depId","normalizeEvent","passive","once$$1","createFnInvoker","fns","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","extractPropsFromVNodeData","attrs","checkProp","preserve","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","_isVList","initProvide","_provided","initInjections","resolveInject","provideKey","provideDefault","resolveSlots","slots","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","renderSlot","fallback","bindObject","nodes","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","tree","_renderProxy","markStatic","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","symbol","installRenderHelpers","_o","_n","_s","_l","_t","_q","_i","_m","_f","_k","_b","_v","_e","_u","_g","_d","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","needNormalization","injections","scopedSlots","_c","createFunctionalComponent","mergeProps","renderContext","cloneAndMarkFunctionalResult","vnodes","componentVNodeHooks","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","updateChildComponent","_isMounted","callHook","queueActivatedComponent","activateChildComponent","deactivateChildComponent","$destroy","hooksToMerge","createComponent","baseCtor","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","transformModel","nativeOn","abstract","installComponentHooks","_isComponent","_parentVnode","inlineTemplate","toMerge","_merged","mergeHook$1","f1","f2","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","_createElement","is","pre","applyNS","registerDeepBindings","class","initRender","_vnode","parentVnode","_renderChildren","parentData","_parentListeners","currentRenderingInstance","renderMixin","Vue","$nextTick","_render","ref","ensureCtor","comp","__esModule","toStringTag","errorComp","resolved","owner","owners","loading","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","$forceUpdate","reason","getFirstComponentChild","initEvents","_events","_hasHookEvent","updateComponentListeners","remove$1","$off","_target","onceHandler","oldListeners","eventsMixin","hookRE","$once","i$1","cbs","$emit","setActiveInstance","prevActiveInstance","initLifecycle","$children","$refs","_watcher","_inactive","_directInactive","_isBeingDestroyed","lifecycleMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","teardown","_watchers","_data","mountComponent","updateComponent","Watcher","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","$attrs","$listeners","propKeys","_propKeys","isInInactiveTree","direct","queue","activatedChildren","waiting","flushing","resetSchedulerState","currentFlushTimestamp","getNow","createEvent","flushSchedulerQueue","watcher","run","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","queueWatcher","uid$2","expOrFn","isRenderWatcher","deep","user","lazy","active","dirty","newDeps","depIds","newDepIds","expression","cleanupDeps","oldValue","evaluate","sharedPropertyDefinition","sourceKey","initState","initProps","initMethods","initData","initComputed","initWatch","propsOptions","computedWatcherOptions","watchers","_computedWatchers","isSSR","userDef","defineComputed","shouldCache","createComputedGetter","createGetterInvoker","createWatcher","$watch","stateMixin","dataDef","propsDef","$set","$delete","immediate","uid$3","initMixin","_init","_uid","initInternalComponent","vnodeComponentOptions","_componentTag","superOptions","cachedSuperOptions","modifiedOptions","resolveModifiedOptions","extendOptions","components","modified","latest","sealed","sealedOptions","initUse","use","plugin","installedPlugins","_installedPlugins","install","initMixin$1","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","initProps$1","initComputed$1","Comp","initAssetRegisters","definition","getComponentName","pattern","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","current","cached$$1","patternTypes","KeepAlive","exclude","created","destroyed","mounted","ref$1","builtInComponents","initGlobalAPI","configDef","defineReactive","observable","acceptValue","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","childNode","mergeClassData","renderClass","staticClass","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","HTMLUnknownElement","HTMLElement","isTextInputType","querySelector","createElement$1","multiple","namespace","createComment","newNode","referenceNode","nextSibling","setTextContent","setStyleScope","nodeOps","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","sameInputType","typeA","typeB","createKeyToOldIdx","beginIdx","endIdx","createPatchFunction","backend","emptyNodeAt","createRmCb","childElm","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","setScope","createChildren","invokeCreateHooks","isReactivated","initComponent","reactivateComponent","pendingInsert","isPatchable","innerNode","transition","activate","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","removeAndInvokeRemoveHook","rm","updateChildren","oldCh","newCh","removeOnly","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","patchVnode","findIdxInOld","hydrate","postpatch","invokeInsertHook","initial","isRenderedModule","inVPre","hasChildNodes","childrenMatch","fullInvoke","isInitialPatch","isRealElement","hasAttribute","removeAttribute","oldElm","_leaveCb","patchable","i$2","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","baseSetAttr","setAttributeNS","__ieph","blocker","stopImmediatePropagation","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","target$1","klass","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","normalizeEvents","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","currentTarget","updateDOMListeners","svgContainer","events","updateDOMProps","oldProps","_value","strCur","shouldUpdateValue","checkVal","composing","isNotInFocusAndDirty","isDirtyWithModifiers","notInFocus","_vModifiers","parseStyleText","listDelimiter","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","getStyle","checkChild","styleData","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","whitespaceRE","addClass","classList","removeClass","tar","resolveTransition","css","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","styles","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","toggleDisplay","cancelled","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","_pending","isValidDuration","leave","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","platformModules","patch","vmodel","trigger","directive","_vOptions","setSelected","prevOptions","curOptions","needReset","hasNoMatchingOption","actuallySetSelected","isMultiple","selectedIndex","initEvent","dispatchEvent","locateNode","transition$$1","originalDisplay","__vOriginalDisplay","unbind","platformDirectives","transitionProps","getRealChild","compOptions","extractTransitionData","rawChild","hasParentTransition","isSameChild","oldChild","isNotTextNode","isVShowDirective","Transition","_leaving","oldRawChild","delayedLeave","moveClass","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","c$1","updated","hasMove","callPendingCbs","recordPosition","applyTranslation","_reflow","WebkitTransform","transitionDuration","_moveCb","propertyName","_hasMove","oldPos","dy","platformComponents","BigNumber","stats","totalIn","TotalIn","totalOut","TotalOut","rateIn","RateIn","rateOut","RateOut","includeBoundaries","v6seg","exact","binaryBlob","deserialize","remainderPath","isCID","defer","channel","IS_IOS","clearImmediate","MessageChannel","Dispatch","ONREADYSTATECHANGE","runner","port2","port1","v8","Bignumber","utils","MT","NUMBYTES","SHIFT32","SYMS","TAG","HALF","SIMPLE_FLOAT","TWO","FLOAT","FOUR","DOUBLE","EIGHT","TRUE","SIMPLE","FALSE","UNDEFINED","NULL","MAXINT_BN","BUF_NAN","BUF_INF_NEG","BUF_INF_POS","streaming","onData","semanticTypes","_pushUrl","_pushBigNumber","addTypes","genTypes","addSemanticType","_reset","typ","resultMethod","resultLength","pushWrite","half","allocUnsafe","writeHalf","parseHalf","_pushUInt8","writeFloatBE","readFloatBE","_pushDoubleBE","mt","orig","ONE","_pushUInt16BE","_pushUInt32BE","MAX_SAFE_INTEGER","NEG_INT","_pushFloat","_pushInt","POS_INT","_pushNaN","_pushInfinity","_pushIntNum","UTF8_STRING","ARRAY","DATE_EPOCH","BYTE_STRING","_pushBuffer","REGEXP","URI","POS_BIGINT","isNegative","negated","minus","NEG_BIGINT","_pushBigint","DECIMAL_FRAC","dec","decimalPlaces","slide","multipliedBy","isLessThan","MAP","_pushRawMap","encodeCBOR","keyLength","keySorter","_pushNumber","_pushString","_pushBoolean","_pushObject","_pushArray","_pushUndefined","_pushMap","_pushSet","_pushDate","_pushRegexp","writeUInt8","writeUInt16BE","writeUInt32BE","writeDoubleBE","write","new","Tar","extractor","extract","header","toCoreInterface","B2S_GET32","B2S_G","ROTR32","BLAKE2S_IV","SIGMA","blake2sCompress","blake2sHex","_bufs","_new","_offset","tot","_reverseOffset","blOffset","bufferId","dst","dstStart","srcStart","srcEnd","bufoff","startOffset","endOffset","buffers","consume","duplicate","_appendBuffer","byteOffset","_isBufferList","blIndex","buffOffset","availableWindow","nativeSearchResult","revOffset","_match","searchOffset","readDoubleBE","readDoubleLE","readFloatLE","readInt32BE","readInt32LE","readUInt32BE","readUInt32LE","readInt16BE","readInt16LE","readUInt16LE","readInt8","readUInt8","readIntBE","readIntLE","readUIntBE","readUIntLE","tail","ls","useColors","__nwjs","WebkitAppearance","firebug","$1","formatArgs","humanize","color","lastC","save","namespaces","storage","setItem","removeItem","load","getItem","DEBUG","localstorage","localStorage","colors","formatters","toHexString","fromHexString","toB58String","fromB58String","encoded","isValidCode","hashfn","isAppCode","Iterators","view","objectKeys","Properties","dLink","SubscriptionTracker","subsTracker","singleton","topic","unsubscribe","subsystem","__webpack_amd_options__","units","nanosecond","us","microsecond","millisecond","second","sec","minute","hour","hr","day","week","wk","month","year","yr","protocolMap","defaultProtocol","urlParsed","dagNode","nameOrCid","predicate","bool","resolver","defaultHashAlg","sha3","mur","sha","sha3_224","sha3_256","sha3_384","sha3_512","peers","subscribe","nameOrCode","getBase","codeBuf","validEncode","bufOrString","isEncoded","isImplemented","globalThis","__magic__","mh","CIDUtil","checkCIDComponents","multibaseName","errorMsg","_Buffer","ALPHABET","BASE_MAP","xc","BASE","LEADER","FACTOR","iFACTOR","zeroes","pbegin","pend","b58","carry","it1","it2","repeat","decodeUnsafe","psz","b256","it3","it4","vch","fill","arch","execPath","title","pid","browser","cwd","chdir","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","oldName","newName","Http","http","decodeURIComponent","UNSCOPABLES","ArrayPrototype","pDefer","promise","asDAGLink","dagLink","Value","Extra","defaultConstructor","Key","getOwnPropertySymbols","profile","normaliseContent","normaliseInput","toAbsoluteIndex","IS_INCLUDES","$this","fromIndex","multicodec","RAW","SHA2_256","userOptions","defaultOptions","cidVersion","codecName","print","isOptionObject","defaultMergeOpts","concatArrays","ignoreUndefined","getEnumerableOwnPropertyKeys","symbols","cloneArray","cloneOptionObject","mergeKeys","resultIndex","indices","hasParent","BREAK","argument","toCamelWithMetadata","entry","WithLocality","fixRegExpWellKnownSymbolLogic","requireObjectCoercible","advanceStringIndex","regExpExec","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","maybeToString","REPLACE","nativeReplace","maybeCallNative","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_KEEPS_$0","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","regexp","rx","functionalReplace","fullUnicode","results","matchStr","accumulatedResult","nextSourcePosition","captures","namedCaptures","groups","replacerArgs","getSubstitution","tailPos","Entries","File","FormData","abortController","formData","fileSuffix","fieldName","qs","encodeURIComponent","connect","disconnect","localAddrs","nextpath","IS_PURE","store","copyright","dagPB","dagCBOR","resolvers","getBlock","dagResolve","dagResolver","missingMulticodec","remPath","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","Pins","addAll","rename","import","baseTable","nameTable","Map","encodingName","bitmap","intTable","codecNameToCodeVarint","addPrefix","multicodecStrOrCode","rmPrefix","getCodec","prefixedData","getName","getNumber","getCode","getCodeVarint","getVarint","SHIFT16","MAX_SAFE_HIGH","exp","mant","sign","arrayBufferToBignumber","buildMap","buildInt32","g","buildInt64","g1","g2","plus","u32","u","s16","lenA","lenB","isNegativeZero","nextPowerOf2","browserReadableStreamToIt","IndexedObject","nativeAssign","A","T","argumentsLength","file","N1","N2","N3","N4","N5","N6","N7","N8","N9","ipldRaw","formats","DAG_PB","DAG_CBOR","ipldOptions","ipld","configuredFormats","inputEnc","loadFormat","serialized","Cid","electron","CONVERT_TO_STRING","codeAt","TextDecoder","timedOut","timeoutID","defaults","throwHttpErrors","credentials","endsWith","ok","streamToAsyncIterator","isAsyncIterator","decoder","return","encodingFromData","NATIVE_WEAK_MAP","objectHas","sharedKey","WeakMap","enforce","getterFor","TYPE","wmget","wmhas","wmset","metadata","STATE","inspectSource","InternalStateModule","getInternalState","enforceInternalState","TEMPLATE","unsafe","simple","ipfsPath","RemPath","findSources","sources","progressFn","progress","signals","onAbort","aborted","ZEROS","SEVENS","USTAR_VER","MASK","toTypeflag","encodeOct","addLength","digits","encodePax","pax","caps","camelObj","streamChannels","_subs","instance","topicSubs","unsubs","activeXDocument","documentCreateElement","GT","LT","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","NullProtoObjectViaActiveX","close","temp","NullProtoObjectViaIFrame","iframeDocument","iframe","JS","contentWindow","F","NullProtoObject","domain","ActiveXObject","px","contentBackup","newTheme","newLang","newOption","beforeDestroy","$","createIteratorConstructor","setPrototypeOf","setToStringTag","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","VALUES","ENTRIES","returnThis","Iterable","NAME","IteratorConstructor","DEFAULT","IS_SET","CurrentIteratorPrototype","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","stable","localeCompare","chk","pass","li","ri","dbl","stdlib","foreign","heap","pushInt","pushInt32","pushInt32Neg","pushInt64","pushInt64Neg","pushFloat","pushFloatSingle","pushFloatDouble","pushTrue","pushFalse","pushUndefined","pushNull","pushInfinity","pushInfinityNeg","pushNaN","pushNaNNeg","pushArrayStart","pushArrayStartFixed","pushArrayStartFixed32","pushArrayStartFixed64","pushObjectStart","pushObjectStartFixed","pushObjectStartFixed32","pushObjectStartFixed64","pushByteString","pushByteStringStart","pushUtf8String","pushUtf8StringStart","pushSimpleUnassigned","pushTagStart","pushTagStart4","pushTagStart8","pushTagUnassigned","pushBreak","inputLength","jumpTable","checkOffset","readUInt16","readUInt32","INT_P","octet","UINT_P_8","UINT_P_16","UINT_P_32","UINT_P_64","INT_N","UINT_N_8","UINT_N_16","UINT_N_32","UINT_N_64","BYTE_STRING_8","BYTE_STRING_16","BYTE_STRING_32","BYTE_STRING_64","BYTE_STRING_BREAK","UTF8_STRING_8","UTF8_STRING_16","UTF8_STRING_32","UTF8_STRING_64","UTF8_STRING_BREAK","ARRAY_8","ARRAY_16","ARRAY_32","ARRAY_64","ARRAY_BREAK","MAP_8","MAP_16","MAP_32","MAP_64","MAP_BREAK","TAG_KNOWN","TAG_BIGNUM_POS","TAG_BIGNUM_NEG","TAG_FRAC","TAG_BIGNUM_FLOAT","TAG_UNASSIGNED","TAG_BASE64_URL","TAG_BASE64","TAG_BASE16","TAG_MORE_1","TAG_MORE_2","TAG_MORE_4","TAG_MORE_8","SIMPLE_UNASSIGNED","SIMPLE_FALSE","SIMPLE_TRUE","SIMPLE_NULL","SIMPLE_UNDEFINED","SIMPLE_BYTE","SIMPLE_FLOAT_HALF","SIMPLE_FLOAT_SINGLE","SIMPLE_FLOAT_DOUBLE","ERROR","Seconds","FractionalNanoseconds","ERROR_MSG_INPUT","uint32ToHex","debugPrint","label","testSpeed","hashFn","startMs","genMs","hashHex","hashMs","ieee754","parser","_heap","_heap8","_buffer","_knownTags","NEG_ONE","TEN","5","tags","_parents","_depth","_currentParent","PARENT","_push","createTag","createByteString","createUtf8String","OBJECT","createObject","createArray","_dec","_closeParent","hasChildren","_ref","tmpKey","_res","tagNumber","createInt","createInt32","createInt64","createFloat","createFloatSingle","createFloatDouble","createInt32Neg","createInt64Neg","createTrue","createFalse","createNull","createUndefined","createInfinity","createInfinityNeg","createNaN","createNaNNeg","_createParent","_createArrayStartFixed","len1","len3","len4","_createObjectStartFixed","createByteStringFromHeap","createUtf8StringFromHeap","createSimpleUnassigned","_decode","protons","serializeDAGNodeLike","genCid","pbn","PBNode","DATE_STRING","BIGFLOAT","BASE64URL_EXPECTED","BASE64_EXPECTED","BASE16_EXPECTED","CBOR","BASE64URL","BASE64","MIME","ZERO","INDEFINITE","STREAM","copyProps","SafeBuffer","encodingOrOffset","allocUnsafeSlow","SlowBuffer","defined","compileEncodingLength","oneofsKeys","encLength","hls","field","packed","hl","packedLen","functionToString","provideBufLen","ProvideBufLen","wantlist","Wantlist","blocksReceived","BlocksReceived","dataReceived","DataReceived","blocksSent","BlocksSent","dataSent","DataSent","dupBlksReceived","DupBlksReceived","dupDataReceived","DupDataReceived","fl","collectObject","acc","globalObject","isNumeric","mathceil","mathfloor","bignumberError","tooManyDigits","LOG_BASE","POWS_TEN","SQRT_BASE","configObject","div","convertBase","parseNumeric","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","groupSize","secondaryGroupSize","groupSeparator","decimalSeparator","fractionGroupSize","fractionGroupSeparator","caseChanged","isNum","_isBigNumber","intCheck","ne","coeffToString","toExponential","toFixedPoint","maxOrMin","normalise","sd","ni","rd","pows10","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","getRandomValues","randomBytes","EXPONENTIAL_AT","RANGE","isBigNumber","maximum","lt","minimum","gt","random","pow2_53","random53bitInt","dp","rand","decimal","toBaseOut","baseIn","baseOut","arrL","callerIsToString","multiply","xlo","xhi","klo","khi","aL","bL","subtract","more","prod","prodL","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","yc","bitFloor","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","absoluteValue","comparedTo","dividedBy","dividedToIntegerBy","idiv","exponentiatedBy","isModExp","nIsBig","nIsNeg","nIsOdd","isOdd","integerValue","isEqualTo","eq","isGreaterThan","isGreaterThanOrEqualTo","gte","isLessThanOrEqualTo","lte","isPositive","isZero","xLTy","xe","ye","modulo","xcL","ycL","ylo","yhi","zc","sqrtBase","precision","shiftedBy","squareRoot","rep","toFormat","intPart","fractionPart","isNeg","intDigits","toFraction","md","d0","d1","d2","n0","n1","toPrecision","z","zs","LteReader","getPadding","discardPadding","highWaterMark","gnuLongPath","gnuLongLinkPath","paxGlobal","headerBytes","gnuLongPathBytes","gnuLongLinkPathBytes","paxGlobalBytes","paxBytes","linkpath","bytesRemaining","bodyConsumed","firstChunk","nextLte","postfix","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","AbortSignal","tokenize","MAX_RANGE","PACKABLE_TYPES","onfieldoptions","onmessagebody","extensions","onextensions","onextend","onpackagename","onsyntaxversion","hasBracket","onimport","onservice","service","imports","firstline","ext","fieldSplit","nestedEnumName","enumNameIsFieldType","en","enumNameIsNestedEnumName","local","regexpFlags","stickyHelpers","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","re1","re2","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","PATCH","reCopy","flags","charsAdded","strCopy","feature","detection","POLYFILL","NATIVE","globSource","urlSource","ipfsClient","bitswap","bootstrap","cat","dag","dht","diag","dns","files","getEndpointConfig","mount","pin","ping","repo","shutdown","swarm","Protocols","V","lengthPrefixedVarSize","sch","noComments","noMultilineComments","compile","flatten","Messages","encodings","runtime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","displayName","isGeneratorFunction","genFun","mark","awrap","skipTempReset","rootEntry","rootRecord","rval","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Path","returnMethod","nativeDefineProperty","Attributes","compileEncode","ints","encodeField","innerVal","oldOffset","objKeys","RE","peekableIterator","Convert","ip2buf","ipString","buf2ip","ipBuff","port2buf","buf2port","str2buf","buf2str","mh2buf","buf2mh","onion2buf","portBuf","onion32buf","buf2onion","addrBytes","portBytes","implementation","engine","stringOrBuffer","SendingQuery","PeerResponse","QueryError","AddingPeer","DialingPeer","numObjects","NumObjects","repoSize","RepoSize","repoPath","RepoPath","Version","storageMax","StorageMax","NativePromise","speciesConstructor","promiseResolve","NON_GENERIC","onFinally","isFunction","rfc4648","isFileObject","addresses","ma","commonjsGlobal","createCommonjsModule","humps","_processKeys","convert","_isObject","_isDate","_isRegExp","_isBoolean","_isFunction","_isArray","separateWords","separator","_isNumerical","pascalize","camelized","decamelize","_processor","depascalize","camelizeKeys","decamelizeKeys","pascalizeKeys","depascalizeKeys","_typeof","_extends","objectWithoutProperties","toConsumableArray","arr2","styleToObject","classToObject","combineClassObjects","_len","objs","_key","_data$class","dClass","_data$style","dStyle","_data$attrs","dAttrs","remainingData","PRODUCTION","_console","objectWithKey","_classes","spin","pulse","border","listItem","inverse","flip","rotation","pull","swapOpacity","addStaticClass","what","normalizeIconArgs","icon$$1","iconName","FontAwesomeIcon","validator","icon","iconArgs","maskArgs","renderedIcon","convertCurry","dotAll","nodeCid","PrototypeOfArrayIteratorPrototype","arrayIterator","_cid","MSB","REST","MSBALL","INT","getAll","profiles","TO_STRING_TAG_SUPPORT","SnippetManager","snippetMap","snippetNameMap","TabstopToken","inFormatString","tabstopId","expectIf","elseBranch","changeCase","snippetVar","choices","fmtString","guard","fmt","formatString","tokenizeTmSnippet","$getDefaultValue","variables","__","getVariableValue","varName","tmStrFormat","fmtTokens","formatted","fmtParts","resolveVariables","gChangeCase","snippet","gotoNext","i1","insertSnippetForSelection","snippetText","tabString","tabstops","isNested","expanding","copyValue","tabstopManager","TabstopManager","selectionId","addTabstops","insertSnippet","tabNext","$getScope","inlinePhp","getActiveScopes","scopes","includeScopes","expandWithTab","expandSnippetForSelection","snippets","findMatchingSnippet","dryRun","replaceBefore","replaceAfter","M__","matchBefore","T__","matchAfter","snippetList","startRe","endRe","triggerRe","endTriggerRe","register","wrapRegexp","guardedRegexp","addSnippet","unregister","tabTrigger","endTrigger","endGuard","removeSnippet","nameMap","parseSnippetFile","guardRe","getSnippetByName","$onChangeSelection","$onChangeSession","onChangeSession","$onAfterExec","onAfterExec","$openTabstops","selectedTabstop","removeTabstopMarkers","isRemove","$inChange","changedOutside","removeRange","updateLinkedFields","hasLinkedRanges","firstNonLinked","linked","snippetManager","containsLead","containsAnchor","selectTabstop","addTabstopMarkers","moveRelative","dest","movePoint","tabstop","ed","changeTracker","expandSnippet","emmet","emmetPath","AceEmmetEditor","setupContext","resources","require","setVariable","$syntax","getSyntax","createSelection","getCurrentLineRange","lineLength","getCaretPos","setCaretPos","getCurrentLine","replaceContent","noIndent","getContent","$updateTabstops","getProfileName","getVariable","emmetConfig","getFilePath","zeroBase","lastZero","tabStops","settings","getVocabulary","tabstopOptions","processText","common","replaceSubstring","keymap","expand_abbreviation","match_pair_outward","match_pair_inward","matching_pair","next_edit_point","prev_edit_point","toggle_comment","split_join_tag","remove_tag","evaluate_math_expression","increment_number_by_1","decrement_number_by_1","increment_number_by_01","decrement_number_by_01","increment_number_by_10","decrement_number_by_10","select_next_item","select_previous_item","reflect_css_value","encode_decode_data_url","expand_abbreviation_with_tab","wrap_with_abbreviation","editorProxy","runEmmetCommand","actions","updateCommands","isSupportedMode","isSupported","enableEmmet","setCore","flush","toggle","macrotask","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","task","shared","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","cbor","isCircular","CID_CBOR_TAG","tagCID","replaceCIDbyTAG","circular","defaultTags","defaultSize","currentSize","defaultMaxSize","maxSize","configureDecoder","decoderOptions","nodeTagged","typedArraySupport","foo","subarray","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","RangeError","fromArrayBuffer","fromObject","assertSize","checked","isEncoding","fromArrayLike","isnan","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","foundIndex","hexWrite","remaining","strLen","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","bytesPerSequence","decodeCodePointsArray","INSPECT_MAX_BYTES","poolSize","_augment","species","_isBuffer","swap16","swap32","swap64","thisStart","thisEnd","thisCopy","targetCopy","_arr","MAX_ARGUMENTS_LENGTH","codePoints","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","mul","writeUIntLE","maxBytes","writeUIntBE","writeUInt16LE","writeUInt32LE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeDoubleLE","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","leadSurrogate","byteArray","createError","ErrClass","toSentenceCase","addPropertyAccessors","sentenceCaseName","compileDecode","requiredFields","oneofFields","vals","decodeField","sentenceCase","decoded","defaultVal","coerceValue","packedEnd","stringToStringTuples","part","ParseError","cleanPath","stringTuplesToString","tup","protoFromTuple","stringTuplesToTuples","stringToBuffer","validateBuffer","isValidBuffer","Reader","lteReader","nextValue","isBlock","mhtype","mhlen","PREFERRED_STRING","faClone","faCloudUploadAlt","dataEncoding","typeOf","Objects","Depth","Mtime","MtimeNsecs","codecs","_CID","baseName","validateCID","paths","SHARED","appendData","b2b","b2s","gc","EXISTS","template","varintTable","newPromiseCapability","promiseCapability","toFileObject","variable","extraEncodings","visit","compileEnum","make","compileMessage","nativePropertyIsEnumerable","NASHORN_BUG","aPossiblePrototype","CORRECT_SETTER","REPLACE_SUPPORTS_NAMED_GROUPS","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","arg2","forceStringMethod","stringMethod","regexMethod","check","S_IFMT","S_IFBLK","S_IFCHR","S_IFDIR","S_IFIFO","S_IFLNK","DMODE","FMODE","END_OF_TAR","modeToType","paxHeader","newHeader","TypeDefault","selectColor","createDebug","prevTime","debug","coerce","formatter","logFn","instances","delimiter","newDebug","skips","disable","toNamespace","readMessages","msgStream","onError","seqno","topicIDs","ffWorkaround","normalizeArray","allowAboveRoot","basename","matchedSlash","xs","resolvedPath","resolvedAbsolute","isAbsolute","trailingSlash","fromParts","toParts","samePartsLength","outputParts","dirname","hasRoot","extname","startDot","startPart","preDotState","ipRegex","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","addToUnscopables","defineIterator","ARRAY_ITERATOR","setInternalState","iterated","Arguments","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","redefineAll","setSpecies","anInstance","checkCorrectnessOfIteration","microtask","hostReportErrors","newPromiseCapabilityModule","perform","V8_VERSION","PROMISE","getInternalPromiseState","PromiseConstructor","$fetch","newGenericPromiseCapability","DISPATCH_EVENT","UNHANDLED_REJECTION","REJECTION_HANDLED","PENDING","FULFILLED","REJECTED","HANDLED","UNHANDLED","GLOBAL_CORE_JS_PROMISE","PromiseRejectionEvent","FakePromise","INCORRECT_ITERATION","isThenable","isReject","notified","reactions","exited","reaction","fail","rejection","onHandleUnhandled","onUnhandled","IS_UNHANDLED","isUnhandled","unwrap","internalReject","internalResolve","executor","onFulfilled","onRejected","capability","$promiseResolve","alreadyCalled","race","getOwnPropertyDescriptorModule","Class","ClassIsWrapper","withIsProto","withoutNew","_this","_classCallCheck","_defineProperties","_createClass","protoProps","staticProps","_defineProperty","_objectSpread","sym","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_WINDOW","_DOCUMENT","_PERFORMANCE","_ref$userAgent","DOCUMENT","PERFORMANCE","IS_DOM","IS_IE","NAMESPACE_IDENTIFIER","UNITS_IN_GRID","DEFAULT_FAMILY_PREFIX","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","oneToTen","oneToTwenty","DUOTONE_CLASSES","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","FontAwesomeConfig","getAttrConfig","_ref2","_default","familyPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","_config","shims","loaded","doScroll","asyncTimer","SETTLED","NOOP","asyncSetTimer","asyncQueue","asyncFlush","asyncCall","invokeResolver","resolvePromise","rejectPromise","invokeCallback","subscriber","settled","_state","handleThenable","fulfill","publishFulfillment","publishRejection","_then","notifyRejectionHandled","onFulfillment","onRejection","fulfilled","rejected","promises","meaninglessTransform","rotate","flipX","flipY","insertCss","headChildren","beforeChild","idPool","nextUniqueId","htmlEscape","joinAttributes","attributeName","joinStyles","styleName","transformIsMeaningful","transformForSvg","containerWidth","iconWidth","innerTranslate","innerScale","innerRotate","transformForCss","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","ALL_SPACE","fillBlack","deGroup","makeIconMasking","explicitMaskId","maskId","mainWidth","mainPath","maskWidth","maskPath","trans","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","makeIconStandard","styleString","asIcon","asSymbol","makeInlineSvgAbstract","_params$icons","icons","titleId","extra","_params$watchable","watchable","widthClass","attrClass","role","makeLayersTextAbstract","_params$watchable2","noop$1","bindInternal4","thisContext","subject","defineIcons","_params$skipHooks","skipHooks","expanded","addPack","build","reducer","ligatures","ligature","hasRegular","shim","iconFromMapping","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","parseTransformString","transformString","rest","MissingIcon","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","OPACITY_ANIMATE","cx","cy","asFoundIcon","_icon$slice","_icon$slice2","vectorData","baseStyles","dfp","drc","rc","dPatt","customPropPatt","rPatt","Library","definitions","additions","_pullDefinitions","_normalized$key","ensureCss","_cssInserted","apiObject","abstractCreator","findIconDefinition","iconLookup","_iconLookup$prefix","resolveIcons","maybeIconDefinition","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","_params$transform2","_params$title2","_params$classes2","_params$attributes2","_params$styles2","bw","__WEBPACK_EXTERNAL_MODULE_20__","installedModules","__webpack_require__","moduleId","rawScriptExports","compiledTemplate","cssModules","esModule","__webpack_exports__","__WEBPACK_IMPORTED_MODULE_0_vue__","__WEBPACK_IMPORTED_MODULE_0_vue___default","__WEBPACK_IMPORTED_MODULE_0__Notifications_vue__","__WEBPACK_IMPORTED_MODULE_0__Notifications_vue___default","__WEBPACK_IMPORTED_MODULE_1__events__","Notify","installed","componentName","Component","__WEBPACK_IMPORTED_MODULE_0__index__","__WEBPACK_IMPORTED_MODULE_2__util__","__WEBPACK_IMPORTED_MODULE_3__defaults__","__WEBPACK_IMPORTED_MODULE_4__VelocityGroup_vue__","__WEBPACK_IMPORTED_MODULE_4__VelocityGroup_vue___default","__WEBPACK_IMPORTED_MODULE_5__CssGroup_vue__","__WEBPACK_IMPORTED_MODULE_5__CssGroup_vue___default","__WEBPACK_IMPORTED_MODULE_6__parser__","IDLE","DESTROYED","VelocityGroup","CssGroup","animationType","animation","velocityAnimation","animationName","cssAnimation","cooldown","ignoreDuplicates","closeOnClick","velocity","addItem","closeItem","actualWidth","isVA","_listToDirection","botToTop","destroyIfNecessary","clean","destroyAll","indexToDestroy","isDuplicate","canAdd","destroyById","notifyClass","notifyWrapperStyle","getAnimation","floatRegexp","Id","listToDirection","directions","mediaQuery","alreadyImportedModules","_vm","_h","locals","hasDocument","listToStyles","stylesInDom","singletonElement","singletonCounter","isProduction","addStylesToDom","domStyle","addStyle","createStyleElement","styleElement","styleIndex","applyToSingletonTag","applyToTag","newObj","media","sourceMap","_isProduction","newList","mayRemove","replaceText","textStore","styleSheet","cssNode","btoa","unescape","newStyles","PromiseCapability","$$resolve","$$reject","toProtoBuf","chmod","cp","mkdir","mv","touch","faGithub","svarint","encoder","bufferLength","int32","int64","subset","sint32","sint64","uint32","uint64","enum","fixed64","sfixed64","double","fixed32","sfixed32","float","classofRaw","CORRECT_ARGUMENTS","tryGet","callee","OldCfg","NewCfg","wantlistForPeer","unwant","_isCircular","parentList","reduceValue","tcpUri","assumeHttp","explicitPort","Reducers","ip4","ip6","tcp","udp","dnsaddr","dns4","dns6","p2p","https","wss","findProvs","findPeer"],"mappings":"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ACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,YAAa,MACb,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,g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CzB86I,EAAM96I,EAAS,EAAK,GAAK,EACzB86I,EAAM96I,EAAS,EAAK,GAAK,EACzB86I,EAAM96I,EAAS,EAAK,GAAK,EACzB86I,EAAM96I,EAAS,EAAK,GAAK,EACzB86I,EAAM96I,EAAS,EAAK,GAAK,GAG3BA,EAAUA,EAAS,EAAK,EAExB,OAAO,EAGT,SAAS2gJ,GAAOpD,GACdA,EAAQA,EAAQ,EAEhB,OAAO,EAGT,SAASnS,GAAOmS,GACdA,EAAQA,EAAQ,EAEhBP,IAEAh9I,EAAUA,EAAS,EAAK,EAExB,OAAO,EAKT,IAAIk9I,GAAY,CAEdI,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EAEAE,EAEAC,EAEAC,EAEAC,EACAgD,GACAA,GACAA,GACAA,GAEA/C,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EAEAC,EAEAC,EAEAC,GAEAC,GACA2C,GACAA,GACAA,GACAA,GAEA/lB,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAqjB,GAEAC,GAEAC,GAEAC,GACAuC,GACAA,GACAA,GAEAtC,GAEA5jB,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEA6jB,GAEAC,GAEAC,GAEAC,GAEAkC,GACAA,GACAA,GACAjC,GAEAhkB,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,G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","file":"js/chunk-vendors.08351f9e.js","sourcesContent":["var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict'\n\n// exports.Commented = require('./commented')\nexports.Diagnose = require('./diagnose')\nexports.Decoder = require('./decoder')\nexports.Encoder = require('./encoder')\nexports.Simple = require('./simple')\nexports.Tagged = require('./tagged')\n\n// exports.comment = exports.Commented.comment\nexports.decodeAll = exports.Decoder.decodeAll\nexports.decodeFirst = exports.Decoder.decodeFirst\nexports.diagnose = exports.Diagnose.diagnose\nexports.encode = exports.Encoder.encode\nexports.decode = exports.Decoder.decode\n\nexports.leveldb = {\n decode: exports.Decoder.decodeAll,\n encode: exports.Encoder.encode,\n buffer: true,\n name: 'cbor'\n}\n","'use strict'\n\nmodule.exports = config => ({\n net: require('./net')(config),\n sys: require('./sys')(config),\n cmds: require('./cmds')(config)\n})\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict'\n\nmodule.exports = config => ({\n publish: require('./publish')(config),\n resolve: require('./resolve')(config),\n pubsub: require('./pubsub')(config)\n})\n","module.exports = Node\n\n/**\n * a linked-list node\n * @class\n * @param {any} value - node's value\n * @param {Node} next - next node\n */\nfunction Node (value, next) {\n this.value = value\n this.next = next\n}\n\n/**\n * checks if this node or any of its children has the value\n * @param {any} value - value to check if linked-list contains\n * @return {boolean} true if the list contains the value; false if not\n */\nNode.prototype.contains = function (value) {\n var cursor = this\n\n while (cursor) {\n if (cursor.value === value) return true\n cursor = cursor.next\n }\n\n return false\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (acequire, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = \"ace\";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != \"undefined\") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof acequirejs !== \"undefined\")\n return;\n\n\nvar define = function(module, deps, payload) {\n if (typeof module !== \"string\") {\n if (define.original)\n define.original.apply(this, arguments);\n else {\n console.error(\"dropping module because define wasn\\'t a string.\");\n console.trace();\n }\n return;\n }\n if (arguments.length == 2)\n payload = deps;\n if (!define.modules[module]) {\n define.payloads[module] = payload;\n define.modules[module] = null;\n }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _acequire = function(parentId, module, callback) {\n if (typeof module === \"string\") {\n var payload = lookup(parentId, module);\n if (payload != undefined) {\n callback && callback();\n return payload;\n }\n } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\n var params = [];\n for (var i = 0, l = module.length; i < l; ++i) {\n var dep = lookup(parentId, module[i]);\n if (dep == undefined && acequire.original)\n return;\n params.push(dep);\n }\n return callback && callback.apply(null, params) || true;\n }\n};\n\nvar acequire = function(module, callback) {\n var packagedModule = _acequire(\"\", module, callback);\n if (packagedModule == undefined && acequire.original)\n return acequire.original.apply(this, arguments);\n return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n // normalize plugin acequires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\n }\n // normalize relative acequires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = base + \"/\" + moduleName;\n\n while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n moduleName = normalizeModule(parentId, moduleName);\n\n var module = define.modules[moduleName];\n if (!module) {\n module = define.payloads[moduleName];\n if (typeof module === 'function') {\n var exports = {};\n var mod = {\n id: moduleName,\n uri: '',\n exports: exports,\n packaged: true\n };\n\n var req = function(module, callback) {\n return _acequire(moduleName, module, callback);\n };\n\n var returnValue = module(req, exports, mod);\n exports = returnValue || mod.exports;\n define.modules[moduleName] = exports;\n delete define.payloads[moduleName];\n }\n module = define.modules[moduleName] = exports || module;\n }\n return module;\n};\n\nfunction exportAce(ns) {\n var root = global;\n if (ns) {\n if (!global[ns])\n global[ns] = {};\n root = global[ns];\n }\n\n if (!root.define || !root.define.packaged) {\n define.original = root.define;\n root.define = define;\n root.define.packaged = true;\n }\n\n if (!root.acequire || !root.acequire.packaged) {\n acequire.original = root.acequire;\n root.acequire = acequire;\n root.acequire.packaged = true;\n }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define(\"ace/lib/regexp\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\n var real = {\n exec: RegExp.prototype.exec,\n test: RegExp.prototype.test,\n match: String.prototype.match,\n replace: String.prototype.replace,\n split: String.prototype.split\n },\n compliantExecNpcg = real.exec.call(/()??/, \"\")[1] === undefined, // check `exec` handling of nonparticipating capturing groups\n compliantLastIndexIncrement = function () {\n var x = /^/g;\n real.test.call(x, \"\");\n return !x.lastIndex;\n }();\n\n if (compliantLastIndexIncrement && compliantExecNpcg)\n return;\n RegExp.prototype.exec = function (str) {\n var match = real.exec.apply(this, arguments),\n name, r2;\n if ( typeof(str) == 'string' && match) {\n if (!compliantExecNpcg && match.length > 1 && indexOf(match, \"\") > -1) {\n r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), \"g\", \"\"));\n real.replace.call(str.slice(match.index), r2, function () {\n for (var i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined)\n match[i] = undefined;\n }\n });\n }\n if (this._xregexp && this._xregexp.captureNames) {\n for (var i = 1; i < match.length; i++) {\n name = this._xregexp.captureNames[i - 1];\n if (name)\n match[name] = match[i];\n }\n }\n if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))\n this.lastIndex--;\n }\n return match;\n };\n if (!compliantLastIndexIncrement) {\n RegExp.prototype.test = function (str) {\n var match = real.exec.call(this, str);\n if (match && this.global && !match[0].length && (this.lastIndex > match.index))\n this.lastIndex--;\n return !!match;\n };\n }\n\n function getNativeFlags (regex) {\n return (regex.global ? \"g\" : \"\") +\n (regex.ignoreCase ? \"i\" : \"\") +\n (regex.multiline ? \"m\" : \"\") +\n (regex.extended ? \"x\" : \"\") + // Proposed for ES4; included in AS3\n (regex.sticky ? \"y\" : \"\");\n }\n\n function indexOf (array, item, from) {\n if (Array.prototype.indexOf) // Use the native array method if available\n return array.indexOf(item, from);\n for (var i = from || 0; i < array.length; i++) {\n if (array[i] === item)\n return i;\n }\n return -1;\n }\n\n});\n\nace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\nfunction Empty() {}\n\nif (!Function.prototype.bind) {\n Function.prototype.bind = function bind(that) { // .length is 1\n var target = this;\n if (typeof target != \"function\") {\n throw new TypeError(\"Function.prototype.bind called on incompatible \" + target);\n }\n var args = slice.call(arguments, 1); // for normal call\n var bound = function () {\n\n if (this instanceof bound) {\n\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n\n }\n\n };\n if(target.prototype) {\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n return bound;\n };\n}\nvar call = Function.prototype.call;\nvar prototypeOfArray = Array.prototype;\nvar prototypeOfObject = Object.prototype;\nvar slice = prototypeOfArray.slice;\nvar _toString = call.bind(prototypeOfObject.toString);\nvar owns = call.bind(prototypeOfObject.hasOwnProperty);\nvar defineGetter;\nvar defineSetter;\nvar lookupGetter;\nvar lookupSetter;\nvar supportsAccessors;\nif ((supportsAccessors = owns(prototypeOfObject, \"__defineGetter__\"))) {\n defineGetter = call.bind(prototypeOfObject.__defineGetter__);\n defineSetter = call.bind(prototypeOfObject.__defineSetter__);\n lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);\n lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);\n}\nif ([1,2].splice(0).length != 2) {\n if(function() { // test IE < 9 to splice bug - see issue #138\n function makeArray(l) {\n var a = new Array(l+2);\n a[0] = a[1] = 0;\n return a;\n }\n var array = [], lengthBefore;\n \n array.splice.apply(array, makeArray(20));\n array.splice.apply(array, makeArray(26));\n\n lengthBefore = array.length; //46\n array.splice(5, 0, \"XXX\"); // add one element\n\n lengthBefore + 1 == array.length\n\n if (lengthBefore + 1 == array.length) {\n return true;// has right splice implementation without bugs\n }\n }()) {//IE 6/7\n var array_splice = Array.prototype.splice;\n Array.prototype.splice = function(start, deleteCount) {\n if (!arguments.length) {\n return [];\n } else {\n return array_splice.apply(this, [\n start === void 0 ? 0 : start,\n deleteCount === void 0 ? (this.length - start) : deleteCount\n ].concat(slice.call(arguments, 2)))\n }\n };\n } else {//IE8\n Array.prototype.splice = function(pos, removeCount){\n var length = this.length;\n if (pos > 0) {\n if (pos > length)\n pos = length;\n } else if (pos == void 0) {\n pos = 0;\n } else if (pos < 0) {\n pos = Math.max(length + pos, 0);\n }\n\n if (!(pos+removeCount < length))\n removeCount = length - pos;\n\n var removed = this.slice(pos, pos+removeCount);\n var insert = slice.call(arguments, 2);\n var add = insert.length; \n if (pos === length) {\n if (add) {\n this.push.apply(this, insert);\n }\n } else {\n var remove = Math.min(removeCount, length - pos);\n var tailOldPos = pos + remove;\n var tailNewPos = tailOldPos + add - remove;\n var tailCount = length - tailOldPos;\n var lengthAfterRemove = length - remove;\n\n if (tailNewPos < tailOldPos) { // case A\n for (var i = 0; i < tailCount; ++i) {\n this[tailNewPos+i] = this[tailOldPos+i];\n }\n } else if (tailNewPos > tailOldPos) { // case B\n for (i = tailCount; i--; ) {\n this[tailNewPos+i] = this[tailOldPos+i];\n }\n } // else, add == remove (nothing to do)\n\n if (add && pos === lengthAfterRemove) {\n this.length = lengthAfterRemove; // truncate array\n this.push.apply(this, insert);\n } else {\n this.length = lengthAfterRemove + add; // reserves space\n for (i = 0; i < add; ++i) {\n this[pos+i] = insert[i];\n }\n }\n }\n return removed;\n };\n }\n}\nif (!Array.isArray) {\n Array.isArray = function isArray(obj) {\n return _toString(obj) == \"[object Array]\";\n };\n}\nvar boxedString = Object(\"a\"),\n splitString = boxedString[0] != \"a\" || !(0 in boxedString);\n\nif (!Array.prototype.forEach) {\n Array.prototype.forEach = function forEach(fun /*, thisp*/) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n thisp = arguments[1],\n i = -1,\n length = self.length >>> 0;\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(); // TODO message\n }\n\n while (++i < length) {\n if (i in self) {\n fun.call(thisp, self[i], i, object);\n }\n }\n };\n}\nif (!Array.prototype.map) {\n Array.prototype.map = function map(fun /*, thisp*/) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n length = self.length >>> 0,\n result = Array(length),\n thisp = arguments[1];\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(fun + \" is not a function\");\n }\n\n for (var i = 0; i < length; i++) {\n if (i in self)\n result[i] = fun.call(thisp, self[i], i, object);\n }\n return result;\n };\n}\nif (!Array.prototype.filter) {\n Array.prototype.filter = function filter(fun /*, thisp */) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n length = self.length >>> 0,\n result = [],\n value,\n thisp = arguments[1];\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(fun + \" is not a function\");\n }\n\n for (var i = 0; i < length; i++) {\n if (i in self) {\n value = self[i];\n if (fun.call(thisp, value, i, object)) {\n result.push(value);\n }\n }\n }\n return result;\n };\n}\nif (!Array.prototype.every) {\n Array.prototype.every = function every(fun /*, thisp */) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n length = self.length >>> 0,\n thisp = arguments[1];\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(fun + \" is not a function\");\n }\n\n for (var i = 0; i < length; i++) {\n if (i in self && !fun.call(thisp, self[i], i, object)) {\n return false;\n }\n }\n return true;\n };\n}\nif (!Array.prototype.some) {\n Array.prototype.some = function some(fun /*, thisp */) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n length = self.length >>> 0,\n thisp = arguments[1];\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(fun + \" is not a function\");\n }\n\n for (var i = 0; i < length; i++) {\n if (i in self && fun.call(thisp, self[i], i, object)) {\n return true;\n }\n }\n return false;\n };\n}\nif (!Array.prototype.reduce) {\n Array.prototype.reduce = function reduce(fun /*, initial*/) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n length = self.length >>> 0;\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(fun + \" is not a function\");\n }\n if (!length && arguments.length == 1) {\n throw new TypeError(\"reduce of empty array with no initial value\");\n }\n\n var i = 0;\n var result;\n if (arguments.length >= 2) {\n result = arguments[1];\n } else {\n do {\n if (i in self) {\n result = self[i++];\n break;\n }\n if (++i >= length) {\n throw new TypeError(\"reduce of empty array with no initial value\");\n }\n } while (true);\n }\n\n for (; i < length; i++) {\n if (i in self) {\n result = fun.call(void 0, result, self[i], i, object);\n }\n }\n\n return result;\n };\n}\nif (!Array.prototype.reduceRight) {\n Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n length = self.length >>> 0;\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(fun + \" is not a function\");\n }\n if (!length && arguments.length == 1) {\n throw new TypeError(\"reduceRight of empty array with no initial value\");\n }\n\n var result, i = length - 1;\n if (arguments.length >= 2) {\n result = arguments[1];\n } else {\n do {\n if (i in self) {\n result = self[i--];\n break;\n }\n if (--i < 0) {\n throw new TypeError(\"reduceRight of empty array with no initial value\");\n }\n } while (true);\n }\n\n do {\n if (i in this) {\n result = fun.call(void 0, result, self[i], i, object);\n }\n } while (i--);\n\n return result;\n };\n}\nif (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) {\n Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {\n var self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n toObject(this),\n length = self.length >>> 0;\n\n if (!length) {\n return -1;\n }\n\n var i = 0;\n if (arguments.length > 1) {\n i = toInteger(arguments[1]);\n }\n i = i >= 0 ? i : Math.max(0, length + i);\n for (; i < length; i++) {\n if (i in self && self[i] === sought) {\n return i;\n }\n }\n return -1;\n };\n}\nif (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) {\n Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {\n var self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n toObject(this),\n length = self.length >>> 0;\n\n if (!length) {\n return -1;\n }\n var i = length - 1;\n if (arguments.length > 1) {\n i = Math.min(i, toInteger(arguments[1]));\n }\n i = i >= 0 ? i : length - Math.abs(i);\n for (; i >= 0; i--) {\n if (i in self && sought === self[i]) {\n return i;\n }\n }\n return -1;\n };\n}\nif (!Object.getPrototypeOf) {\n Object.getPrototypeOf = function getPrototypeOf(object) {\n return object.__proto__ || (\n object.constructor ?\n object.constructor.prototype :\n prototypeOfObject\n );\n };\n}\nif (!Object.getOwnPropertyDescriptor) {\n var ERR_NON_OBJECT = \"Object.getOwnPropertyDescriptor called on a \" +\n \"non-object: \";\n Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {\n if ((typeof object != \"object\" && typeof object != \"function\") || object === null)\n throw new TypeError(ERR_NON_OBJECT + object);\n if (!owns(object, property))\n return;\n\n var descriptor, getter, setter;\n descriptor = { enumerable: true, configurable: true };\n if (supportsAccessors) {\n var prototype = object.__proto__;\n object.__proto__ = prototypeOfObject;\n\n var getter = lookupGetter(object, property);\n var setter = lookupSetter(object, property);\n object.__proto__ = prototype;\n\n if (getter || setter) {\n if (getter) descriptor.get = getter;\n if (setter) descriptor.set = setter;\n return descriptor;\n }\n }\n descriptor.value = object[property];\n return descriptor;\n };\n}\nif (!Object.getOwnPropertyNames) {\n Object.getOwnPropertyNames = function getOwnPropertyNames(object) {\n return Object.keys(object);\n };\n}\nif (!Object.create) {\n var createEmpty;\n if (Object.prototype.__proto__ === null) {\n createEmpty = function () {\n return { \"__proto__\": null };\n };\n } else {\n createEmpty = function () {\n var empty = {};\n for (var i in empty)\n empty[i] = null;\n empty.constructor =\n empty.hasOwnProperty =\n empty.propertyIsEnumerable =\n empty.isPrototypeOf =\n empty.toLocaleString =\n empty.toString =\n empty.valueOf =\n empty.__proto__ = null;\n return empty;\n }\n }\n\n Object.create = function create(prototype, properties) {\n var object;\n if (prototype === null) {\n object = createEmpty();\n } else {\n if (typeof prototype != \"object\")\n throw new TypeError(\"typeof prototype[\"+(typeof prototype)+\"] != 'object'\");\n var Type = function () {};\n Type.prototype = prototype;\n object = new Type();\n object.__proto__ = prototype;\n }\n if (properties !== void 0)\n Object.defineProperties(object, properties);\n return object;\n };\n}\n\nfunction doesDefinePropertyWork(object) {\n try {\n Object.defineProperty(object, \"sentinel\", {});\n return \"sentinel\" in object;\n } catch (exception) {\n }\n}\nif (Object.defineProperty) {\n var definePropertyWorksOnObject = doesDefinePropertyWork({});\n var definePropertyWorksOnDom = typeof document == \"undefined\" ||\n doesDefinePropertyWork(document.createElement(\"div\"));\n if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {\n var definePropertyFallback = Object.defineProperty;\n }\n}\n\nif (!Object.defineProperty || definePropertyFallback) {\n var ERR_NON_OBJECT_DESCRIPTOR = \"Property description must be an object: \";\n var ERR_NON_OBJECT_TARGET = \"Object.defineProperty called on non-object: \"\n var ERR_ACCESSORS_NOT_SUPPORTED = \"getters & setters can not be defined \" +\n \"on this javascript engine\";\n\n Object.defineProperty = function defineProperty(object, property, descriptor) {\n if ((typeof object != \"object\" && typeof object != \"function\") || object === null)\n throw new TypeError(ERR_NON_OBJECT_TARGET + object);\n if ((typeof descriptor != \"object\" && typeof descriptor != \"function\") || descriptor === null)\n throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);\n if (definePropertyFallback) {\n try {\n return definePropertyFallback.call(Object, object, property, descriptor);\n } catch (exception) {\n }\n }\n if (owns(descriptor, \"value\")) {\n\n if (supportsAccessors && (lookupGetter(object, property) ||\n lookupSetter(object, property)))\n {\n var prototype = object.__proto__;\n object.__proto__ = prototypeOfObject;\n delete object[property];\n object[property] = descriptor.value;\n object.__proto__ = prototype;\n } else {\n object[property] = descriptor.value;\n }\n } else {\n if (!supportsAccessors)\n throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);\n if (owns(descriptor, \"get\"))\n defineGetter(object, property, descriptor.get);\n if (owns(descriptor, \"set\"))\n defineSetter(object, property, descriptor.set);\n }\n\n return object;\n };\n}\nif (!Object.defineProperties) {\n Object.defineProperties = function defineProperties(object, properties) {\n for (var property in properties) {\n if (owns(properties, property))\n Object.defineProperty(object, property, properties[property]);\n }\n return object;\n };\n}\nif (!Object.seal) {\n Object.seal = function seal(object) {\n return object;\n };\n}\nif (!Object.freeze) {\n Object.freeze = function freeze(object) {\n return object;\n };\n}\ntry {\n Object.freeze(function () {});\n} catch (exception) {\n Object.freeze = (function freeze(freezeObject) {\n return function freeze(object) {\n if (typeof object == \"function\") {\n return object;\n } else {\n return freezeObject(object);\n }\n };\n })(Object.freeze);\n}\nif (!Object.preventExtensions) {\n Object.preventExtensions = function preventExtensions(object) {\n return object;\n };\n}\nif (!Object.isSealed) {\n Object.isSealed = function isSealed(object) {\n return false;\n };\n}\nif (!Object.isFrozen) {\n Object.isFrozen = function isFrozen(object) {\n return false;\n };\n}\nif (!Object.isExtensible) {\n Object.isExtensible = function isExtensible(object) {\n if (Object(object) === object) {\n throw new TypeError(); // TODO message\n }\n var name = '';\n while (owns(object, name)) {\n name += '?';\n }\n object[name] = true;\n var returnValue = owns(object, name);\n delete object[name];\n return returnValue;\n };\n}\nif (!Object.keys) {\n var hasDontEnumBug = true,\n dontEnums = [\n \"toString\",\n \"toLocaleString\",\n \"valueOf\",\n \"hasOwnProperty\",\n \"isPrototypeOf\",\n \"propertyIsEnumerable\",\n \"constructor\"\n ],\n dontEnumsLength = dontEnums.length;\n\n for (var key in {\"toString\": null}) {\n hasDontEnumBug = false;\n }\n\n Object.keys = function keys(object) {\n\n if (\n (typeof object != \"object\" && typeof object != \"function\") ||\n object === null\n ) {\n throw new TypeError(\"Object.keys called on a non-object\");\n }\n\n var keys = [];\n for (var name in object) {\n if (owns(object, name)) {\n keys.push(name);\n }\n }\n\n if (hasDontEnumBug) {\n for (var i = 0, ii = dontEnumsLength; i < ii; i++) {\n var dontEnum = dontEnums[i];\n if (owns(object, dontEnum)) {\n keys.push(dontEnum);\n }\n }\n }\n return keys;\n };\n\n}\nif (!Date.now) {\n Date.now = function now() {\n return new Date().getTime();\n };\n}\nvar ws = \"\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\" +\n \"\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\" +\n \"\\u2029\\uFEFF\";\nif (!String.prototype.trim || ws.trim()) {\n ws = \"[\" + ws + \"]\";\n var trimBeginRegexp = new RegExp(\"^\" + ws + ws + \"*\"),\n trimEndRegexp = new RegExp(ws + ws + \"*$\");\n String.prototype.trim = function trim() {\n return String(this).replace(trimBeginRegexp, \"\").replace(trimEndRegexp, \"\");\n };\n}\n\nfunction toInteger(n) {\n n = +n;\n if (n !== n) { // isNaN\n n = 0;\n } else if (n !== 0 && n !== (1/0) && n !== -(1/0)) {\n n = (n > 0 || -1) * Math.floor(Math.abs(n));\n }\n return n;\n}\n\nfunction isPrimitive(input) {\n var type = typeof input;\n return (\n input === null ||\n type === \"undefined\" ||\n type === \"boolean\" ||\n type === \"number\" ||\n type === \"string\"\n );\n}\n\nfunction toPrimitive(input) {\n var val, valueOf, toString;\n if (isPrimitive(input)) {\n return input;\n }\n valueOf = input.valueOf;\n if (typeof valueOf === \"function\") {\n val = valueOf.call(input);\n if (isPrimitive(val)) {\n return val;\n }\n }\n toString = input.toString;\n if (typeof toString === \"function\") {\n val = toString.call(input);\n if (isPrimitive(val)) {\n return val;\n }\n }\n throw new TypeError();\n}\nvar toObject = function (o) {\n if (o == null) { // this matches both null and undefined\n throw new TypeError(\"can't convert \"+o+\" to object\");\n }\n return Object(o);\n};\n\n});\n\nace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/regexp\",\"ace/lib/es5-shim\"], function(acequire, exports, module) {\n\"use strict\";\n\nacequire(\"./regexp\");\nacequire(\"./es5-shim\");\n\n});\n\nace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\n\nexports.getDocumentHead = function(doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\n};\n\nexports.createElement = function(tag, ns) {\n return document.createElementNS ?\n document.createElementNS(ns || XHTML_NS, tag) :\n document.createElement(tag);\n};\n\nexports.hasCssClass = function(el, name) {\n var classes = (el.className + \"\").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function(el, name) {\n if (!exports.hasCssClass(el, name)) {\n el.className += \" \" + name;\n }\n};\nexports.removeCssClass = function(el, name) {\n var classes = el.className.split(/\\s+/g);\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n classes.splice(index, 1);\n }\n el.className = classes.join(\" \");\n};\n\nexports.toggleCssClass = function(el, name) {\n var classes = el.className.split(/\\s+/g), add = true;\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n add = false;\n classes.splice(index, 1);\n }\n if (add)\n classes.push(name);\n\n el.className = classes.join(\" \");\n return add;\n};\nexports.setCssClass = function(node, className, include) {\n if (include) {\n exports.addCssClass(node, className);\n } else {\n exports.removeCssClass(node, className);\n }\n};\n\nexports.hasCssString = function(id, doc) {\n var index = 0, sheets;\n doc = doc || document;\n\n if (doc.createStyleSheet && (sheets = doc.styleSheets)) {\n while (index < sheets.length)\n if (sheets[index++].owningElement.id === id) return true;\n } else if ((sheets = doc.getElementsByTagName(\"style\"))) {\n while (index < sheets.length)\n if (sheets[index++].id === id) return true;\n }\n\n return false;\n};\n\nexports.importCssString = function importCssString(cssText, id, doc) {\n doc = doc || document;\n if (id && exports.hasCssString(id, doc))\n return null;\n \n var style;\n \n if (id)\n cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\n \n if (doc.createStyleSheet) {\n style = doc.createStyleSheet();\n style.cssText = cssText;\n if (id)\n style.owningElement.id = id;\n } else {\n style = exports.createElement(\"style\");\n style.appendChild(doc.createTextNode(cssText));\n if (id)\n style.id = id;\n\n exports.getDocumentHead(doc).appendChild(style);\n }\n};\n\nexports.importCssStylsheet = function(uri, doc) {\n if (doc.createStyleSheet) {\n doc.createStyleSheet(uri);\n } else {\n var link = exports.createElement('link');\n link.rel = 'stylesheet';\n link.href = uri;\n\n exports.getDocumentHead(doc).appendChild(link);\n }\n};\n\nexports.getInnerWidth = function(element) {\n return (\n parseInt(exports.computedStyle(element, \"paddingLeft\"), 10) +\n parseInt(exports.computedStyle(element, \"paddingRight\"), 10) + \n element.clientWidth\n );\n};\n\nexports.getInnerHeight = function(element) {\n return (\n parseInt(exports.computedStyle(element, \"paddingTop\"), 10) +\n parseInt(exports.computedStyle(element, \"paddingBottom\"), 10) +\n element.clientHeight\n );\n};\n\nexports.scrollbarWidth = function(document) {\n var inner = exports.createElement(\"ace_inner\");\n inner.style.width = \"100%\";\n inner.style.minWidth = \"0px\";\n inner.style.height = \"200px\";\n inner.style.display = \"block\";\n\n var outer = exports.createElement(\"ace_outer\");\n var style = outer.style;\n\n style.position = \"absolute\";\n style.left = \"-10000px\";\n style.overflow = \"hidden\";\n style.width = \"200px\";\n style.minWidth = \"0px\";\n style.height = \"150px\";\n style.display = \"block\";\n\n outer.appendChild(inner);\n\n var body = document.documentElement;\n body.appendChild(outer);\n\n var noScrollbar = inner.offsetWidth;\n\n style.overflow = \"scroll\";\n var withScrollbar = inner.offsetWidth;\n\n if (noScrollbar == withScrollbar) {\n withScrollbar = outer.clientWidth;\n }\n\n body.removeChild(outer);\n\n return noScrollbar-withScrollbar;\n};\n\nif (typeof document == \"undefined\") {\n exports.importCssString = function() {};\n return;\n}\n\nif (window.pageYOffset !== undefined) {\n exports.getPageScrollTop = function() {\n return window.pageYOffset;\n };\n\n exports.getPageScrollLeft = function() {\n return window.pageXOffset;\n };\n}\nelse {\n exports.getPageScrollTop = function() {\n return document.body.scrollTop;\n };\n\n exports.getPageScrollLeft = function() {\n return document.body.scrollLeft;\n };\n}\n\nif (window.getComputedStyle)\n exports.computedStyle = function(element, style) {\n if (style)\n return (window.getComputedStyle(element, \"\") || {})[style] || \"\";\n return window.getComputedStyle(element, \"\") || {};\n };\nelse\n exports.computedStyle = function(element, style) {\n if (style)\n return element.currentStyle[style];\n return element.currentStyle;\n };\nexports.setInnerHtml = function(el, innerHtml) {\n var element = el.cloneNode(false);//document.createElement(\"div\");\n element.innerHTML = innerHtml;\n el.parentNode.replaceChild(element, el);\n return element;\n};\n\nif (\"textContent\" in document.documentElement) {\n exports.setInnerText = function(el, innerText) {\n el.textContent = innerText;\n };\n\n exports.getInnerText = function(el) {\n return el.textContent;\n };\n}\nelse {\n exports.setInnerText = function(el, innerText) {\n el.innerText = innerText;\n };\n\n exports.getInnerText = function(el) {\n return el.innerText;\n };\n}\n\nexports.getParentWindow = function(document) {\n return document.defaultView || document.parentWindow;\n};\n\n});\n\nace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nexports.inherits = function(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\n\nexports.mixin = function(obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\n\nexports.implement = function(proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\"], function(acequire, exports, module) {\n\"use strict\";\n\nacequire(\"./fixoldbrowsers\");\n\nvar oop = acequire(\"./oop\");\nvar Keys = (function() {\n var ret = {\n MODIFIER_KEYS: {\n 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta'\n },\n\n KEY_MODS: {\n \"ctrl\": 1, \"alt\": 2, \"option\" : 2, \"shift\": 4,\n \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8\n },\n\n FUNCTION_KEYS : {\n 8 : \"Backspace\",\n 9 : \"Tab\",\n 13 : \"Return\",\n 19 : \"Pause\",\n 27 : \"Esc\",\n 32 : \"Space\",\n 33 : \"PageUp\",\n 34 : \"PageDown\",\n 35 : \"End\",\n 36 : \"Home\",\n 37 : \"Left\",\n 38 : \"Up\",\n 39 : \"Right\",\n 40 : \"Down\",\n 44 : \"Print\",\n 45 : \"Insert\",\n 46 : \"Delete\",\n 96 : \"Numpad0\",\n 97 : \"Numpad1\",\n 98 : \"Numpad2\",\n 99 : \"Numpad3\",\n 100: \"Numpad4\",\n 101: \"Numpad5\",\n 102: \"Numpad6\",\n 103: \"Numpad7\",\n 104: \"Numpad8\",\n 105: \"Numpad9\",\n '-13': \"NumpadEnter\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"Numlock\",\n 145: \"Scrolllock\"\n },\n\n PRINTABLE_KEYS: {\n 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',\n 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',\n 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',\n 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',\n 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',\n 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',\n 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\n 219: '[', 220: '\\\\',221: ']', 222: \"'\", 111: '/', 106: '*'\n }\n };\n var name, i;\n for (i in ret.FUNCTION_KEYS) {\n name = ret.FUNCTION_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n for (i in ret.PRINTABLE_KEYS) {\n name = ret.PRINTABLE_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n oop.mixin(ret, ret.MODIFIER_KEYS);\n oop.mixin(ret, ret.PRINTABLE_KEYS);\n oop.mixin(ret, ret.FUNCTION_KEYS);\n ret.enter = ret[\"return\"];\n ret.escape = ret.esc;\n ret.del = ret[\"delete\"];\n ret[173] = '-';\n \n (function() {\n var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\n for (var i = Math.pow(2, mods.length); i--;) { \n ret.KEY_MODS[i] = mods.filter(function(x) {\n return i & ret.KEY_MODS[x];\n }).join(\"-\") + \"-\";\n }\n })();\n\n ret.KEY_MODS[0] = \"\";\n ret.KEY_MODS[-1] = \"input-\";\n\n return ret;\n})();\noop.mixin(exports, Keys);\n\nexports.keyCodeToString = function(keyCode) {\n var keyString = Keys[keyCode];\n if (typeof keyString != \"string\")\n keyString = String.fromCharCode(keyCode);\n return keyString.toLowerCase();\n};\n\n});\n\nace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\nexports.OS = {\n LINUX: \"LINUX\",\n MAC: \"MAC\",\n WINDOWS: \"WINDOWS\"\n};\nexports.getOS = function() {\n if (exports.isMac) {\n return exports.OS.MAC;\n } else if (exports.isLinux) {\n return exports.OS.LINUX;\n } else {\n return exports.OS.WINDOWS;\n }\n};\nif (typeof navigator != \"object\")\n return;\n\nvar os = (navigator.platform.match(/mac|win|linux/i) || [\"other\"])[0].toLowerCase();\nvar ua = navigator.userAgent;\nexports.isWin = (os == \"win\");\nexports.isMac = (os == \"mac\");\nexports.isLinux = (os == \"linux\");\nexports.isIE = \n (navigator.appName == \"Microsoft Internet Explorer\" || navigator.appName.indexOf(\"MSAppHost\") >= 0)\n ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1])\n : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]); // for ie\n \nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = (window.Controllers || window.controllers) && window.navigator.product === \"Gecko\";\nexports.isOldGecko = exports.isGecko && parseInt((ua.match(/rv:(\\d+)/)||[])[1], 10) < 4;\nexports.isOpera = window.opera && Object.prototype.toString.call(window.opera) == \"[object Opera]\";\nexports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\n\nexports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\n\nexports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\n\nexports.isIPad = ua.indexOf(\"iPad\") >= 0;\n\nexports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\n\nexports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream;\n\nif (exports.isIOS) exports.isMac = true;\n\n});\n\nace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar keys = acequire(\"./keys\");\nvar useragent = acequire(\"./useragent\");\n\nvar pressedKeys = null;\nvar ts = 0;\n\nexports.addListener = function(elem, type, callback) {\n if (elem.addEventListener) {\n return elem.addEventListener(type, callback, false);\n }\n if (elem.attachEvent) {\n var wrapper = function() {\n callback.call(elem, window.event);\n };\n callback._wrapper = wrapper;\n elem.attachEvent(\"on\" + type, wrapper);\n }\n};\n\nexports.removeListener = function(elem, type, callback) {\n if (elem.removeEventListener) {\n return elem.removeEventListener(type, callback, false);\n }\n if (elem.detachEvent) {\n elem.detachEvent(\"on\" + type, callback._wrapper || callback);\n }\n};\nexports.stopEvent = function(e) {\n exports.stopPropagation(e);\n exports.preventDefault(e);\n return false;\n};\n\nexports.stopPropagation = function(e) {\n if (e.stopPropagation)\n e.stopPropagation();\n else\n e.cancelBubble = true;\n};\n\nexports.preventDefault = function(e) {\n if (e.preventDefault)\n e.preventDefault();\n else\n e.returnValue = false;\n};\nexports.getButton = function(e) {\n if (e.type == \"dblclick\")\n return 0;\n if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n return 2;\n if (e.preventDefault) {\n return e.button;\n }\n else {\n return {1:0, 2:2, 4:1}[e.button];\n }\n};\n\nexports.capture = function(el, eventHandler, releaseCaptureHandler) {\n function onMouseUp(e) {\n eventHandler && eventHandler(e);\n releaseCaptureHandler && releaseCaptureHandler(e);\n\n exports.removeListener(document, \"mousemove\", eventHandler, true);\n exports.removeListener(document, \"mouseup\", onMouseUp, true);\n exports.removeListener(document, \"dragstart\", onMouseUp, true);\n }\n\n exports.addListener(document, \"mousemove\", eventHandler, true);\n exports.addListener(document, \"mouseup\", onMouseUp, true);\n exports.addListener(document, \"dragstart\", onMouseUp, true);\n \n return onMouseUp;\n};\n\nexports.addTouchMoveListener = function (el, callback) {\n var startx, starty;\n exports.addListener(el, \"touchstart\", function (e) {\n var touches = e.touches;\n var touchObj = touches[0];\n startx = touchObj.clientX;\n starty = touchObj.clientY;\n });\n exports.addListener(el, \"touchmove\", function (e) {\n var touches = e.touches;\n if (touches.length > 1) return;\n\n var touchObj = touches[0];\n\n e.wheelX = startx - touchObj.clientX;\n e.wheelY = starty - touchObj.clientY;\n\n startx = touchObj.clientX;\n starty = touchObj.clientY;\n\n callback(e);\n });\n};\n\nexports.addMouseWheelListener = function(el, callback) {\n if (\"onmousewheel\" in el) {\n exports.addListener(el, \"mousewheel\", function(e) {\n var factor = 8;\n if (e.wheelDeltaX !== undefined) {\n e.wheelX = -e.wheelDeltaX / factor;\n e.wheelY = -e.wheelDeltaY / factor;\n } else {\n e.wheelX = 0;\n e.wheelY = -e.wheelDelta / factor;\n }\n callback(e);\n });\n } else if (\"onwheel\" in el) {\n exports.addListener(el, \"wheel\", function(e) {\n var factor = 0.35;\n switch (e.deltaMode) {\n case e.DOM_DELTA_PIXEL:\n e.wheelX = e.deltaX * factor || 0;\n e.wheelY = e.deltaY * factor || 0;\n break;\n case e.DOM_DELTA_LINE:\n case e.DOM_DELTA_PAGE:\n e.wheelX = (e.deltaX || 0) * 5;\n e.wheelY = (e.deltaY || 0) * 5;\n break;\n }\n \n callback(e);\n });\n } else {\n exports.addListener(el, \"DOMMouseScroll\", function(e) {\n if (e.axis && e.axis == e.HORIZONTAL_AXIS) {\n e.wheelX = (e.detail || 0) * 5;\n e.wheelY = 0;\n } else {\n e.wheelX = 0;\n e.wheelY = (e.detail || 0) * 5;\n }\n callback(e);\n });\n }\n};\n\nexports.addMultiMouseDownListener = function(elements, timeouts, eventHandler, callbackName) {\n var clicks = 0;\n var startX, startY, timer; \n var eventNames = {\n 2: \"dblclick\",\n 3: \"tripleclick\",\n 4: \"quadclick\"\n };\n\n function onMousedown(e) {\n if (exports.getButton(e) !== 0) {\n clicks = 0;\n } else if (e.detail > 1) {\n clicks++;\n if (clicks > 4)\n clicks = 1;\n } else {\n clicks = 1;\n }\n if (useragent.isIE) {\n var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n if (!timer || isNewClick)\n clicks = 1;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function() {timer = null;}, timeouts[clicks - 1] || 600);\n\n if (clicks == 1) {\n startX = e.clientX;\n startY = e.clientY;\n }\n }\n \n e._clicks = clicks;\n\n eventHandler[callbackName](\"mousedown\", e);\n\n if (clicks > 4)\n clicks = 0;\n else if (clicks > 1)\n return eventHandler[callbackName](eventNames[clicks], e);\n }\n function onDblclick(e) {\n clicks = 2;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function() {timer = null;}, timeouts[clicks - 1] || 600);\n eventHandler[callbackName](\"mousedown\", e);\n eventHandler[callbackName](eventNames[clicks], e);\n }\n if (!Array.isArray(elements))\n elements = [elements];\n elements.forEach(function(el) {\n exports.addListener(el, \"mousedown\", onMousedown);\n if (useragent.isOldIE)\n exports.addListener(el, \"dblclick\", onDblclick);\n });\n};\n\nvar getModifierHash = useragent.isMac && useragent.isOpera && !(\"KeyboardEvent\" in window)\n ? function(e) {\n return 0 | (e.metaKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.ctrlKey ? 8 : 0);\n }\n : function(e) {\n return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n };\n\nexports.getModifierString = function(e) {\n return keys.KEY_MODS[getModifierHash(e)];\n};\n\nfunction normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n\n if (!useragent.isMac && pressedKeys) {\n if (e.getModifierState && (e.getModifierState(\"OS\") || e.getModifierState(\"Win\")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n pressedKeys.altGr = 0;\n else\n return;\n }\n if (keyCode === 18 || keyCode === 17) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (keyCode === 17 && location === 1) {\n if (pressedKeys[keyCode] == 1)\n ts = e.timeStamp;\n } else if (keyCode === 18 && hashId === 3 && location === 2) {\n var dt = e.timeStamp - ts;\n if (dt < 50)\n pressedKeys.altGr = true;\n }\n }\n }\n \n if (keyCode in keys.MODIFIER_KEYS) {\n keyCode = -1;\n }\n if (hashId & 8 && (keyCode >= 91 && keyCode <= 93)) {\n keyCode = -1;\n }\n \n if (!hashId && keyCode === 13) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (location === 3) {\n callback(e, hashId, -keyCode);\n if (e.defaultPrevented)\n return;\n }\n }\n \n if (useragent.isChromeOS && hashId & 8) {\n callback(e, hashId, keyCode);\n if (e.defaultPrevented)\n return;\n else\n hashId &= ~8;\n }\n if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n return false;\n }\n \n return callback(e, hashId, keyCode);\n}\n\n\nexports.addCommandKeyListener = function(el, callback) {\n var addListener = exports.addListener;\n if (useragent.isOldGecko || (useragent.isOpera && !(\"KeyboardEvent\" in window))) {\n var lastKeyDownKeyCode = null;\n addListener(el, \"keydown\", function(e) {\n lastKeyDownKeyCode = e.keyCode;\n });\n addListener(el, \"keypress\", function(e) {\n return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\n });\n } else {\n var lastDefaultPrevented = null;\n\n addListener(el, \"keydown\", function(e) {\n pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n });\n\n addListener(el, \"keypress\", function(e) {\n if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n exports.stopEvent(e);\n lastDefaultPrevented = null;\n }\n });\n\n addListener(el, \"keyup\", function(e) {\n pressedKeys[e.keyCode] = null;\n });\n\n if (!pressedKeys) {\n resetPressedKeys();\n addListener(window, \"focus\", resetPressedKeys);\n }\n }\n};\nfunction resetPressedKeys() {\n pressedKeys = Object.create(null);\n}\n\nif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\n var postMessageId = 1;\n exports.nextTick = function(callback, win) {\n win = win || window;\n var messageName = \"zero-timeout-message-\" + postMessageId;\n exports.addListener(win, \"message\", function listener(e) {\n if (e.data == messageName) {\n exports.stopPropagation(e);\n exports.removeListener(win, \"message\", listener);\n callback();\n }\n });\n win.postMessage(messageName, \"*\");\n };\n}\n\n\nexports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || window.oRequestAnimationFrame);\n\nif (exports.nextFrame)\n exports.nextFrame = exports.nextFrame.bind(window);\nelse\n exports.nextFrame = function(callback) {\n setTimeout(callback, 17);\n };\n});\n\nace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nexports.last = function(a) {\n return a[a.length - 1];\n};\n\nexports.stringReverse = function(string) {\n return string.split(\"\").reverse().join(\"\");\n};\n\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n\n if (count >>= 1)\n string += string;\n }\n return result;\n};\n\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\n\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\n\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\n\nexports.copyObject = function(obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\n\nexports.copyArray = function(array){\n var copy = [];\n for (var i=0, l=array.length; i PLACEHOLDER.length)\n data = data.substr(9);\n else if (data.substr(0, 4) == PLACEHOLDER.substr(0, 4))\n data = data.substr(4, data.length - PLACEHOLDER.length + 1);\n else if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0))\n data = data.slice(0, -1);\n if (data == PLACEHOLDER.charAt(0)) {\n } else if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0))\n data = data.slice(0, -1);\n\n if (data)\n host.onTextInput(data);\n }\n if (copied) {\n copied = false;\n }\n if (afterContextMenu)\n afterContextMenu = false;\n };\n var onInput = function(e) {\n if (inComposition)\n return;\n var data = text.value;\n sendText(data);\n resetValue();\n };\n\n var handleClipboardData = function(e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n } else {\n return clipboardData.getData(mime);\n }\n } catch(e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n\n var doCopy = function(e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n\n if (handleClipboardData(e, data)) {\n if (useragent.isIOS) {\n cut = isCut;\n text.value = \"\\n aa\" + data + \"a a\\n\";\n text.setSelectionRange(4, 4 + data.length);\n copied = {\n value: data\n };\n }\n isCut ? host.onCut() : host.onCopy();\n if (!useragent.isIOS) event.preventDefault(e);\n } else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function(){\n copied = false;\n resetValue();\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n\n var onCut = function(e) {\n doCopy(e, true);\n };\n\n var onCopy = function(e) {\n doCopy(e, false);\n };\n\n var onPaste = function(e) {\n var data = handleClipboardData(e);\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n\n event.addCommandKeyListener(text, host.onCommandKey.bind(host));\n\n event.addListener(text, \"select\", onSelect);\n\n event.addListener(text, \"input\", onInput);\n\n event.addListener(text, \"cut\", onCut);\n event.addListener(text, \"copy\", onCopy);\n event.addListener(text, \"paste\", onPaste);\n var onCompositionStart = function(e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly)\n return;\n inComposition = {};\n inComposition.canUndo = host.session.$undoManager;\n host.onCompositionStart();\n setTimeout(onCompositionUpdate, 0);\n host.on(\"mousedown\", onCompositionEnd);\n if (inComposition.canUndo && !host.selection.isEmpty()) {\n host.insert(\"\");\n host.session.markUndoGroup();\n host.selection.clearSelection();\n }\n host.session.markUndoGroup();\n };\n\n var onCompositionUpdate = function() {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n var val = text.value.replace(/\\x01/g, \"\");\n if (inComposition.lastValue === val) return;\n\n host.onCompositionUpdate(val);\n if (inComposition.lastValue)\n host.undo();\n if (inComposition.canUndo)\n inComposition.lastValue = val;\n if (inComposition.lastValue) {\n var r = host.selection.getRange();\n host.insert(inComposition.lastValue);\n host.session.markUndoGroup();\n inComposition.range = host.selection.getRange();\n host.selection.setRange(r);\n host.selection.clearSelection();\n }\n };\n\n var onCompositionEnd = function(e) {\n if (!host.onCompositionEnd || host.$readOnly) return;\n var c = inComposition;\n inComposition = false;\n var timer = setTimeout(function() {\n timer = null;\n var str = text.value.replace(/\\x01/g, \"\");\n if (inComposition)\n return;\n else if (str == c.lastValue)\n resetValue();\n else if (!c.lastValue && str) {\n resetValue();\n sendText(str);\n }\n });\n inputHandler = function compositionInputHandler(str) {\n if (timer)\n clearTimeout(timer);\n str = str.replace(/\\x01/g, \"\");\n if (str == c.lastValue)\n return \"\";\n if (c.lastValue && timer)\n host.undo();\n return str;\n };\n host.onCompositionEnd();\n host.removeListener(\"mousedown\", onCompositionEnd);\n if (e.type == \"compositionend\" && c.range) {\n host.selection.setRange(c.range);\n }\n var needsOnInput =\n (!!useragent.isChrome && useragent.isChrome >= 53) ||\n (!!useragent.isWebKit && useragent.isWebKit >= 603);\n\n if (needsOnInput) {\n onInput();\n }\n };\n\n\n\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50);\n\n event.addListener(text, \"compositionstart\", onCompositionStart);\n if (useragent.isGecko) {\n event.addListener(text, \"text\", function(){syncComposition.schedule();});\n } else {\n event.addListener(text, \"keyup\", function(){syncComposition.schedule();});\n event.addListener(text, \"keydown\", function(){syncComposition.schedule();});\n }\n event.addListener(text, \"compositionend\", onCompositionEnd);\n\n this.getElement = function() {\n return text;\n };\n\n this.setReadOnly = function(readOnly) {\n text.readOnly = readOnly;\n };\n\n this.onContextMenu = function(e) {\n afterContextMenu = true;\n resetSelection(host.selection.isEmpty());\n host._emit(\"nativecontextmenu\", {target: host, domEvent: e});\n this.moveToMouse(e, true);\n };\n\n this.moveToMouse = function(e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + \"height:\" + text.style.height + \";\"\n + (useragent.isIE ? \"opacity:0.1;\" : \"\");\n\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight -2;\n var move = function(e) {\n text.style.left = e.clientX - left - 2 + \"px\";\n text.style.top = Math.min(e.clientY - top - 2, maxTop) + \"px\";\n };\n move(e);\n\n if (e.type != \"mousedown\")\n return;\n\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$keepTextAreaAtCursor = null;\n\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n if (host.renderer.$keepTextAreaAtCursor == null) {\n host.renderer.$keepTextAreaAtCursor = true;\n host.renderer.$moveTextAreaToCursor();\n }\n }, 0);\n }\n\n var onContextMenu = function(e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu);\n event.addListener(text, \"mousedown\", function(e) {\n e.preventDefault();\n onContextMenuClose();\n });\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu);\n event.addListener(text, \"contextmenu\", onContextMenu);\n\n if (useragent.isIOS) {\n var typingResetTimeout = null;\n var typing = false;\n\n parentNode.addEventListener(\"keydown\", function (e) {\n if (typingResetTimeout) clearTimeout(typingResetTimeout);\n typing = true;\n });\n\n parentNode.addEventListener(\"keyup\", function (e) {\n typingResetTimeout = setTimeout(function () {\n typing = false;\n }, 100);\n });\n var detectArrowKeys = function(e) {\n if (document.activeElement !== text) return;\n if (typing) return;\n\n if (cut) {\n return setTimeout(function () {\n cut = false;\n }, 100);\n }\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n text.setSelectionRange(4, 5);\n if (selectionStart == selectionEnd) {\n switch (selectionStart) {\n case 0: host.onCommandKey(null, 0, KEYS.up); break;\n case 1: host.onCommandKey(null, 0, KEYS.home); break;\n case 2: host.onCommandKey(null, MODS.option, KEYS.left); break;\n case 4: host.onCommandKey(null, 0, KEYS.left); break;\n case 5: host.onCommandKey(null, 0, KEYS.right); break;\n case 7: host.onCommandKey(null, MODS.option, KEYS.right); break;\n case 8: host.onCommandKey(null, 0, KEYS.end); break;\n case 9: host.onCommandKey(null, 0, KEYS.down); break;\n }\n } else {\n switch (selectionEnd) {\n case 6: host.onCommandKey(null, MODS.shift, KEYS.right); break;\n case 7: host.onCommandKey(null, MODS.shift | MODS.option, KEYS.right); break;\n case 8: host.onCommandKey(null, MODS.shift, KEYS.end); break;\n case 9: host.onCommandKey(null, MODS.shift, KEYS.down); break;\n }\n switch (selectionStart) {\n case 0: host.onCommandKey(null, MODS.shift, KEYS.up); break;\n case 1: host.onCommandKey(null, MODS.shift, KEYS.home); break;\n case 2: host.onCommandKey(null, MODS.shift | MODS.option, KEYS.left); break;\n case 3: host.onCommandKey(null, MODS.shift, KEYS.left); break;\n }\n }\n };\n document.addEventListener(\"selectionchange\", detectArrowKeys);\n host.on(\"destroy\", function() {\n document.removeEventListener(\"selectionchange\", detectArrowKeys);\n });\n }\n};\n\nexports.TextInput = TextInput;\n});\n\nace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/keyboard/textinput_ios\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar event = acequire(\"../lib/event\");\nvar useragent = acequire(\"../lib/useragent\");\nvar dom = acequire(\"../lib/dom\");\nvar lang = acequire(\"../lib/lang\");\nvar BROKEN_SETDATA = useragent.isChrome < 18;\nvar USE_IE_MIME_TYPE = useragent.isIE;\n\nvar TextInputIOS = acequire(\"./textinput_ios\").TextInput;\nvar TextInput = function(parentNode, host) {\n if (useragent.isIOS)\n return TextInputIOS.call(this, parentNode, host);\n\n var text = dom.createElement(\"textarea\");\n text.className = \"ace_text-input\";\n\n text.setAttribute(\"wrap\", \"off\");\n text.setAttribute(\"autocorrect\", \"off\");\n text.setAttribute(\"autocapitalize\", \"off\");\n text.setAttribute(\"spellcheck\", false);\n\n text.style.opacity = \"0\";\n parentNode.insertBefore(text, parentNode.firstChild);\n\n var PLACEHOLDER = \"\\u2028\\u2028\";\n\n var copied = false;\n var pasted = false;\n var inComposition = false;\n var tempStyle = '';\n var isSelectionEmpty = true;\n try { var isFocused = document.activeElement === text; } catch(e) {}\n \n event.addListener(text, \"blur\", function(e) {\n host.onBlur(e);\n isFocused = false;\n });\n event.addListener(text, \"focus\", function(e) {\n isFocused = true;\n host.onFocus(e);\n resetSelection();\n });\n this.focus = function() {\n if (tempStyle) return text.focus();\n var top = text.style.top;\n text.style.position = \"fixed\";\n text.style.top = \"0px\";\n text.focus();\n setTimeout(function() {\n text.style.position = \"\";\n if (text.style.top == \"0px\")\n text.style.top = top;\n }, 0);\n };\n this.blur = function() {\n text.blur();\n };\n this.isFocused = function() {\n return isFocused;\n };\n var syncSelection = lang.delayedCall(function() {\n isFocused && resetSelection(isSelectionEmpty);\n });\n var syncValue = lang.delayedCall(function() {\n if (!inComposition) {\n text.value = PLACEHOLDER;\n isFocused && resetSelection();\n }\n });\n\n function resetSelection(isEmpty) {\n if (inComposition)\n return;\n inComposition = true;\n \n if (inputHandler) {\n var selectionStart = 0;\n var selectionEnd = isEmpty ? 0 : text.value.length - 1;\n } else {\n var selectionStart = isEmpty ? 2 : 1;\n var selectionEnd = 2;\n }\n try {\n text.setSelectionRange(selectionStart, selectionEnd);\n } catch(e){}\n \n inComposition = false;\n }\n\n function resetValue() {\n if (inComposition)\n return;\n text.value = PLACEHOLDER;\n if (useragent.isWebKit)\n syncValue.schedule();\n }\n\n useragent.isWebKit || host.addEventListener('changeSelection', function() {\n if (host.selection.isEmpty() != isSelectionEmpty) {\n isSelectionEmpty = !isSelectionEmpty;\n syncSelection.schedule();\n }\n });\n\n resetValue();\n if (isFocused)\n host.onFocus();\n\n\n var isAllSelected = function(text) {\n return text.selectionStart === 0 && text.selectionEnd === text.value.length;\n };\n\n var onSelect = function(e) {\n if (copied) {\n copied = false;\n } else if (isAllSelected(text)) {\n host.selectAll();\n resetSelection();\n } else if (inputHandler) {\n resetSelection(host.selection.isEmpty());\n }\n };\n\n var inputHandler = null;\n this.setInputHandler = function(cb) {inputHandler = cb;};\n this.getInputHandler = function() {return inputHandler;};\n var afterContextMenu = false;\n \n var sendText = function(data) {\n if (inputHandler) {\n data = inputHandler(data);\n inputHandler = null;\n }\n if (pasted) {\n resetSelection();\n if (data)\n host.onPaste(data);\n pasted = false;\n } else if (data == PLACEHOLDER.charAt(0)) {\n if (afterContextMenu)\n host.execCommand(\"del\", {source: \"ace\"});\n else // some versions of android do not fire keydown when pressing backspace\n host.execCommand(\"backspace\", {source: \"ace\"});\n } else {\n if (data.substring(0, 2) == PLACEHOLDER)\n data = data.substr(2);\n else if (data.charAt(0) == PLACEHOLDER.charAt(0))\n data = data.substr(1);\n else if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0))\n data = data.slice(0, -1);\n if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0))\n data = data.slice(0, -1);\n \n if (data)\n host.onTextInput(data);\n }\n if (afterContextMenu)\n afterContextMenu = false;\n };\n var onInput = function(e) {\n if (inComposition)\n return;\n var data = text.value;\n sendText(data);\n resetValue();\n };\n \n var handleClipboardData = function(e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n } else {\n return clipboardData.getData(mime);\n }\n } catch(e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n\n var doCopy = function(e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n\n if (handleClipboardData(e, data)) {\n isCut ? host.onCut() : host.onCopy();\n event.preventDefault(e);\n } else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function(){\n copied = false;\n resetValue();\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n \n var onCut = function(e) {\n doCopy(e, true);\n };\n \n var onCopy = function(e) {\n doCopy(e, false);\n };\n \n var onPaste = function(e) {\n var data = handleClipboardData(e);\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n\n event.addCommandKeyListener(text, host.onCommandKey.bind(host));\n\n event.addListener(text, \"select\", onSelect);\n\n event.addListener(text, \"input\", onInput);\n\n event.addListener(text, \"cut\", onCut);\n event.addListener(text, \"copy\", onCopy);\n event.addListener(text, \"paste\", onPaste);\n if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {\n event.addListener(parentNode, \"keydown\", function(e) {\n if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)\n return;\n\n switch (e.keyCode) {\n case 67:\n onCopy(e);\n break;\n case 86:\n onPaste(e);\n break;\n case 88:\n onCut(e);\n break;\n }\n });\n }\n var onCompositionStart = function(e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly) \n return;\n inComposition = {};\n inComposition.canUndo = host.session.$undoManager;\n host.onCompositionStart();\n setTimeout(onCompositionUpdate, 0);\n host.on(\"mousedown\", onCompositionEnd);\n if (inComposition.canUndo && !host.selection.isEmpty()) {\n host.insert(\"\");\n host.session.markUndoGroup();\n host.selection.clearSelection();\n }\n host.session.markUndoGroup();\n };\n\n var onCompositionUpdate = function() {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n var val = text.value.replace(/\\u2028/g, \"\");\n if (inComposition.lastValue === val) return;\n \n host.onCompositionUpdate(val);\n if (inComposition.lastValue)\n host.undo();\n if (inComposition.canUndo)\n inComposition.lastValue = val;\n if (inComposition.lastValue) {\n var r = host.selection.getRange();\n host.insert(inComposition.lastValue);\n host.session.markUndoGroup();\n inComposition.range = host.selection.getRange();\n host.selection.setRange(r);\n host.selection.clearSelection();\n }\n };\n\n var onCompositionEnd = function(e) {\n if (!host.onCompositionEnd || host.$readOnly) return;\n var c = inComposition;\n inComposition = false;\n var timer = setTimeout(function() {\n timer = null;\n var str = text.value.replace(/\\u2028/g, \"\");\n if (inComposition)\n return;\n else if (str == c.lastValue)\n resetValue();\n else if (!c.lastValue && str) {\n resetValue();\n sendText(str);\n }\n });\n inputHandler = function compositionInputHandler(str) {\n if (timer)\n clearTimeout(timer);\n str = str.replace(/\\u2028/g, \"\");\n if (str == c.lastValue)\n return \"\";\n if (c.lastValue && timer)\n host.undo();\n return str;\n };\n host.onCompositionEnd();\n host.removeListener(\"mousedown\", onCompositionEnd);\n if (e.type == \"compositionend\" && c.range) {\n host.selection.setRange(c.range);\n }\n var needsOnInput =\n (!!useragent.isChrome && useragent.isChrome >= 53) ||\n (!!useragent.isWebKit && useragent.isWebKit >= 603);\n\n if (needsOnInput) {\n onInput();\n }\n };\n \n \n\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50);\n\n event.addListener(text, \"compositionstart\", onCompositionStart);\n if (useragent.isGecko) {\n event.addListener(text, \"text\", function(){syncComposition.schedule();});\n } else {\n event.addListener(text, \"keyup\", function(){syncComposition.schedule();});\n event.addListener(text, \"keydown\", function(){syncComposition.schedule();});\n }\n event.addListener(text, \"compositionend\", onCompositionEnd);\n\n this.getElement = function() {\n return text;\n };\n\n this.setReadOnly = function(readOnly) {\n text.readOnly = readOnly;\n };\n\n this.onContextMenu = function(e) {\n afterContextMenu = true;\n resetSelection(host.selection.isEmpty());\n host._emit(\"nativecontextmenu\", {target: host, domEvent: e});\n this.moveToMouse(e, true);\n };\n \n this.moveToMouse = function(e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + \"height:\" + text.style.height + \";\"\n + (useragent.isIE ? \"opacity:0.1;\" : \"\");\n\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight -2;\n var move = function(e) {\n text.style.left = e.clientX - left - 2 + \"px\";\n text.style.top = Math.min(e.clientY - top - 2, maxTop) + \"px\";\n }; \n move(e);\n\n if (e.type != \"mousedown\")\n return;\n\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$keepTextAreaAtCursor = null;\n\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n if (host.renderer.$keepTextAreaAtCursor == null) {\n host.renderer.$keepTextAreaAtCursor = true;\n host.renderer.$moveTextAreaToCursor();\n }\n }, 0);\n }\n\n var onContextMenu = function(e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu);\n event.addListener(text, \"mousedown\", function(e) {\n e.preventDefault();\n onContextMenuClose();\n });\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu);\n event.addListener(text, \"contextmenu\", onContextMenu);\n};\n\nexports.TextInput = TextInput;\n});\n\nace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar dom = acequire(\"../lib/dom\");\nvar event = acequire(\"../lib/event\");\nvar useragent = acequire(\"../lib/useragent\");\n\nvar DRAG_OFFSET = 0; // pixels\nvar SCROLL_COOLDOWN_T = 250; // milliseconds\n\nfunction DefaultHandlers(mouseHandler) {\n mouseHandler.$clickSelection = null;\n\n var editor = mouseHandler.editor;\n editor.setDefaultHandler(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n editor.setDefaultHandler(\"dblclick\", this.onDoubleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"tripleclick\", this.onTripleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"quadclick\", this.onQuadClick.bind(mouseHandler));\n editor.setDefaultHandler(\"mousewheel\", this.onMouseWheel.bind(mouseHandler));\n editor.setDefaultHandler(\"touchmove\", this.onTouchMove.bind(mouseHandler));\n\n var exports = [\"select\", \"startSelect\", \"selectEnd\", \"selectAllEnd\", \"selectByWordsEnd\",\n \"selectByLinesEnd\", \"dragWait\", \"dragWaitEnd\", \"focusWait\"];\n\n exports.forEach(function(x) {\n mouseHandler[x] = this[x];\n }, this);\n\n mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, \"getLineRange\");\n mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, \"getWordRange\");\n}\n\n(function() {\n\n this.onMouseDown = function(ev) {\n var inSelection = ev.inSelection();\n var pos = ev.getDocumentPosition();\n this.mousedownEvent = ev;\n var editor = this.editor;\n\n var button = ev.getButton();\n if (button !== 0) {\n var selectionRange = editor.getSelectionRange();\n var selectionEmpty = selectionRange.isEmpty();\n editor.$blockScrolling++;\n if (selectionEmpty || button == 1)\n editor.selection.moveToPosition(pos);\n editor.$blockScrolling--;\n if (button == 2) {\n editor.textInput.onContextMenu(ev.domEvent);\n if (!useragent.isMozilla)\n ev.preventDefault();\n }\n return;\n }\n\n this.mousedownEvent.time = Date.now();\n if (inSelection && !editor.isFocused()) {\n editor.focus();\n if (this.$focusTimout && !this.$clickSelection && !editor.inMultiSelectMode) {\n this.setState(\"focusWait\");\n this.captureMouse(ev);\n return;\n }\n }\n\n this.captureMouse(ev);\n this.startSelect(pos, ev.domEvent._clicks > 1);\n return ev.preventDefault();\n };\n\n this.startSelect = function(pos, waitForClickSelection) {\n pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n var editor = this.editor;\n editor.$blockScrolling++;\n if (this.mousedownEvent.getShiftKey())\n editor.selection.selectToPosition(pos);\n else if (!waitForClickSelection)\n editor.selection.moveToPosition(pos);\n if (!waitForClickSelection)\n this.select();\n if (editor.renderer.scroller.setCapture) {\n editor.renderer.scroller.setCapture();\n }\n editor.setStyle(\"ace_selecting\");\n this.setState(\"select\");\n editor.$blockScrolling--;\n };\n\n this.select = function() {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n editor.$blockScrolling++;\n if (this.$clickSelection) {\n var cmp = this.$clickSelection.comparePoint(cursor);\n\n if (cmp == -1) {\n anchor = this.$clickSelection.end;\n } else if (cmp == 1) {\n anchor = this.$clickSelection.start;\n } else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.$blockScrolling--;\n editor.renderer.scrollCursorIntoView();\n };\n\n this.extendSelectionBy = function(unitName) {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n var range = editor.selection[unitName](cursor.row, cursor.column);\n editor.$blockScrolling++;\n if (this.$clickSelection) {\n var cmpStart = this.$clickSelection.comparePoint(range.start);\n var cmpEnd = this.$clickSelection.comparePoint(range.end);\n\n if (cmpStart == -1 && cmpEnd <= 0) {\n anchor = this.$clickSelection.end;\n if (range.end.row != cursor.row || range.end.column != cursor.column)\n cursor = range.start;\n } else if (cmpEnd == 1 && cmpStart >= 0) {\n anchor = this.$clickSelection.start;\n if (range.start.row != cursor.row || range.start.column != cursor.column)\n cursor = range.end;\n } else if (cmpStart == -1 && cmpEnd == 1) {\n cursor = range.end;\n anchor = range.start;\n } else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.$blockScrolling--;\n editor.renderer.scrollCursorIntoView();\n };\n\n this.selectEnd =\n this.selectAllEnd =\n this.selectByWordsEnd =\n this.selectByLinesEnd = function() {\n this.$clickSelection = null;\n this.editor.unsetStyle(\"ace_selecting\");\n if (this.editor.renderer.scroller.releaseCapture) {\n this.editor.renderer.scroller.releaseCapture();\n }\n };\n\n this.focusWait = function() {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n var time = Date.now();\n\n if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimout)\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n };\n\n this.onDoubleClick = function(ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n var session = editor.session;\n\n var range = session.getBracketRange(pos);\n if (range) {\n if (range.isEmpty()) {\n range.start.column--;\n range.end.column++;\n }\n this.setState(\"select\");\n } else {\n range = editor.selection.getWordRange(pos.row, pos.column);\n this.setState(\"selectByWords\");\n }\n this.$clickSelection = range;\n this.select();\n };\n\n this.onTripleClick = function(ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n\n this.setState(\"selectByLines\");\n var range = editor.getSelectionRange();\n if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n this.$clickSelection = editor.selection.getLineRange(range.start.row);\n this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n } else {\n this.$clickSelection = editor.selection.getLineRange(pos.row);\n }\n this.select();\n };\n\n this.onQuadClick = function(ev) {\n var editor = this.editor;\n\n editor.selectAll();\n this.$clickSelection = editor.getSelectionRange();\n this.setState(\"selectAll\");\n };\n\n this.onMouseWheel = function(ev) {\n if (ev.getAccelKey())\n return;\n if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n ev.wheelX = ev.wheelY;\n ev.wheelY = 0;\n }\n \n var editor = this.editor;\n\n if (!this.$lastScroll)\n this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };\n\n var prevScroll = this.$lastScroll;\n var t = ev.domEvent.timeStamp;\n var dt = t - prevScroll.t;\n var vx = ev.wheelX / dt;\n var vy = ev.wheelY / dt;\n if (dt < SCROLL_COOLDOWN_T) {\n vx = (vx + prevScroll.vx) / 2;\n vy = (vy + prevScroll.vy) / 2;\n }\n\n var direction = Math.abs(vx / vy);\n\n var canScroll = false;\n if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))\n canScroll = true;\n if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))\n canScroll = true;\n\n if (canScroll) {\n prevScroll.allowed = t;\n } else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {\n var isSlower = Math.abs(vx) <= 1.1 * Math.abs(prevScroll.vx)\n && Math.abs(vy) <= 1.1 * Math.abs(prevScroll.vy);\n if (isSlower) {\n canScroll = true;\n prevScroll.allowed = t;\n }\n else {\n prevScroll.allowed = 0;\n }\n }\n\n prevScroll.t = t;\n prevScroll.vx = vx;\n prevScroll.vy = vy;\n\n if (canScroll) {\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n\n this.onTouchMove = function(ev) {\n this.editor._emit(\"mousewheel\", ev);\n };\n\n}).call(DefaultHandlers.prototype);\n\nexports.DefaultHandlers = DefaultHandlers;\n\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\n\nfunction calcRangeOrientation(range, cursor) {\n if (range.start.row == range.end.row)\n var cmp = 2 * cursor.column - range.start.column - range.end.column;\n else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n var cmp = cursor.column - 4;\n else\n var cmp = 2 * cursor.row - range.start.row - range.end.row;\n\n if (cmp < 0)\n return {cursor: range.start, anchor: range.end};\n else\n return {cursor: range.end, anchor: range.start};\n}\n\n});\n\nace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar dom = acequire(\"./lib/dom\");\nfunction Tooltip (parentNode) {\n this.isOpen = false;\n this.$element = null;\n this.$parentNode = parentNode;\n}\n\n(function() {\n this.$init = function() {\n this.$element = dom.createElement(\"div\");\n this.$element.className = \"ace_tooltip\";\n this.$element.style.display = \"none\";\n this.$parentNode.appendChild(this.$element);\n return this.$element;\n };\n this.getElement = function() {\n return this.$element || this.$init();\n };\n this.setText = function(text) {\n dom.setInnerText(this.getElement(), text);\n };\n this.setHtml = function(html) {\n this.getElement().innerHTML = html;\n };\n this.setPosition = function(x, y) {\n this.getElement().style.left = x + \"px\";\n this.getElement().style.top = y + \"px\";\n };\n this.setClassName = function(className) {\n dom.addCssClass(this.getElement(), className);\n };\n this.show = function(text, x, y) {\n if (text != null)\n this.setText(text);\n if (x != null && y != null)\n this.setPosition(x, y);\n if (!this.isOpen) {\n this.getElement().style.display = \"block\";\n this.isOpen = true;\n }\n };\n\n this.hide = function() {\n if (this.isOpen) {\n this.getElement().style.display = \"none\";\n this.isOpen = false;\n }\n };\n this.getHeight = function() {\n return this.getElement().offsetHeight;\n };\n this.getWidth = function() {\n return this.getElement().offsetWidth;\n };\n\n this.destroy = function() {\n this.isOpen = false;\n if (this.$element && this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n };\n\n}).call(Tooltip.prototype);\n\nexports.Tooltip = Tooltip;\n});\n\nace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event\",\"ace/tooltip\"], function(acequire, exports, module) {\n\"use strict\";\nvar dom = acequire(\"../lib/dom\");\nvar oop = acequire(\"../lib/oop\");\nvar event = acequire(\"../lib/event\");\nvar Tooltip = acequire(\"../tooltip\").Tooltip;\n\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n var tooltip = new GutterTooltip(editor.container);\n\n mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function(e) {\n if (!editor.isFocused() || e.getButton() != 0)\n return;\n var gutterRegion = gutter.getRegion(e);\n\n if (gutterRegion == \"foldWidgets\")\n return;\n\n var row = e.getDocumentPosition().row;\n var selection = editor.session.selection;\n\n if (e.getShiftKey())\n selection.selectTo(row, 0);\n else {\n if (e.domEvent.detail == 2) {\n editor.selectAll();\n return e.preventDefault();\n }\n mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n }\n mouseHandler.setState(\"selectByLines\");\n mouseHandler.captureMouse(e);\n return e.preventDefault();\n });\n\n\n var tooltipTimeout, mouseEvent, tooltipAnnotation;\n\n function showTooltip() {\n var row = mouseEvent.getDocumentPosition().row;\n var annotation = gutter.$annotations[row];\n if (!annotation)\n return hideTooltip();\n\n var maxRow = editor.session.getLength();\n if (row == maxRow) {\n var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n var pos = mouseEvent.$pos;\n if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n return hideTooltip();\n }\n\n if (tooltipAnnotation == annotation)\n return;\n tooltipAnnotation = annotation.text.join(\"
\");\n\n tooltip.setHtml(tooltipAnnotation);\n tooltip.show();\n editor._signal(\"showGutterTooltip\", tooltip);\n editor.on(\"mousewheel\", hideTooltip);\n\n if (mouseHandler.$tooltipFollowsMouse) {\n moveTooltip(mouseEvent);\n } else {\n var gutterElement = mouseEvent.domEvent.target;\n var rect = gutterElement.getBoundingClientRect();\n var style = tooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n }\n }\n\n function hideTooltip() {\n if (tooltipTimeout)\n tooltipTimeout = clearTimeout(tooltipTimeout);\n if (tooltipAnnotation) {\n tooltip.hide();\n tooltipAnnotation = null;\n editor._signal(\"hideGutterTooltip\", tooltip);\n editor.removeEventListener(\"mousewheel\", hideTooltip);\n }\n }\n\n function moveTooltip(e) {\n tooltip.setPosition(e.x, e.y);\n }\n\n mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function(e) {\n var target = e.domEvent.target || e.domEvent.srcElement;\n if (dom.hasCssClass(target, \"ace_fold-widget\"))\n return hideTooltip();\n\n if (tooltipAnnotation && mouseHandler.$tooltipFollowsMouse)\n moveTooltip(e);\n\n mouseEvent = e;\n if (tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function() {\n tooltipTimeout = null;\n if (mouseEvent && !mouseHandler.isMousePressed)\n showTooltip();\n else\n hideTooltip();\n }, 50);\n });\n\n event.addListener(editor.renderer.$gutter, \"mouseout\", function(e) {\n mouseEvent = null;\n if (!tooltipAnnotation || tooltipTimeout)\n return;\n\n tooltipTimeout = setTimeout(function() {\n tooltipTimeout = null;\n hideTooltip();\n }, 50);\n });\n \n editor.on(\"changeSession\", hideTooltip);\n}\n\nfunction GutterTooltip(parentNode) {\n Tooltip.call(this, parentNode);\n}\n\noop.inherits(GutterTooltip, Tooltip);\n\n(function(){\n this.setPosition = function(x, y) {\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n var width = this.getWidth();\n var height = this.getHeight();\n x += 15;\n y += 15;\n if (x + width > windowWidth) {\n x -= (x + width) - windowWidth;\n }\n if (y + height > windowHeight) {\n y -= 20 + height;\n }\n Tooltip.prototype.setPosition.call(this, x, y);\n };\n\n}).call(GutterTooltip.prototype);\n\n\n\nexports.GutterHandler = GutterHandler;\n\n});\n\nace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar event = acequire(\"../lib/event\");\nvar useragent = acequire(\"../lib/useragent\");\nvar MouseEvent = exports.MouseEvent = function(domEvent, editor) {\n this.domEvent = domEvent;\n this.editor = editor;\n \n this.x = this.clientX = domEvent.clientX;\n this.y = this.clientY = domEvent.clientY;\n\n this.$pos = null;\n this.$inSelection = null;\n \n this.propagationStopped = false;\n this.defaultPrevented = false;\n};\n\n(function() { \n \n this.stopPropagation = function() {\n event.stopPropagation(this.domEvent);\n this.propagationStopped = true;\n };\n \n this.preventDefault = function() {\n event.preventDefault(this.domEvent);\n this.defaultPrevented = true;\n };\n \n this.stop = function() {\n this.stopPropagation();\n this.preventDefault();\n };\n this.getDocumentPosition = function() {\n if (this.$pos)\n return this.$pos;\n \n this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n return this.$pos;\n };\n this.inSelection = function() {\n if (this.$inSelection !== null)\n return this.$inSelection;\n \n var editor = this.editor;\n \n\n var selectionRange = editor.getSelectionRange();\n if (selectionRange.isEmpty())\n this.$inSelection = false;\n else {\n var pos = this.getDocumentPosition();\n this.$inSelection = selectionRange.contains(pos.row, pos.column);\n }\n\n return this.$inSelection;\n };\n this.getButton = function() {\n return event.getButton(this.domEvent);\n };\n this.getShiftKey = function() {\n return this.domEvent.shiftKey;\n };\n \n this.getAccelKey = useragent.isMac\n ? function() { return this.domEvent.metaKey; }\n : function() { return this.domEvent.ctrlKey; };\n \n}).call(MouseEvent.prototype);\n\n});\n\nace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar dom = acequire(\"../lib/dom\");\nvar event = acequire(\"../lib/event\");\nvar useragent = acequire(\"../lib/useragent\");\n\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\n\nfunction DragdropHandler(mouseHandler) {\n\n var editor = mouseHandler.editor;\n\n var blankImage = dom.createElement(\"img\");\n blankImage.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (useragent.isOpera)\n blankImage.style.cssText = \"width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;\";\n\n var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\n\n exports.forEach(function(x) {\n mouseHandler[x] = this[x];\n }, this);\n editor.addEventListener(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n\n\n var mouseTarget = editor.container;\n var dragSelectionMarker, x, y;\n var timerId, range;\n var dragCursor, counter = 0;\n var dragOperation;\n var isInternal;\n var autoScrollStartTime;\n var cursorMovedTime;\n var cursorPointOnCaretMoved;\n\n this.onDragStart = function(e) {\n if (this.cancelDrag || !mouseTarget.draggable) {\n var self = this;\n setTimeout(function(){\n self.startSelect();\n self.captureMouse(e);\n }, 0);\n return e.preventDefault();\n }\n range = editor.getSelectionRange();\n\n var dataTransfer = e.dataTransfer;\n dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\n if (useragent.isOpera) {\n editor.container.appendChild(blankImage);\n blankImage.scrollTop = 0;\n }\n dataTransfer.setDragImage && dataTransfer.setDragImage(blankImage, 0, 0);\n if (useragent.isOpera) {\n editor.container.removeChild(blankImage);\n }\n dataTransfer.clearData();\n dataTransfer.setData(\"Text\", editor.session.getTextRange());\n\n isInternal = true;\n this.setState(\"drag\");\n };\n\n this.onDragEnd = function(e) {\n mouseTarget.draggable = false;\n isInternal = false;\n this.setState(null);\n if (!editor.getReadOnly()) {\n var dropEffect = e.dataTransfer.dropEffect;\n if (!dragOperation && dropEffect == \"move\")\n editor.session.remove(editor.getSelectionRange());\n editor.renderer.$cursorLayer.setBlinking(true);\n }\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n };\n\n this.onDragEnter = function(e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker)\n addDragMarker();\n counter++;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n\n this.onDragOver = function(e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker) {\n addDragMarker();\n counter++;\n }\n if (onMouseMoveTimer !== null)\n onMouseMoveTimer = null;\n\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n\n this.onDragLeave = function(e) {\n counter--;\n if (counter <= 0 && dragSelectionMarker) {\n clearDragMarker();\n dragOperation = null;\n return event.preventDefault(e);\n }\n };\n\n this.onDrop = function(e) {\n if (!dragCursor)\n return;\n var dataTransfer = e.dataTransfer;\n if (isInternal) {\n switch (dragOperation) {\n case \"move\":\n if (range.contains(dragCursor.row, dragCursor.column)) {\n range = {\n start: dragCursor,\n end: dragCursor\n };\n } else {\n range = editor.moveText(range, dragCursor);\n }\n break;\n case \"copy\":\n range = editor.moveText(range, dragCursor, true);\n break;\n }\n } else {\n var dropData = dataTransfer.getData('Text');\n range = {\n start: dragCursor,\n end: editor.session.insert(dragCursor, dropData)\n };\n editor.focus();\n dragOperation = null;\n }\n clearDragMarker();\n return event.preventDefault(e);\n };\n\n event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler));\n event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler));\n event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler));\n event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler));\n event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler));\n event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler));\n\n function scrollCursorIntoView(cursor, prevCursor) {\n var now = Date.now();\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n var hMovement = !prevCursor || cursor.column != prevCursor.column;\n if (!cursorMovedTime || vMovement || hMovement) {\n editor.$blockScrolling += 1;\n editor.moveCursorToPosition(cursor);\n editor.$blockScrolling -= 1;\n cursorMovedTime = now;\n cursorPointOnCaretMoved = {x: x, y: y};\n } else {\n var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n if (distance > SCROLL_CURSOR_HYSTERESIS) {\n cursorMovedTime = null;\n } else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n editor.renderer.scrollCursorIntoView();\n cursorMovedTime = null;\n }\n }\n }\n\n function autoScroll(cursor, prevCursor) {\n var now = Date.now();\n var lineHeight = editor.renderer.layerConfig.lineHeight;\n var characterWidth = editor.renderer.layerConfig.characterWidth;\n var editorRect = editor.renderer.scroller.getBoundingClientRect();\n var offsets = {\n x: {\n left: x - editorRect.left,\n right: editorRect.right - x\n },\n y: {\n top: y - editorRect.top,\n bottom: editorRect.bottom - y\n }\n };\n var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n var scrollCursor = {row: cursor.row, column: cursor.column};\n if (nearestXOffset / characterWidth <= 2) {\n scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n }\n if (nearestYOffset / lineHeight <= 1) {\n scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n }\n var vScroll = cursor.row != scrollCursor.row;\n var hScroll = cursor.column != scrollCursor.column;\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n if (vScroll || (hScroll && !vMovement)) {\n if (!autoScrollStartTime)\n autoScrollStartTime = now;\n else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n editor.renderer.scrollCursorIntoView(scrollCursor);\n } else {\n autoScrollStartTime = null;\n }\n }\n\n function onDragInterval() {\n var prevCursor = dragCursor;\n dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n scrollCursorIntoView(dragCursor, prevCursor);\n autoScroll(dragCursor, prevCursor);\n }\n\n function addDragMarker() {\n range = editor.selection.toOrientedRange();\n dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\n editor.clearSelection();\n if (editor.isFocused())\n editor.renderer.$cursorLayer.setBlinking(false);\n clearInterval(timerId);\n onDragInterval();\n timerId = setInterval(onDragInterval, 20);\n counter = 0;\n event.addListener(document, \"mousemove\", onMouseMove);\n }\n\n function clearDragMarker() {\n clearInterval(timerId);\n editor.session.removeMarker(dragSelectionMarker);\n dragSelectionMarker = null;\n editor.$blockScrolling += 1;\n editor.selection.fromOrientedRange(range);\n editor.$blockScrolling -= 1;\n if (editor.isFocused() && !isInternal)\n editor.renderer.$cursorLayer.setBlinking(!editor.getReadOnly());\n range = null;\n dragCursor = null;\n counter = 0;\n autoScrollStartTime = null;\n cursorMovedTime = null;\n event.removeListener(document, \"mousemove\", onMouseMove);\n }\n var onMouseMoveTimer = null;\n function onMouseMove() {\n if (onMouseMoveTimer == null) {\n onMouseMoveTimer = setTimeout(function() {\n if (onMouseMoveTimer != null && dragSelectionMarker)\n clearDragMarker();\n }, 20);\n }\n }\n\n function canAccept(dataTransfer) {\n var types = dataTransfer.types;\n return !types || Array.prototype.some.call(types, function(type) {\n return type == 'text/plain' || type == 'Text';\n });\n }\n\n function getDropEffect(e) {\n var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\n var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\n\n var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n var effectAllowed = \"uninitialized\";\n try {\n effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n } catch (e) {}\n var dropEffect = \"none\";\n\n if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n else if (moveAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"move\";\n else if (copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n\n return dropEffect;\n }\n}\n\n(function() {\n\n this.dragWait = function() {\n var interval = Date.now() - this.mousedownEvent.time;\n if (interval > this.editor.getDragDelay())\n this.startDrag();\n };\n\n this.dragWaitEnd = function() {\n var target = this.editor.container;\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n this.selectEnd();\n };\n\n this.dragReadyEnd = function(e) {\n this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly());\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n this.dragWaitEnd();\n };\n\n this.startDrag = function(){\n this.cancelDrag = false;\n var editor = this.editor;\n var target = editor.container;\n target.draggable = true;\n editor.renderer.$cursorLayer.setBlinking(false);\n editor.setStyle(\"ace_dragging\");\n var cursorStyle = useragent.isWin ? \"default\" : \"move\";\n editor.renderer.setCursorStyle(cursorStyle);\n this.setState(\"dragReady\");\n };\n\n this.onMouseDrag = function(e) {\n var target = this.editor.container;\n if (useragent.isIE && this.state == \"dragReady\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 3)\n target.dragDrop();\n }\n if (this.state === \"dragWait\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 0) {\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n }\n }\n };\n\n this.onMouseDown = function(e) {\n if (!this.$dragEnabled)\n return;\n this.mousedownEvent = e;\n var editor = this.editor;\n\n var inSelection = e.inSelection();\n var button = e.getButton();\n var clickCount = e.domEvent.detail || 1;\n if (clickCount === 1 && button === 0 && inSelection) {\n if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n return;\n this.mousedownEvent.time = Date.now();\n var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n if (\"unselectable\" in eventTarget)\n eventTarget.unselectable = \"on\";\n if (editor.getDragDelay()) {\n if (useragent.isWebKit) {\n this.cancelDrag = true;\n var mouseTarget = editor.container;\n mouseTarget.draggable = true;\n }\n this.setState(\"dragWait\");\n } else {\n this.startDrag();\n }\n this.captureMouse(e, this.onMouseDrag.bind(this));\n e.defaultPrevented = true;\n }\n };\n\n}).call(DragdropHandler.prototype);\n\n\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\n\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(acequire, exports, module) {\n\"use strict\";\nvar dom = acequire(\"./dom\");\n\nexports.get = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n callback(xhr.responseText);\n }\n };\n xhr.send(null);\n};\n\nexports.loadScript = function(path, callback) {\n var head = dom.getDocumentHead();\n var s = document.createElement('script');\n\n s.src = path;\n head.appendChild(s);\n\n s.onload = s.onreadystatechange = function(_, isAbort) {\n if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\n s = s.onload = s.onreadystatechange = null;\n if (!isAbort)\n callback();\n }\n };\n};\nexports.qualifyURL = function(url) {\n var a = document.createElement('a');\n a.href = url;\n return a.href;\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar EventEmitter = {};\nvar stopPropagation = function() { this.propagationStopped = true; };\nvar preventDefault = function() { this.defaultPrevented = true; };\n\nEventEmitter._emit =\nEventEmitter._dispatchEvent = function(eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n\n if (typeof e != \"object\" || !e)\n e = {};\n\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n\n listeners = listeners.slice();\n for (var i=0; i 1)\n base = parts[parts.length - 2];\n var path = options[component + \"Path\"];\n if (path == null) {\n path = options.basePath;\n } else if (sep == \"/\") {\n component = sep = \"\";\n }\n if (path && path.slice(-1) != \"/\")\n path += \"/\";\n return path + component + sep + base + this.get(\"suffix\");\n};\n\nexports.setModuleUrl = function(name, subst) {\n return options.$moduleUrls[name] = subst;\n};\n\nexports.$loading = {};\nexports.loadModule = function(moduleName, onLoad) {\n var module, moduleType;\n if (Array.isArray(moduleName)) {\n moduleType = moduleName[0];\n moduleName = moduleName[1];\n }\n\n try {\n module = acequire(moduleName);\n } catch (e) {}\n if (module && !exports.$loading[moduleName])\n return onLoad && onLoad(module);\n\n if (!exports.$loading[moduleName])\n exports.$loading[moduleName] = [];\n\n exports.$loading[moduleName].push(onLoad);\n\n if (exports.$loading[moduleName].length > 1)\n return;\n\n var afterLoad = function() {\n acequire([moduleName], function(module) {\n exports._emit(\"load.module\", {name: moduleName, module: module});\n var listeners = exports.$loading[moduleName];\n exports.$loading[moduleName] = null;\n listeners.forEach(function(onLoad) {\n onLoad && onLoad(module);\n });\n });\n };\n\n if (!exports.get(\"packaged\"))\n return afterLoad();\n net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n};\ninit(true);function init(packaged) {\n\n if (!global || !global.document)\n return;\n \n options.packaged = packaged || acequire.packaged || module.packaged || (global.define && define.packaged);\n\n var scriptOptions = {};\n var scriptUrl = \"\";\n var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n var currentDocument = currentScript && currentScript.ownerDocument || document;\n \n var scripts = currentDocument.getElementsByTagName(\"script\");\n for (var i=0; i 0){\n\t\t\tif (action == 0x10){\n\t\t\t\tfor(i = condPos; i < ix; i++){\n\t\t\t\t\tlevels[i] = 1;\n\t\t\t\t}\n\t\t\t\tcondPos = -1;\n\t\t\t} else {\n\t\t\t\tcondPos = -1;\n\t\t\t}\n\t\t}\n\t\tcond = impTab[newState][6];\n\t\tif (cond){\n\t\t\tif(condPos == -1){\n\t\t\t\tcondPos = ix;\n\t\t\t}\n\t\t}else{\n\t\t\tif (condPos > -1){\n\t\t\t\tfor(i = condPos; i < ix; i++){\n\t\t\t\t\tlevels[i] = newLevel;\n\t\t\t\t}\n\t\t\t\tcondPos = -1;\n\t\t\t}\n\t\t}\n\t\tif (charTypes[ix] == B){\n\t\t\tlevels[ix] = 0;\n\t\t}\n\t\thiLevel |= newLevel;\n\t}\n\tif (hasUBAT_S){\n\t\tfor(i = 0; i < len; i++){\n\t\t\tif(charTypes[i] == S){\n\t\t\t\tlevels[i] = dir;\n\t\t\t\tfor(var j = i - 1; j >= 0; j--){\n\t\t\t\t\tif(charTypes[j] == WS){\n\t\t\t\t\t\tlevels[j] = dir;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction _invertLevel(lev, levels, _array) {\n\tif (hiLevel < lev){\n\t\treturn;\n\t}\n\tif (lev == 1 && dir == RTL && !hasUBAT_B){\n\t\t_array.reverse();\n\t\treturn;\n\t}\n\tvar len = _array.length, start = 0, end, lo, hi, tmp;\n\twhile(start < len){\n\t\tif (levels[start] >= lev){\n\t\t\tend = start + 1;\n\t\twhile(end < len && levels[end] >= lev){\n\t\t\tend++;\n\t\t}\n\t\tfor(lo = start, hi = end - 1 ; lo < hi; lo++, hi--){\n\t\t\ttmp = _array[lo];\n\t\t\t_array[lo] = _array[hi];\n\t\t\t_array[hi] = tmp;\n\t\t}\n\t\tstart = end;\n\t}\n\tstart++;\n\t}\n}\n\nfunction _getCharClass(chars, types, classes, ix) {\n\tvar cType = types[ix], wType, nType, len, i;\n\tswitch(cType){\n\t\tcase L:\n\t\tcase R:\n\t\t\tlastArabic = false;\n\t\tcase ON:\n\t\tcase AN:\n\t\t\treturn cType;\n\t\tcase EN:\n\t\t\treturn lastArabic ? AN : EN;\n\t\tcase AL:\n\t\t\tlastArabic = true;\n\t\t\thasUBAT_AL = true;\n\t\t\treturn R;\n\t\tcase WS:\n\t\t\treturn ON;\n\t\tcase CS:\n\t\t\tif (ix < 1 || (ix + 1) >= types.length ||\n\t\t\t\t((wType = classes[ix - 1]) != EN && wType != AN) ||\n\t\t\t\t((nType = types[ix + 1]) != EN && nType != AN)){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\tif (lastArabic){nType = AN;}\n\t\t\treturn nType == wType ? nType : ON;\n\t\tcase ES:\n\t\t\twType = ix > 0 ? classes[ix - 1] : B;\n\t\t\tif (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\treturn ON;\n\t\tcase ET:\n\t\t\tif (ix > 0 && classes[ix - 1] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\tif (lastArabic){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\ti = ix + 1;\n\t\t\tlen = types.length;\n\t\t\twhile (i < len && types[i] == ET){\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i < len && types[i] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\treturn ON;\n\t\tcase NSM:\n\t\t\tlen = types.length;\n\t\t\ti = ix + 1;\n\t\t\twhile (i < len && types[i] == NSM){\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i < len){\n\t\t\t\tvar c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;\n\n\t\t\t\twType = types[i];\n\t\t\t\tif (rtlCandidate && (wType == R || wType == AL)){\n\t\t\t\t\treturn R;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (ix < 1 || (wType = types[ix - 1]) == B){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\treturn classes[ix - 1];\n\t\tcase B:\n\t\t\tlastArabic = false;\n\t\t\thasUBAT_B = true;\n\t\t\treturn dir;\n\t\tcase S:\n\t\t\thasUBAT_S = true;\n\t\t\treturn ON;\n\t\tcase LRE:\n\t\tcase RLE:\n\t\tcase LRO:\n\t\tcase RLO:\n\t\tcase PDF:\n\t\t\tlastArabic = false;\n\t\tcase BN:\n\t\t\treturn ON;\n\t}\n}\n\nfunction _getCharacterType( ch ) {\n\tvar uc = ch.charCodeAt(0), hi = uc >> 8;\n\n\tif (hi == 0) {\n\t\treturn ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);\n\t} else if (hi == 5) {\n\t\treturn (/[\\u0591-\\u05f4]/.test(ch) ? R : L);\n\t} else if (hi == 6) {\n\t\tif (/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(ch))\n\t\t\treturn NSM;\n\t\telse if (/[\\u0660-\\u0669\\u066b-\\u066c]/.test(ch))\n\t\t\treturn AN;\n\t\telse if (uc == 0x066A)\n\t\t\treturn ET;\n\t\telse if (/[\\u06f0-\\u06f9]/.test(ch))\n\t\t\treturn EN;\n\t\telse\n\t\t\treturn AL;\n\t} else if (hi == 0x20 && uc <= 0x205F) {\n\t\treturn UnicodeTBL20[uc & 0xFF];\n\t} else if (hi == 0xFE) {\n\t\treturn (uc >= 0xFE70 ? AL : ON);\n\t}\n\treturn ON;\n}\n\nfunction _isArabicDiacritics( ch ) {\n\treturn (ch >= '\\u064b' && ch <= '\\u0655');\n}\nexports.L = L;\nexports.R = R;\nexports.EN = EN;\nexports.ON_R = 3;\nexports.AN = 4;\nexports.R_H = 5;\nexports.B = 6;\n\nexports.DOT = \"\\xB7\";\nexports.doBidiReorder = function(text, textCharTypes, isRtl) {\n\tif (text.length < 2)\n\t\treturn {};\n\n\tvar chars = text.split(\"\"), logicalFromVisual = new Array(chars.length),\n\t\tbidiLevels = new Array(chars.length), levels = [];\n\n\tdir = isRtl ? RTL : LTR;\n\n\t_computeLevels(chars, levels, chars.length, textCharTypes);\n\n\tfor (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++);\n\n\t_invertLevel(2, levels, logicalFromVisual);\n\t_invertLevel(1, levels, logicalFromVisual);\n\n\tfor (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width\n\t\tif (textCharTypes[i] === AN) {\n\t\t\tlevels[i] = exports.AN;\n\t\t} else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE)\n\t\t\t|| textCharTypes[i] === ON || textCharTypes[i] === BN)) {\n\t\t\tlevels[i] = exports.ON_R;\n\t\t} else if ((i > 0 && chars[i - 1] === '\\u0644') && /\\u0622|\\u0623|\\u0625|\\u0627/.test(chars[i])) {\n\t\t\tlevels[i - 1] = levels[i] = exports.R_H;\n\t\t\ti++;\n\t\t}\n\t}\n\tif (chars[chars.length - 1] === exports.DOT)\n\t\tlevels[chars.length - 1] = exports.B;\n\n\tfor (var i = 0; i < logicalFromVisual.length; i++) {\n\t\tbidiLevels[i] = levels[logicalFromVisual[i]];\n\t}\n\n\treturn {'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels};\n};\nexports.hasBidiCharacters = function(text, textCharTypes){\n\tvar ret = false;\n\tfor (var i = 0; i < text.length; i++){\n\t\ttextCharTypes[i] = _getCharacterType(text.charAt(i));\n\t\tif (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL))\n\t\t\tret = true;\n\t}\n\treturn ret;\n};\nexports.getVisualFromLogicalIdx = function(logIdx, rowMap) {\n\tfor (var i = 0; i < rowMap.logicalFromVisual.length; i++) {\n\t\tif (rowMap.logicalFromVisual[i] == logIdx)\n\t\t\treturn i;\n\t}\n\treturn 0;\n};\n\n});\n\nace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar bidiUtil = acequire(\"./lib/bidiutil\");\nvar lang = acequire(\"./lib/lang\");\nvar useragent = acequire(\"./lib/useragent\");\nvar bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\nvar BidiHandler = function(session) {\n this.session = session;\n this.bidiMap = {};\n this.currentRow = null;\n this.bidiUtil = bidiUtil;\n this.charWidths = [];\n this.EOL = \"\\xAC\";\n this.showInvisibles = true;\n this.isRtlDir = false;\n this.line = \"\";\n this.wrapIndent = 0;\n this.isLastRow = false;\n this.EOF = \"\\xB6\";\n this.seenBidi = false;\n};\n\n(function() {\n this.isBidiRow = function(screenRow, docRow, splitIndex) {\n if (!this.seenBidi)\n return false;\n if (screenRow !== this.currentRow) {\n this.currentRow = screenRow;\n this.updateRowLine(docRow, splitIndex);\n this.updateBidiMap();\n }\n return this.bidiMap.bidiLevels;\n };\n\n this.onChange = function(delta) {\n if (!this.seenBidi) {\n if (delta.action == \"insert\" && bidiRE.test(delta.lines.join(\"\\n\"))) {\n this.seenBidi = true;\n this.currentRow = null;\n }\n }\n else {\n this.currentRow = null;\n }\n };\n\n this.getDocumentRow = function() {\n var docRow = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n if (index >= 0)\n docRow = this.session.$docRowCache[index];\n }\n\n return docRow;\n };\n\n this.getSplitIndex = function() {\n var splitIndex = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n while (this.currentRow - splitIndex > 0) {\n currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);\n if (currentIndex !== prevIndex)\n break;\n\n prevIndex = currentIndex;\n splitIndex++;\n }\n }\n\n return splitIndex;\n };\n\n this.updateRowLine = function(docRow, splitIndex) {\n if (docRow === undefined)\n docRow = this.getDocumentRow();\n\n this.wrapIndent = 0;\n this.isLastRow = (docRow === this.session.getLength() - 1);\n this.line = this.session.getLine(docRow);\n if (this.session.$useWrapMode) {\n var splits = this.session.$wrapData[docRow];\n if (splits) {\n if (splitIndex === undefined)\n splitIndex = this.getSplitIndex();\n\n if(splitIndex > 0 && splits.length) {\n this.wrapIndent = splits.indent;\n this.line = (splitIndex < splits.length) ?\n this.line.substring(splits[splitIndex - 1], splits[splits.length - 1]) :\n this.line.substring(splits[splits.length - 1]);\n } else {\n this.line = this.line.substring(0, splits[splitIndex]);\n }\n }\n }\n var session = this.session, shift = 0, size;\n this.line = this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g, function(ch, i){\n if (ch === '\\t' || session.isFullWidth(ch.charCodeAt(0))) {\n size = (ch === '\\t') ? session.getScreenTabSize(i + shift) : 2;\n shift += size - 1;\n return lang.stringRepeat(bidiUtil.DOT, size);\n }\n return ch;\n });\n };\n\n this.updateBidiMap = function() {\n var textCharTypes = [], endOfLine = this.isLastRow ? this.EOF : this.EOL;\n var line = this.line + (this.showInvisibles ? endOfLine : bidiUtil.DOT);\n if (bidiUtil.hasBidiCharacters(line, textCharTypes)) {\n this.bidiMap = bidiUtil.doBidiReorder(line, textCharTypes, this.isRtlDir);\n } else {\n this.bidiMap = {};\n }\n };\n this.markAsDirty = function() {\n this.currentRow = null;\n };\n this.updateCharacterWidths = function(fontMetrics) {\n if (!this.seenBidi)\n return;\n if (this.characterWidth === fontMetrics.$characterSize.width)\n return;\n\n var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;\n var bidiCharWidth = fontMetrics.$measureCharWidth(\"\\u05d4\");\n\n this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;\n this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;\n this.charWidths[bidiUtil.R_H] = useragent.isChrome ? bidiCharWidth : bidiCharWidth * 0.45;\n this.charWidths[bidiUtil.B] = 0;\n\n this.currentRow = null;\n };\n\n this.getShowInvisibles = function() {\n return this.showInvisibles;\n };\n\n this.setShowInvisibles = function(showInvisibles) {\n this.showInvisibles = showInvisibles;\n this.currentRow = null;\n };\n\n this.setEolChar = function(eolChar) {\n this.EOL = eolChar;\n };\n\n this.setTextDir = function(isRtlDir) {\n this.isRtlDir = isRtlDir;\n };\n this.getPosLeft = function(col) {\n col -= this.wrapIndent;\n var visualIdx = bidiUtil.getVisualFromLogicalIdx(col > 0 ? col - 1 : 0, this.bidiMap),\n levels = this.bidiMap.bidiLevels, left = 0;\n\n if (col === 0 && levels[visualIdx] % 2 !== 0)\n visualIdx++;\n\n for (var i = 0; i < visualIdx; i++) {\n left += this.charWidths[levels[i]];\n }\n\n if (col !== 0 && levels[visualIdx] % 2 === 0)\n left += this.charWidths[levels[visualIdx]];\n\n if (this.wrapIndent)\n left += this.wrapIndent * this.charWidths[bidiUtil.L];\n\n return left;\n };\n this.getSelections = function(startCol, endCol) {\n var map = this.bidiMap, levels = map.bidiLevels, level, offset = this.wrapIndent * this.charWidths[bidiUtil.L], selections = [],\n selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent,\n isSelected = false, isSelectedPrev = false, selectionStart = 0;\n\n for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {\n logIdx = map.logicalFromVisual[visIdx];\n level = levels[visIdx];\n isSelected = (logIdx >= selColMin) && (logIdx < selColMax);\n if (isSelected && !isSelectedPrev) {\n selectionStart = offset;\n } else if (!isSelected && isSelectedPrev) {\n selections.push({left: selectionStart, width: offset - selectionStart});\n }\n offset += this.charWidths[level];\n isSelectedPrev = isSelected;\n }\n\n if (isSelected && (visIdx === levels.length)) {\n selections.push({left: selectionStart, width: offset - selectionStart});\n }\n\n return selections;\n };\n this.offsetToCol = function(posX) {\n var logicalIdx = 0, posX = Math.max(posX, 0),\n offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels,\n charWidth = this.charWidths[levels[visualIdx]];\n\n if (this.wrapIndent) {\n posX -= this.wrapIndent * this.charWidths[bidiUtil.L];\n }\n\n while(posX > offset + charWidth/2) {\n offset += charWidth;\n if(visualIdx === levels.length - 1) {\n charWidth = 0;\n break;\n }\n charWidth = this.charWidths[levels[++visualIdx]];\n }\n\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)){\n if(posX < offset)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n\n } else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)){\n logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]\n : this.bidiMap.logicalFromVisual[visualIdx - 1]);\n\n } else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))\n || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))){\n logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];\n } else {\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n\n return (logicalIdx + this.wrapIndent);\n };\n\n}).call(BidiHandler.prototype);\n\nexports.BidiHandler = BidiHandler;\n});\n\nace.define(\"ace/range\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\nvar comparePoints = function(p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nvar Range = function(startRow, startColumn, endRow, endColumn) {\n this.start = {\n row: startRow,\n column: startColumn\n };\n\n this.end = {\n row: endRow,\n column: endColumn\n };\n};\n\n(function() {\n this.isEqual = function(range) {\n return this.start.row === range.start.row &&\n this.end.row === range.end.row &&\n this.start.column === range.start.column &&\n this.end.column === range.end.column;\n };\n this.toString = function() {\n return (\"Range: [\" + this.start.row + \"/\" + this.start.column +\n \"] -> [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n\n this.contains = function(row, column) {\n return this.compare(row, column) == 0;\n };\n this.compareRange = function(range) {\n var cmp,\n end = range.end,\n start = range.start;\n\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n } else if (cmp == 0) {\n return 1;\n } else {\n return 0;\n }\n } else if (cmp == -1) {\n return -2;\n } else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n } else if (cmp == 1) {\n return 42;\n } else {\n return 0;\n }\n }\n };\n this.comparePoint = function(p) {\n return this.compare(p.row, p.column);\n };\n this.containsRange = function(range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n this.intersects = function(range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n this.isEnd = function(row, column) {\n return this.end.row == row && this.end.column == column;\n };\n this.isStart = function(row, column) {\n return this.start.row == row && this.start.column == column;\n };\n this.setStart = function(row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n } else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n this.setEnd = function(row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n } else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n this.inside = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.insideStart = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.insideEnd = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.compare = function(row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n\n if (row < this.start.row)\n return -1;\n\n if (row > this.end.row)\n return 1;\n\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n\n return 0;\n };\n this.compareStart = function(row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n } else {\n return this.compare(row, column);\n }\n };\n this.compareEnd = function(row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n } else {\n return this.compare(row, column);\n }\n };\n this.compareInside = function(row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n } else if (this.start.row == row && this.start.column == column) {\n return -1;\n } else {\n return this.compare(row, column);\n }\n };\n this.clipRows = function(firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = {row: lastRow + 1, column: 0};\n else if (this.end.row < firstRow)\n var end = {row: firstRow, column: 0};\n\n if (this.start.row > lastRow)\n var start = {row: lastRow + 1, column: 0};\n else if (this.start.row < firstRow)\n var start = {row: firstRow, column: 0};\n\n return Range.fromPoints(start || this.start, end || this.end);\n };\n this.extend = function(row, column) {\n var cmp = this.compare(row, column);\n\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = {row: row, column: column};\n else\n var end = {row: row, column: column};\n\n return Range.fromPoints(start || this.start, end || this.end);\n };\n\n this.isEmpty = function() {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n this.isMultiLine = function() {\n return (this.start.row !== this.end.row);\n };\n this.clone = function() {\n return Range.fromPoints(this.start, this.end);\n };\n this.collapseRows = function() {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n this.toScreenRange = function(session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n\n return new Range(\n screenPosStart.row, screenPosStart.column,\n screenPosEnd.row, screenPosEnd.column\n );\n };\n this.moveBy = function(row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n\n}).call(Range.prototype);\nRange.fromPoints = function(start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\n\nRange.comparePoints = function(p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\n\n\nexports.Range = Range;\n});\n\nace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar lang = acequire(\"./lib/lang\");\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar Range = acequire(\"./range\").Range;\nvar Selection = function(session) {\n this.session = session;\n this.doc = session.getDocument();\n\n this.clearSelection();\n this.lead = this.selectionLead = this.doc.createAnchor(0, 0);\n this.anchor = this.selectionAnchor = this.doc.createAnchor(0, 0);\n\n var self = this;\n this.lead.on(\"change\", function(e) {\n self._emit(\"changeCursor\");\n if (!self.$isEmpty)\n self._emit(\"changeSelection\");\n if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n self.$desiredColumn = null;\n });\n\n this.selectionAnchor.on(\"change\", function() {\n if (!self.$isEmpty)\n self._emit(\"changeSelection\");\n });\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.isEmpty = function() {\n return (this.$isEmpty || (\n this.anchor.row == this.lead.row &&\n this.anchor.column == this.lead.column\n ));\n };\n this.isMultiLine = function() {\n if (this.isEmpty()) {\n return false;\n }\n\n return this.getRange().isMultiLine();\n };\n this.getCursor = function() {\n return this.lead.getPosition();\n };\n this.setSelectionAnchor = function(row, column) {\n this.anchor.setPosition(row, column);\n\n if (this.$isEmpty) {\n this.$isEmpty = false;\n this._emit(\"changeSelection\");\n }\n };\n this.getSelectionAnchor = function() {\n if (this.$isEmpty)\n return this.getSelectionLead();\n else\n return this.anchor.getPosition();\n };\n this.getSelectionLead = function() {\n return this.lead.getPosition();\n };\n this.shiftSelection = function(columns) {\n if (this.$isEmpty) {\n this.moveCursorTo(this.lead.row, this.lead.column + columns);\n return;\n }\n\n var anchor = this.getSelectionAnchor();\n var lead = this.getSelectionLead();\n\n var isBackwards = this.isBackwards();\n\n if (!isBackwards || anchor.column !== 0)\n this.setSelectionAnchor(anchor.row, anchor.column + columns);\n\n if (isBackwards || lead.column !== 0) {\n this.$moveSelection(function() {\n this.moveCursorTo(lead.row, lead.column + columns);\n });\n }\n };\n this.isBackwards = function() {\n var anchor = this.anchor;\n var lead = this.lead;\n return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n };\n this.getRange = function() {\n var anchor = this.anchor;\n var lead = this.lead;\n\n if (this.isEmpty())\n return Range.fromPoints(lead, lead);\n\n if (this.isBackwards()) {\n return Range.fromPoints(lead, anchor);\n }\n else {\n return Range.fromPoints(anchor, lead);\n }\n };\n this.clearSelection = function() {\n if (!this.$isEmpty) {\n this.$isEmpty = true;\n this._emit(\"changeSelection\");\n }\n };\n this.selectAll = function() {\n var lastRow = this.doc.getLength() - 1;\n this.setSelectionAnchor(0, 0);\n this.moveCursorTo(lastRow, this.doc.getLine(lastRow).length);\n };\n this.setRange =\n this.setSelectionRange = function(range, reverse) {\n if (reverse) {\n this.setSelectionAnchor(range.end.row, range.end.column);\n this.selectTo(range.start.row, range.start.column);\n } else {\n this.setSelectionAnchor(range.start.row, range.start.column);\n this.selectTo(range.end.row, range.end.column);\n }\n if (this.getRange().isEmpty())\n this.$isEmpty = true;\n this.$desiredColumn = null;\n };\n\n this.$moveSelection = function(mover) {\n var lead = this.lead;\n if (this.$isEmpty)\n this.setSelectionAnchor(lead.row, lead.column);\n\n mover.call(this);\n };\n this.selectTo = function(row, column) {\n this.$moveSelection(function() {\n this.moveCursorTo(row, column);\n });\n };\n this.selectToPosition = function(pos) {\n this.$moveSelection(function() {\n this.moveCursorToPosition(pos);\n });\n };\n this.moveTo = function(row, column) {\n this.clearSelection();\n this.moveCursorTo(row, column);\n };\n this.moveToPosition = function(pos) {\n this.clearSelection();\n this.moveCursorToPosition(pos);\n };\n this.selectUp = function() {\n this.$moveSelection(this.moveCursorUp);\n };\n this.selectDown = function() {\n this.$moveSelection(this.moveCursorDown);\n };\n this.selectRight = function() {\n this.$moveSelection(this.moveCursorRight);\n };\n this.selectLeft = function() {\n this.$moveSelection(this.moveCursorLeft);\n };\n this.selectLineStart = function() {\n this.$moveSelection(this.moveCursorLineStart);\n };\n this.selectLineEnd = function() {\n this.$moveSelection(this.moveCursorLineEnd);\n };\n this.selectFileEnd = function() {\n this.$moveSelection(this.moveCursorFileEnd);\n };\n this.selectFileStart = function() {\n this.$moveSelection(this.moveCursorFileStart);\n };\n this.selectWordRight = function() {\n this.$moveSelection(this.moveCursorWordRight);\n };\n this.selectWordLeft = function() {\n this.$moveSelection(this.moveCursorWordLeft);\n };\n this.getWordRange = function(row, column) {\n if (typeof column == \"undefined\") {\n var cursor = row || this.lead;\n row = cursor.row;\n column = cursor.column;\n }\n return this.session.getWordRange(row, column);\n };\n this.selectWord = function() {\n this.setSelectionRange(this.getWordRange());\n };\n this.selectAWord = function() {\n var cursor = this.getCursor();\n var range = this.session.getAWordRange(cursor.row, cursor.column);\n this.setSelectionRange(range);\n };\n\n this.getLineRange = function(row, excludeLastChar) {\n var rowStart = typeof row == \"number\" ? row : this.lead.row;\n var rowEnd;\n\n var foldLine = this.session.getFoldLine(rowStart);\n if (foldLine) {\n rowStart = foldLine.start.row;\n rowEnd = foldLine.end.row;\n } else {\n rowEnd = rowStart;\n }\n if (excludeLastChar === true)\n return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n else\n return new Range(rowStart, 0, rowEnd + 1, 0);\n };\n this.selectLine = function() {\n this.setSelectionRange(this.getLineRange());\n };\n this.moveCursorUp = function() {\n this.moveCursorBy(-1, 0);\n };\n this.moveCursorDown = function() {\n this.moveCursorBy(1, 0);\n };\n this.wouldMoveIntoSoftTab = function(cursor, tabSize, direction) {\n var start = cursor.column;\n var end = cursor.column + tabSize;\n\n if (direction < 0) {\n start = cursor.column - tabSize;\n end = cursor.column;\n }\n return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(\" \").length-1 == tabSize;\n };\n this.moveCursorLeft = function() {\n var cursor = this.lead.getPosition(),\n fold;\n\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n } else if (cursor.column === 0) {\n if (cursor.row > 0) {\n this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, -tabSize);\n } else {\n this.moveCursorBy(0, -1);\n }\n }\n };\n this.moveCursorRight = function() {\n var cursor = this.lead.getPosition(),\n fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n }\n else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n if (this.lead.row < this.doc.getLength() - 1) {\n this.moveCursorTo(this.lead.row + 1, 0);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n var cursor = this.lead;\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, tabSize);\n } else {\n this.moveCursorBy(0, 1);\n }\n }\n };\n this.moveCursorLineStart = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var screenRow = this.session.documentToScreenRow(row, column);\n var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n var beforeCursor = this.session.getDisplayLine(\n row, null, firstColumnPosition.row,\n firstColumnPosition.column\n );\n\n var leadingSpace = beforeCursor.match(/^\\s*/);\n if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n firstColumnPosition.column += leadingSpace[0].length;\n this.moveCursorToPosition(firstColumnPosition);\n };\n this.moveCursorLineEnd = function() {\n var lead = this.lead;\n var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n if (this.lead.column == lineEnd.column) {\n var line = this.session.getLine(lineEnd.row);\n if (lineEnd.column == line.length) {\n var textEnd = line.search(/\\s+$/);\n if (textEnd > 0)\n lineEnd.column = textEnd;\n }\n }\n\n this.moveCursorTo(lineEnd.row, lineEnd.column);\n };\n this.moveCursorFileEnd = function() {\n var row = this.doc.getLength() - 1;\n var column = this.doc.getLine(row).length;\n this.moveCursorTo(row, column);\n };\n this.moveCursorFileStart = function() {\n this.moveCursorTo(0, 0);\n };\n this.moveCursorLongWordRight = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n\n var match;\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n return;\n }\n if (match = this.session.nonTokenRe.exec(rightOfCursor)) {\n column += this.session.nonTokenRe.lastIndex;\n this.session.nonTokenRe.lastIndex = 0;\n rightOfCursor = line.substring(column);\n }\n if (column >= line.length) {\n this.moveCursorTo(row, line.length);\n this.moveCursorRight();\n if (row < this.doc.getLength() - 1)\n this.moveCursorWordRight();\n return;\n }\n if (match = this.session.tokenRe.exec(rightOfCursor)) {\n column += this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n\n this.moveCursorTo(row, column);\n };\n this.moveCursorLongWordLeft = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n return;\n }\n\n var str = this.session.getFoldStringAt(row, column, -1);\n if (str == null) {\n str = this.doc.getLine(row).substring(0, column);\n }\n\n var leftOfCursor = lang.stringReverse(str);\n var match;\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n if (match = this.session.nonTokenRe.exec(leftOfCursor)) {\n column -= this.session.nonTokenRe.lastIndex;\n leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n this.session.nonTokenRe.lastIndex = 0;\n }\n if (column <= 0) {\n this.moveCursorTo(row, 0);\n this.moveCursorLeft();\n if (row > 0)\n this.moveCursorWordLeft();\n return;\n }\n if (match = this.session.tokenRe.exec(leftOfCursor)) {\n column -= this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n\n this.moveCursorTo(row, column);\n };\n\n this.$shortWordEndIndex = function(rightOfCursor) {\n var match, index = 0, ch;\n var whitespaceRe = /\\s/;\n var tokenRe = this.session.tokenRe;\n\n tokenRe.lastIndex = 0;\n if (match = this.session.tokenRe.exec(rightOfCursor)) {\n index = this.session.tokenRe.lastIndex;\n } else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index ++;\n\n if (index < 1) {\n tokenRe.lastIndex = 0;\n while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n tokenRe.lastIndex = 0;\n index ++;\n if (whitespaceRe.test(ch)) {\n if (index > 2) {\n index--;\n break;\n } else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index ++;\n if (index > 2)\n break;\n }\n }\n }\n }\n }\n tokenRe.lastIndex = 0;\n\n return index;\n };\n\n this.moveCursorShortWordRight = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold)\n return this.moveCursorTo(fold.end.row, fold.end.column);\n\n if (column == line.length) {\n var l = this.doc.getLength();\n do {\n row++;\n rightOfCursor = this.doc.getLine(row);\n } while (row < l && /^\\s*$/.test(rightOfCursor));\n\n if (!/^\\s+/.test(rightOfCursor))\n rightOfCursor = \"\";\n column = 0;\n }\n\n var index = this.$shortWordEndIndex(rightOfCursor);\n\n this.moveCursorTo(row, column + index);\n };\n\n this.moveCursorShortWordLeft = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1))\n return this.moveCursorTo(fold.start.row, fold.start.column);\n\n var line = this.session.getLine(row).substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = this.doc.getLine(row);\n } while (row > 0 && /^\\s*$/.test(line));\n\n column = line.length;\n if (!/\\s+$/.test(line))\n line = \"\";\n }\n\n var leftOfCursor = lang.stringReverse(line);\n var index = this.$shortWordEndIndex(leftOfCursor);\n\n return this.moveCursorTo(row, column - index);\n };\n\n this.moveCursorWordRight = function() {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordRight();\n else\n this.moveCursorShortWordRight();\n };\n\n this.moveCursorWordLeft = function() {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordLeft();\n else\n this.moveCursorShortWordLeft();\n };\n this.moveCursorBy = function(rows, chars) {\n var screenPos = this.session.documentToScreenPosition(\n this.lead.row,\n this.lead.column\n );\n\n var offsetX;\n\n if (chars === 0) {\n if (rows !== 0) {\n if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {\n offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);\n screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);\n } else {\n offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];\n }\n }\n\n if (this.$desiredColumn)\n screenPos.column = this.$desiredColumn;\n else\n this.$desiredColumn = screenPos.column;\n }\n\n var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);\n \n if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n if (this.session.lineWidgets && this.session.lineWidgets[docPos.row]) {\n if (docPos.row > 0 || rows > 0)\n docPos.row++;\n }\n }\n this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n };\n this.moveCursorToPosition = function(position) {\n this.moveCursorTo(position.row, position.column);\n };\n this.moveCursorTo = function(row, column, keepDesiredColumn) {\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n row = fold.start.row;\n column = fold.start.column;\n }\n\n this.$keepDesiredColumnOnChange = true;\n var line = this.session.getLine(row);\n if (/[\\uDC00-\\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {\n if (this.lead.row == row && this.lead.column == column + 1)\n column = column - 1;\n else\n column = column + 1;\n }\n this.lead.setPosition(row, column);\n this.$keepDesiredColumnOnChange = false;\n\n if (!keepDesiredColumn)\n this.$desiredColumn = null;\n };\n this.moveCursorToScreen = function(row, column, keepDesiredColumn) {\n var pos = this.session.screenToDocumentPosition(row, column);\n this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n };\n this.detach = function() {\n this.lead.detach();\n this.anchor.detach();\n this.session = this.doc = null;\n };\n\n this.fromOrientedRange = function(range) {\n this.setSelectionRange(range, range.cursor == range.start);\n this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n };\n\n this.toOrientedRange = function(range) {\n var r = this.getRange();\n if (range) {\n range.start.column = r.start.column;\n range.start.row = r.start.row;\n range.end.column = r.end.column;\n range.end.row = r.end.row;\n } else {\n range = r;\n }\n\n range.cursor = this.isBackwards() ? range.start : range.end;\n range.desiredColumn = this.$desiredColumn;\n return range;\n };\n this.getRangeOfMovements = function(func) {\n var start = this.getCursor();\n try {\n func(this);\n var end = this.getCursor();\n return Range.fromPoints(start,end);\n } catch(e) {\n return Range.fromPoints(start,start);\n } finally {\n this.moveCursorToPosition(start);\n }\n };\n\n this.toJSON = function() {\n if (this.rangeCount) {\n var data = this.ranges.map(function(r) {\n var r1 = r.clone();\n r1.isBackwards = r.cursor == r.start;\n return r1;\n });\n } else {\n var data = this.getRange();\n data.isBackwards = this.isBackwards();\n }\n return data;\n };\n\n this.fromJSON = function(data) {\n if (data.start == undefined) {\n if (this.rangeList) {\n this.toSingleRange(data[0]);\n for (var i = data.length; i--; ) {\n var r = Range.fromPoints(data[i].start, data[i].end);\n if (data[i].isBackwards)\n r.cursor = r.start;\n this.addRange(r, true);\n }\n return;\n } else\n data = data[0];\n }\n if (this.rangeList)\n this.toSingleRange(data);\n this.setSelectionRange(data, data.isBackwards);\n };\n\n this.isEqual = function(data) {\n if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n return false;\n if (!data.length || !this.ranges)\n return this.getRange().isEqual(data);\n\n for (var i = this.ranges.length; i--; ) {\n if (!this.ranges[i].isEqual(data[i]))\n return false;\n }\n return true;\n };\n\n}).call(Selection.prototype);\n\nexports.Selection = Selection;\n});\n\nace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/config\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar config = acequire(\"./config\");\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = function(rules) {\n this.states = rules;\n\n this.regExps = {};\n this.matchMappings = {};\n for (var key in this.states) {\n var state = this.states[key];\n var ruleRegExps = [];\n var matchTotal = 0;\n var mapping = this.matchMappings[key] = {defaultToken: \"text\"};\n var flag = \"g\";\n\n var splitterRurles = [];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.defaultToken)\n mapping.defaultToken = rule.defaultToken;\n if (rule.caseInsensitive)\n flag = \"gi\";\n if (rule.regex == null)\n continue;\n\n if (rule.regex instanceof RegExp)\n rule.regex = rule.regex.toString().slice(1, -1);\n var adjustedregex = rule.regex;\n var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\n if (Array.isArray(rule.token)) {\n if (rule.token.length == 1 || matchcount == 1) {\n rule.token = rule.token[0];\n } else if (matchcount - 1 != rule.token.length) {\n this.reportError(\"number of classes and regexp groups doesn't match\", { \n rule: rule,\n groupCount: matchcount - 1\n });\n rule.token = rule.token[0];\n } else {\n rule.tokenArray = rule.token;\n rule.token = null;\n rule.onMatch = this.$arrayTokens;\n }\n } else if (typeof rule.token == \"function\" && !rule.onMatch) {\n if (matchcount > 1)\n rule.onMatch = this.$applyToken;\n else\n rule.onMatch = rule.token;\n }\n\n if (matchcount > 1) {\n if (/\\\\\\d/.test(rule.regex)) {\n adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function(match, digit) {\n return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n });\n } else {\n matchcount = 1;\n adjustedregex = this.removeCapturingGroups(rule.regex);\n }\n if (!rule.splitRegex && typeof rule.token != \"string\")\n splitterRurles.push(rule); // flag will be known only at the very end\n }\n\n mapping[matchTotal] = i;\n matchTotal += matchcount;\n\n ruleRegExps.push(adjustedregex);\n if (!rule.onMatch)\n rule.onMatch = null;\n }\n \n if (!ruleRegExps.length) {\n mapping[0] = 0;\n ruleRegExps.push(\"$\");\n }\n \n splitterRurles.forEach(function(rule) {\n rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n }, this);\n\n this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\n }\n};\n\n(function() {\n this.$setMaxTokenCount = function(m) {\n MAX_TOKEN_COUNT = m | 0;\n };\n \n this.$applyToken = function(str) {\n var values = this.splitRegex.exec(str).slice(1);\n var types = this.token.apply(this, values);\n if (typeof types === \"string\")\n return [{type: types, value: str}];\n\n var tokens = [];\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i]\n };\n }\n return tokens;\n };\n\n this.$arrayTokens = function(str) {\n if (!str)\n return [];\n var values = this.splitRegex.exec(str);\n if (!values)\n return \"text\";\n var tokens = [];\n var types = this.tokenArray;\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i + 1])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i + 1]\n };\n }\n return tokens;\n };\n\n this.removeCapturingGroups = function(src) {\n var r = src.replace(\n /\\[(?:\\\\.|[^\\]])*?\\]|\\\\.|\\(\\?[:=!]|(\\()/g,\n function(x, y) {return y ? \"(?:\" : x;}\n );\n return r;\n };\n\n this.createSplitterRegexp = function(src, flag) {\n if (src.indexOf(\"(?=\") != -1) {\n var stack = 0;\n var inChClass = false;\n var lastCapture = {};\n src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function(\n m, esc, parenOpen, parenClose, square, index\n ) {\n if (inChClass) {\n inChClass = square != \"]\";\n } else if (square) {\n inChClass = true;\n } else if (parenClose) {\n if (stack == lastCapture.stack) {\n lastCapture.end = index+1;\n lastCapture.stack = -1;\n }\n stack--;\n } else if (parenOpen) {\n stack++;\n if (parenOpen.length != 1) {\n lastCapture.stack = stack;\n lastCapture.start = index;\n }\n }\n return m;\n });\n\n if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n }\n if (src.charAt(0) != \"^\") src = \"^\" + src;\n if (src.charAt(src.length - 1) != \"$\") src += \"$\";\n \n return new RegExp(src, (flag||\"\").replace(\"g\", \"\"));\n };\n this.getLineTokens = function(line, startState) {\n if (startState && typeof startState != \"string\") {\n var stack = startState.slice(0);\n startState = stack[0];\n if (startState === \"#tmp\") {\n stack.shift();\n startState = stack.shift();\n }\n } else\n var stack = [];\n\n var currentState = startState || \"start\";\n var state = this.states[currentState];\n if (!state) {\n currentState = \"start\";\n state = this.states[currentState];\n }\n var mapping = this.matchMappings[currentState];\n var re = this.regExps[currentState];\n re.lastIndex = 0;\n\n var match, tokens = [];\n var lastIndex = 0;\n var matchAttempts = 0;\n\n var token = {type: null, value: \"\"};\n\n while (match = re.exec(line)) {\n var type = mapping.defaultToken;\n var rule = null;\n var value = match[0];\n var index = re.lastIndex;\n\n if (index - value.length > lastIndex) {\n var skipped = line.substring(lastIndex, index - value.length);\n if (token.type == type) {\n token.value += skipped;\n } else {\n if (token.type)\n tokens.push(token);\n token = {type: type, value: skipped};\n }\n }\n\n for (var i = 0; i < match.length-2; i++) {\n if (match[i + 1] === undefined)\n continue;\n\n rule = state[mapping[i]];\n\n if (rule.onMatch)\n type = rule.onMatch(value, currentState, stack, line);\n else\n type = rule.token;\n\n if (rule.next) {\n if (typeof rule.next == \"string\") {\n currentState = rule.next;\n } else {\n currentState = rule.next(currentState, stack);\n }\n \n state = this.states[currentState];\n if (!state) {\n this.reportError(\"state doesn't exist\", currentState);\n currentState = \"start\";\n state = this.states[currentState];\n }\n mapping = this.matchMappings[currentState];\n lastIndex = index;\n re = this.regExps[currentState];\n re.lastIndex = index;\n }\n if (rule.consumeLineEnd)\n lastIndex = index;\n break;\n }\n\n if (value) {\n if (typeof type === \"string\") {\n if ((!rule || rule.merge !== false) && token.type === type) {\n token.value += value;\n } else {\n if (token.type)\n tokens.push(token);\n token = {type: type, value: value};\n }\n } else if (type) {\n if (token.type)\n tokens.push(token);\n token = {type: null, value: \"\"};\n for (var i = 0; i < type.length; i++)\n tokens.push(type[i]);\n }\n }\n\n if (lastIndex == line.length)\n break;\n\n lastIndex = index;\n\n if (matchAttempts++ > MAX_TOKEN_COUNT) {\n if (matchAttempts > 2 * line.length) {\n this.reportError(\"infinite loop with in ace tokenizer\", {\n startState: startState,\n line: line\n });\n }\n while (lastIndex < line.length) {\n if (token.type)\n tokens.push(token);\n token = {\n value: line.substring(lastIndex, lastIndex += 2000),\n type: \"overflow\"\n };\n }\n currentState = \"start\";\n stack = [];\n break;\n }\n }\n\n if (token.type)\n tokens.push(token);\n \n if (stack.length > 1) {\n if (stack[0] !== currentState)\n stack.unshift(\"#tmp\", currentState);\n }\n return {\n tokens : tokens,\n state : stack.length ? stack : currentState\n };\n };\n \n this.reportError = config.reportError;\n \n}).call(Tokenizer.prototype);\n\nexports.Tokenizer = Tokenizer;\n});\n\nace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar lang = acequire(\"../lib/lang\");\n\nvar TextHighlightRules = function() {\n\n this.$rules = {\n \"start\" : [{\n token : \"empty_line\",\n regex : '^$'\n }, {\n defaultToken : \"text\"\n }]\n };\n};\n\n(function() {\n\n this.addRules = function(rules, prefix) {\n if (!prefix) {\n for (var key in rules)\n this.$rules[key] = rules[key];\n return;\n }\n for (var key in rules) {\n var state = rules[key];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.next || rule.onMatch) {\n if (typeof rule.next == \"string\") {\n if (rule.next.indexOf(prefix) !== 0)\n rule.next = prefix + rule.next;\n }\n if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n rule.nextState = prefix + rule.nextState;\n }\n }\n this.$rules[prefix + key] = state;\n }\n };\n\n this.getRules = function() {\n return this.$rules;\n };\n\n this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n var embedRules = typeof HighlightRules == \"function\"\n ? new HighlightRules().getRules()\n : HighlightRules;\n if (states) {\n for (var i = 0; i < states.length; i++)\n states[i] = prefix + states[i];\n } else {\n states = [];\n for (var key in embedRules)\n states.push(prefix + key);\n }\n\n this.addRules(embedRules, prefix);\n\n if (escapeRules) {\n var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\n for (var i = 0; i < states.length; i++)\n addRules.apply(this.$rules[states[i]], lang.deepCopy(escapeRules));\n }\n\n if (!this.$embeds)\n this.$embeds = [];\n this.$embeds.push(prefix);\n };\n\n this.getEmbeds = function() {\n return this.$embeds;\n };\n\n var pushState = function(currentState, stack) {\n if (currentState != \"start\" || stack.length)\n stack.unshift(this.nextState, currentState);\n return this.nextState;\n };\n var popState = function(currentState, stack) {\n stack.shift();\n return stack.shift() || \"start\";\n };\n\n this.normalizeRules = function() {\n var id = 0;\n var rules = this.$rules;\n function processState(key) {\n var state = rules[key];\n state.processed = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n var toInsert = null;\n if (Array.isArray(rule)) {\n toInsert = rule;\n rule = {};\n }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n rule.next = [];\n rule.next.push({\n defaultToken: rule.token\n }, {\n token: rule.token + \".end\",\n regex: rule.end || rule.start,\n next: \"pop\"\n });\n rule.token = rule.token + \".start\";\n rule.push = true;\n }\n var next = rule.next || rule.push;\n if (next && Array.isArray(next)) {\n var stateName = rule.stateName;\n if (!stateName) {\n stateName = rule.token;\n if (typeof stateName != \"string\")\n stateName = stateName[0] || \"\";\n if (rules[stateName])\n stateName += id++;\n }\n rules[stateName] = next;\n rule.next = stateName;\n processState(stateName);\n } else if (next == \"pop\") {\n rule.next = popState;\n }\n\n if (rule.push) {\n rule.nextState = rule.next || rule.push;\n rule.next = pushState;\n delete rule.push;\n }\n\n if (rule.rules) {\n for (var r in rule.rules) {\n if (rules[r]) {\n if (rules[r].push)\n rules[r].push.apply(rules[r], rule.rules[r]);\n } else {\n rules[r] = rule.rules[r];\n }\n }\n }\n var includeName = typeof rule == \"string\" ? rule : rule.include;\n if (includeName) {\n if (Array.isArray(includeName))\n toInsert = includeName.map(function(x) { return rules[x]; });\n else\n toInsert = rules[includeName];\n }\n\n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n if (rule.noEscape)\n args = args.filter(function(x) {return !x.next;});\n state.splice.apply(state, args);\n i--;\n }\n \n if (rule.keywordMap) {\n rule.token = this.createKeywordMapper(\n rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive\n );\n delete rule.defaultToken;\n }\n }\n }\n Object.keys(rules).forEach(processState, this);\n };\n\n this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) {\n var keywords = Object.create(null);\n Object.keys(map).forEach(function(className) {\n var a = map[className];\n if (ignoreCase)\n a = a.toLowerCase();\n var list = a.split(splitChar || \"|\");\n for (var i = list.length; i--; )\n keywords[list[i]] = className;\n });\n if (Object.getPrototypeOf(keywords)) {\n keywords.__proto__ = null;\n }\n this.$keywordList = Object.keys(keywords);\n map = null;\n return ignoreCase\n ? function(value) {return keywords[value.toLowerCase()] || defaultToken; }\n : function(value) {return keywords[value] || defaultToken; };\n };\n\n this.getKeywords = function() {\n return this.$keywords;\n };\n\n}).call(TextHighlightRules.prototype);\n\nexports.TextHighlightRules = TextHighlightRules;\n});\n\nace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Behaviour = function() {\n this.$behaviours = {};\n};\n\n(function () {\n\n this.add = function (name, action, callback) {\n switch (undefined) {\n case this.$behaviours:\n this.$behaviours = {};\n case this.$behaviours[name]:\n this.$behaviours[name] = {};\n }\n this.$behaviours[name][action] = callback;\n };\n \n this.addBehaviours = function (behaviours) {\n for (var key in behaviours) {\n for (var action in behaviours[key]) {\n this.add(key, action, behaviours[key][action]);\n }\n }\n };\n \n this.remove = function (name) {\n if (this.$behaviours && this.$behaviours[name]) {\n delete this.$behaviours[name];\n }\n };\n \n this.inherit = function (mode, filter) {\n if (typeof mode === \"function\") {\n var behaviours = new mode().getBehaviours(filter);\n } else {\n var behaviours = mode.getBehaviours(filter);\n }\n this.addBehaviours(behaviours);\n };\n \n this.getBehaviours = function (filter) {\n if (!filter) {\n return this.$behaviours;\n } else {\n var ret = {};\n for (var i = 0; i < filter.length; i++) {\n if (this.$behaviours[filter[i]]) {\n ret[filter[i]] = this.$behaviours[filter[i]];\n }\n }\n return ret;\n }\n };\n\n}).call(Behaviour.prototype);\n\nexports.Behaviour = Behaviour;\n});\n\nace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"./range\").Range;\nvar TokenIterator = function(session, initialRow, initialColumn) {\n this.$session = session;\n this.$row = initialRow;\n this.$rowTokens = session.getTokens(initialRow);\n\n var token = session.getTokenAt(initialRow, initialColumn);\n this.$tokenIndex = token ? token.index : -1;\n};\n\n(function() { \n this.stepBackward = function() {\n this.$tokenIndex -= 1;\n \n while (this.$tokenIndex < 0) {\n this.$row -= 1;\n if (this.$row < 0) {\n this.$row = 0;\n return null;\n }\n \n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = this.$rowTokens.length - 1;\n }\n \n return this.$rowTokens[this.$tokenIndex];\n }; \n this.stepForward = function() {\n this.$tokenIndex += 1;\n var rowCount;\n while (this.$tokenIndex >= this.$rowTokens.length) {\n this.$row += 1;\n if (!rowCount)\n rowCount = this.$session.getLength();\n if (this.$row >= rowCount) {\n this.$row = rowCount - 1;\n return null;\n }\n\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = 0;\n }\n \n return this.$rowTokens[this.$tokenIndex];\n }; \n this.getCurrentToken = function () {\n return this.$rowTokens[this.$tokenIndex];\n }; \n this.getCurrentTokenRow = function () {\n return this.$row;\n }; \n this.getCurrentTokenColumn = function() {\n var rowTokens = this.$rowTokens;\n var tokenIndex = this.$tokenIndex;\n var column = rowTokens[tokenIndex].start;\n if (column !== undefined)\n return column;\n \n column = 0;\n while (tokenIndex > 0) {\n tokenIndex -= 1;\n column += rowTokens[tokenIndex].value.length;\n }\n \n return column; \n };\n this.getCurrentTokenPosition = function() {\n return {row: this.$row, column: this.getCurrentTokenColumn()};\n };\n this.getCurrentTokenRange = function() {\n var token = this.$rowTokens[this.$tokenIndex];\n var column = this.getCurrentTokenColumn();\n return new Range(this.$row, column, this.$row, column + token.value.length);\n };\n\n}).call(TokenIterator.prototype);\n\nexports.TokenIterator = TokenIterator;\n});\n\nace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\nvar lang = acequire(\"../../lib/lang\");\n\nvar SAFE_INSERT_IN_TOKENS =\n [\"text\", \"paren.rparen\", \"punctuation.operator\"];\nvar SAFE_INSERT_BEFORE_TOKENS =\n [\"text\", \"paren.rparen\", \"punctuation.operator\", \"comment\"];\n\nvar context;\nvar contextCache = {};\nvar defaultQuotes = {'\"' : '\"', \"'\" : \"'\"};\n\nvar initContext = function(editor) {\n var id = -1;\n if (editor.multiSelect) {\n id = editor.selection.index;\n if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n contextCache = {rangeCount: editor.multiSelect.rangeCount};\n }\n if (contextCache[id])\n return context = contextCache[id];\n context = contextCache[id] = {\n autoInsertedBrackets: 0,\n autoInsertedRow: -1,\n autoInsertedLineEnd: \"\",\n maybeInsertedBrackets: 0,\n maybeInsertedRow: -1,\n maybeInsertedLineStart: \"\",\n maybeInsertedLineEnd: \"\"\n };\n};\n\nvar getWrapped = function(selection, selected, opening, closing) {\n var rowDiff = selection.end.row - selection.start.row;\n return {\n text: opening + selected + closing,\n selection: [\n 0,\n selection.start.column + 1,\n rowDiff,\n selection.end.column + (rowDiff ? 0 : 1)\n ]\n };\n};\n\nvar CstyleBehaviour = function(options) {\n this.add(\"braces\", \"insertion\", function(state, action, editor, session, text) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (text == '{') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '{', '}');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options && options.braces) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n } else {\n CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\n return {\n text: '{',\n selection: [1, 1]\n };\n }\n }\n } else if (text == '}') {\n initContext(editor);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == '}') {\n var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n } else if (text == \"\\n\" || text == \"\\r\\n\") {\n initContext(editor);\n var closing = \"\";\n if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === '}') {\n var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}');\n if (!openBracePos)\n return null;\n var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n } else if (closing) {\n var next_indent = this.$getIndent(line);\n } else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n return;\n }\n var indent = next_indent + session.getTabString();\n\n return {\n text: '\\n' + indent + '\\n' + next_indent + closing,\n selection: [1, indent.length, 1, indent.length]\n };\n } else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n });\n\n this.add(\"braces\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '{') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar == '}') {\n range.end.column++;\n return range;\n } else {\n context.maybeInsertedBrackets--;\n }\n }\n });\n\n this.add(\"parens\", \"insertion\", function(state, action, editor, session, text) {\n if (text == '(') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '(', ')');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \")\");\n return {\n text: '()',\n selection: [1, 1]\n };\n }\n } else if (text == ')') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ')') {\n var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"parens\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '(') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ')') {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"brackets\", \"insertion\", function(state, action, editor, session, text) {\n if (text == '[') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '[', ']');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\n return {\n text: '[]',\n selection: [1, 1]\n };\n }\n } else if (text == ']') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ']') {\n var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"brackets\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '[') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ']') {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"string_dquotes\", \"insertion\", function(state, action, editor, session, text) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n if (text.length == 1 && quotes[text]) {\n if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1)\n return;\n initContext(editor);\n var quote = text;\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, quote, quote);\n } else if (!selected) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var leftChar = line.substring(cursor.column-1, cursor.column);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n\n var token = session.getTokenAt(cursor.row, cursor.column);\n var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\n return null;\n\n var stringBefore = token && /string|escape/.test(token.type);\n var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n\n var pair;\n if (rightChar == quote) {\n pair = stringBefore !== stringAfter;\n if (pair && /string\\.end/.test(rightToken.type))\n pair = false;\n } else {\n if (stringBefore && !stringAfter)\n return null; // wrap string with different quote\n if (stringBefore && stringAfter)\n return null; // do not pair quotes inside strings\n var wordRe = session.$mode.tokenRe;\n wordRe.lastIndex = 0;\n var isWordBefore = wordRe.test(leftChar);\n wordRe.lastIndex = 0;\n var isWordAfter = wordRe.test(leftChar);\n if (isWordBefore || isWordAfter)\n return null; // before or after alphanumeric\n if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n return null; // there is rightChar and it isn't closing\n pair = true;\n }\n return {\n text: pair ? quote + quote : \"\",\n selection: [1,1]\n };\n }\n }\n });\n\n this.add(\"string_dquotes\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n\n};\n\n\nCstyleBehaviour.isSaneInsertion = function(editor, session) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\n var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\n return false;\n }\n iterator.stepForward();\n return iterator.getCurrentTokenRow() !== cursor.row ||\n this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\n};\n\nCstyleBehaviour.$matchTokenType = function(token, types) {\n return types.indexOf(token.type || token) > -1;\n};\n\nCstyleBehaviour.recordAutoInsert = function(editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\n context.autoInsertedBrackets = 0;\n context.autoInsertedRow = cursor.row;\n context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n context.autoInsertedBrackets++;\n};\n\nCstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isMaybeInsertedClosing(cursor, line))\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = cursor.row;\n context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n context.maybeInsertedLineEnd = line.substr(cursor.column);\n context.maybeInsertedBrackets++;\n};\n\nCstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) {\n return context.autoInsertedBrackets > 0 &&\n cursor.row === context.autoInsertedRow &&\n bracket === context.autoInsertedLineEnd[0] &&\n line.substr(cursor.column) === context.autoInsertedLineEnd;\n};\n\nCstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) {\n return context.maybeInsertedBrackets > 0 &&\n cursor.row === context.maybeInsertedRow &&\n line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n};\n\nCstyleBehaviour.popAutoInsertedClosing = function() {\n context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n context.autoInsertedBrackets--;\n};\n\nCstyleBehaviour.clearMaybeInsertedClosing = function() {\n if (context) {\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = -1;\n }\n};\n\n\n\noop.inherits(CstyleBehaviour, Behaviour);\n\nexports.CstyleBehaviour = CstyleBehaviour;\n});\n\nace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\nexports.packages = {};\n\naddUnicodePackage({\n 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\",\n 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\",\n 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\",\n Lt: \"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC\",\n Lm: \"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F\",\n 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\",\n 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\",\n 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\",\n 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\",\n Me: \"0488048906DE20DD-20E020E2-20E4A670-A672\",\n 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\",\n 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\",\n Nl: \"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF\",\n No: \"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835\",\n 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\",\n Pd: \"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D\",\n Ps: \"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62\",\n Pe: \"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63\",\n Pi: \"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20\",\n Pf: \"00BB2019201D203A2E032E052E0A2E0D2E1D2E21\",\n Pc: \"005F203F20402054FE33FE34FE4D-FE4FFF3F\",\n 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\",\n 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\",\n 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\",\n Sc: \"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6\",\n Sk: \"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3\",\n 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\",\n Z: \"002000A01680180E2000-200A20282029202F205F3000\",\n Zs: \"002000A01680180E2000-200A202F205F3000\",\n Zl: \"2028\",\n Zp: \"2029\",\n 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\",\n Cc: \"0000-001F007F-009F\",\n Cf: \"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB\",\n Co: \"E000-F8FF\",\n Cs: \"D800-DFFF\",\n 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});\n\nfunction addUnicodePackage (pack) {\n var codePoint = /\\w{4}/g;\n for (var name in pack)\n exports.packages[name] = pack[name].replace(codePoint, \"\\\\u$&\");\n}\n\n});\n\nace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Tokenizer = acequire(\"../tokenizer\").Tokenizer;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar unicode = acequire(\"../unicode\");\nvar lang = acequire(\"../lib/lang\");\nvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\nvar Range = acequire(\"../range\").Range;\n\nvar Mode = function() {\n this.HighlightRules = TextHighlightRules;\n};\n\n(function() {\n this.$defaultBehaviour = new CstyleBehaviour();\n\n this.tokenRe = new RegExp(\"^[\"\n + unicode.packages.L\n + unicode.packages.Mn + unicode.packages.Mc\n + unicode.packages.Nd\n + unicode.packages.Pc + \"\\\\$_]+\", \"g\"\n );\n\n this.nonTokenRe = new RegExp(\"^(?:[^\"\n + unicode.packages.L\n + unicode.packages.Mn + unicode.packages.Mc\n + unicode.packages.Nd\n + unicode.packages.Pc + \"\\\\$_]|\\\\s])+\", \"g\"\n );\n\n this.getTokenizer = function() {\n if (!this.$tokenizer) {\n this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n };\n\n this.lineCommentStart = \"\";\n this.blockComment = \"\";\n\n this.toggleCommentLines = function(state, session, startRow, endRow) {\n var doc = session.doc;\n\n var ignoreBlankLines = true;\n var shouldRemove = true;\n var minIndent = Infinity;\n var tabSize = session.getTabSize();\n var insertAtTabStop = false;\n\n if (!this.lineCommentStart) {\n if (!this.blockComment)\n return false;\n var lineCommentStart = this.blockComment.start;\n var lineCommentEnd = this.blockComment.end;\n var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\n var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\n\n var comment = function(line, i) {\n if (testRemove(line, i))\n return;\n if (!ignoreBlankLines || /\\S/.test(line)) {\n doc.insertInLine({row: i, column: line.length}, lineCommentEnd);\n doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\n }\n };\n\n var uncomment = function(line, i) {\n var m;\n if (m = line.match(regexpEnd))\n doc.removeInLine(i, line.length - m[0].length, line.length);\n if (m = line.match(regexpStart))\n doc.removeInLine(i, m[1].length, m[0].length);\n };\n\n var testRemove = function(line, row) {\n if (regexpStart.test(line))\n return true;\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type === \"comment\")\n return true;\n }\n };\n } else {\n if (Array.isArray(this.lineCommentStart)) {\n var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\n var lineCommentStart = this.lineCommentStart[0];\n } else {\n var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n var lineCommentStart = this.lineCommentStart;\n }\n regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\n \n insertAtTabStop = session.getUseSoftTabs();\n\n var uncomment = function(line, i) {\n var m = line.match(regexpStart);\n if (!m) return;\n var start = m[1].length, end = m[0].length;\n if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\n end--;\n doc.removeInLine(i, start, end);\n };\n var commentWithSpace = lineCommentStart + \" \";\n var comment = function(line, i) {\n if (!ignoreBlankLines || /\\S/.test(line)) {\n if (shouldInsertSpace(line, minIndent, minIndent))\n doc.insertInLine({row: i, column: minIndent}, commentWithSpace);\n else\n doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\n }\n };\n var testRemove = function(line, i) {\n return regexpStart.test(line);\n };\n \n var shouldInsertSpace = function(line, before, after) {\n var spaces = 0;\n while (before-- && line.charAt(before) == \" \")\n spaces++;\n if (spaces % tabSize != 0)\n return false;\n var spaces = 0;\n while (line.charAt(after++) == \" \")\n spaces++;\n if (tabSize > 2)\n return spaces % tabSize != tabSize - 1;\n else\n return spaces % tabSize == 0;\n return true;\n };\n }\n\n function iter(fun) {\n for (var i = startRow; i <= endRow; i++)\n fun(doc.getLine(i), i);\n }\n\n\n var minEmptyLength = Infinity;\n iter(function(line, i) {\n var indent = line.search(/\\S/);\n if (indent !== -1) {\n if (indent < minIndent)\n minIndent = indent;\n if (shouldRemove && !testRemove(line, i))\n shouldRemove = false;\n } else if (minEmptyLength > line.length) {\n minEmptyLength = line.length;\n }\n });\n\n if (minIndent == Infinity) {\n minIndent = minEmptyLength;\n ignoreBlankLines = false;\n shouldRemove = false;\n }\n\n if (insertAtTabStop && minIndent % tabSize != 0)\n minIndent = Math.floor(minIndent / tabSize) * tabSize;\n\n iter(shouldRemove ? uncomment : comment);\n };\n\n this.toggleBlockComment = function(state, session, range, cursor) {\n var comment = this.blockComment;\n if (!comment)\n return;\n if (!comment.start && comment[0])\n comment = comment[0];\n\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n var sel = session.selection;\n var initialRange = session.selection.toOrientedRange();\n var startRow, colDiff;\n\n if (token && /comment/.test(token.type)) {\n var startRange, endRange;\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.start);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n startRange = new Range(row, column, row, column + comment.start.length);\n break;\n }\n token = iterator.stepBackward();\n }\n\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.end);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n endRange = new Range(row, column, row, column + comment.end.length);\n break;\n }\n token = iterator.stepForward();\n }\n if (endRange)\n session.remove(endRange);\n if (startRange) {\n session.remove(startRange);\n startRow = startRange.start.row;\n colDiff = -comment.start.length;\n }\n } else {\n colDiff = comment.start.length;\n startRow = range.start.row;\n session.insert(range.end, comment.end);\n session.insert(range.start, comment.start);\n }\n if (initialRange.start.row == startRow)\n initialRange.start.column += colDiff;\n if (initialRange.end.row == startRow)\n initialRange.end.column += colDiff;\n session.selection.fromOrientedRange(initialRange);\n };\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.checkOutdent = function(state, line, input) {\n return false;\n };\n\n this.autoOutdent = function(state, doc, row) {\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n this.createWorker = function(session) {\n return null;\n };\n\n this.createModeDelegates = function (mapping) {\n this.$embeds = [];\n this.$modes = {};\n for (var i in mapping) {\n if (mapping[i]) {\n this.$embeds.push(i);\n this.$modes[i] = new mapping[i]();\n }\n }\n\n var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\", \n \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\n\n for (var i = 0; i < delegations.length; i++) {\n (function(scope) {\n var functionName = delegations[i];\n var defaultHandler = scope[functionName];\n scope[delegations[i]] = function() {\n return this.$delegator(functionName, arguments, defaultHandler);\n };\n }(this));\n }\n };\n\n this.$delegator = function(method, args, defaultHandler) {\n var state = args[0];\n if (typeof state != \"string\")\n state = state[0];\n for (var i = 0; i < this.$embeds.length; i++) {\n if (!this.$modes[this.$embeds[i]]) continue;\n\n var split = state.split(this.$embeds[i]);\n if (!split[0] && split[1]) {\n args[0] = split[1];\n var mode = this.$modes[this.$embeds[i]];\n return mode[method].apply(mode, args);\n }\n }\n var ret = defaultHandler.apply(this, args);\n return defaultHandler ? ret : undefined;\n };\n\n this.transformAction = function(state, action, editor, session, param) {\n if (this.$behaviour) {\n var behaviours = this.$behaviour.getBehaviours();\n for (var key in behaviours) {\n if (behaviours[key][action]) {\n var ret = behaviours[key][action].apply(this, arguments);\n if (ret) {\n return ret;\n }\n }\n }\n }\n };\n \n this.getKeywords = function(append) {\n if (!this.completionKeywords) {\n var rules = this.$tokenizer.rules;\n var completionKeywords = [];\n for (var rule in rules) {\n var ruleItr = rules[rule];\n for (var r = 0, l = ruleItr.length; r < l; r++) {\n if (typeof ruleItr[r].token === \"string\") {\n if (/keyword|support|storage/.test(ruleItr[r].token))\n completionKeywords.push(ruleItr[r].regex);\n }\n else if (typeof ruleItr[r].token === \"object\") {\n for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { \n if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n completionKeywords.push(rule.substr(1, rule.length - 2));\n }\n }\n }\n }\n }\n this.completionKeywords = completionKeywords;\n }\n if (!append)\n return this.$keywordList;\n return completionKeywords.concat(this.$keywordList || []);\n };\n \n this.$createKeywordList = function() {\n if (!this.$highlightRules)\n this.getTokenizer();\n return this.$keywordList = this.$highlightRules.$keywordList || [];\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n var keywords = this.$keywordList || this.$createKeywordList();\n return keywords.map(function(word) {\n return {\n name: word,\n value: word,\n score: 0,\n meta: \"keyword\"\n };\n });\n };\n\n this.$id = \"ace/mode/text\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nfunction throwDeltaError(delta, errorText){\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\n\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\n\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\n\nexports.applyDelta = function(docLines, delta, doNotValidate) {\n \n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n } else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n } else {\n docLines.splice(\n row, endRow - row + 1,\n line.substring(0, startColumn) + docLines[endRow].substring(endColumn)\n );\n }\n break;\n }\n};\n});\n\nace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\n\nvar Anchor = exports.Anchor = function(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n \n if (typeof column == \"undefined\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.getPosition = function() {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n this.getDocument = function() {\n return this.document;\n };\n this.$insertRight = false;\n this.onChange = function(delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n\n if (delta.start.row > this.row)\n return;\n \n var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n \n function $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n }\n \n function $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n \n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n }\n this.setPosition = function(row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n } else {\n pos = this.$clipPositionToDocument(row, column);\n }\n\n if (this.row == pos.row && this.column == pos.column)\n return;\n\n var old = {\n row: this.row,\n column: this.column\n };\n\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n this.detach = function() {\n this.document.removeEventListener(\"change\", this.$onChange);\n };\n this.attach = function(doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n this.$clipPositionToDocument = function(row, column) {\n var pos = {};\n\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n\n if (column < 0)\n pos.column = 0;\n\n return pos;\n };\n\n}).call(Anchor.prototype);\n\n});\n\nace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar applyDelta = acequire(\"./apply_delta\").applyDelta;\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar Range = acequire(\"./range\").Range;\nvar Anchor = acequire(\"./anchor\").Anchor;\n\nvar Document = function(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n } else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({row: 0, column: 0}, textOrLines);\n } else {\n this.insert({row: 0, column:0}, textOrLines);\n }\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setValue = function(text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({row: 0, column: 0}, text);\n };\n this.getValue = function() {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n this.createAnchor = function(row, column) {\n return new Anchor(this, row, column);\n };\n if (\"aaa\".split(/a/).length === 0) {\n this.$split = function(text) {\n return text.replace(/\\r\\n|\\r/g, \"\\n\").split(\"\\n\");\n };\n } else {\n this.$split = function(text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n }\n\n\n this.$detectNewLine = function(text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n this.getNewLineCharacter = function() {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n\n this.$autoNewLine = \"\";\n this.$newLineMode = \"auto\";\n this.setNewLineMode = function(newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n this.getNewLineMode = function() {\n return this.$newLineMode;\n };\n this.isNewLine = function(text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n this.getLine = function(row) {\n return this.$lines[row] || \"\";\n };\n this.getLines = function(firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n this.getAllLines = function() {\n return this.getLines(0, this.getLength());\n };\n this.getLength = function() {\n return this.$lines.length;\n };\n this.getTextRange = function(range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n this.getLinesForRange = function(range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n } else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n this.insertLines = function(row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n this.removeLines = function(firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n this.insertNewLine = function(position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n this.insert = function(position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n \n return this.insertMergedLines(position, this.$split(text));\n };\n this.insertInLine = function(position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n \n return this.clonePos(end);\n };\n \n this.clippedPos = function(row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n } else if (row < 0) {\n row = 0;\n } else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return {row: row, column: column};\n };\n \n this.clonePos = function(pos) {\n return {row: pos.row, column: pos.column};\n };\n \n this.pos = function(row, column) {\n return {row: row, column: column};\n };\n \n this.$clipPosition = function(position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n } else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n this.insertFullLines = function(row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n } else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({row: row, column: column}, lines);\n }; \n this.insertMergedLines = function(position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n \n return this.clonePos(end);\n };\n this.remove = function(range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({start: start, end: end})\n });\n return this.clonePos(start);\n };\n this.removeInLine = function(row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({start: start, end: end})\n }, true);\n \n return this.clonePos(start);\n };\n this.removeFullLines = function(firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow );\n var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 );\n var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow );\n var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length ); \n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n \n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n this.removeNewLine = function(row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n this.replace = function(range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n \n return end;\n };\n this.applyDeltas = function(deltas) {\n for (var i=0; i=0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n this.applyDelta = function(delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n \n if (isInsert && delta.lines.length > 20000)\n this.$splitAndapplyLargeDelta(delta, 20000);\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n };\n \n this.$splitAndapplyLargeDelta = function(delta, MAX) {\n var lines = delta.lines;\n var l = lines.length;\n var row = delta.start.row; \n var column = delta.start.column;\n var from = 0, to = 0;\n do {\n from = to;\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n if (to > l) {\n delta.lines = chunk;\n delta.start.row = row + from;\n delta.start.column = column;\n break;\n }\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n } while(true);\n };\n this.revertDelta = function(delta) {\n this.applyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n this.indexToPosition = function(index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return {row: i, column: index + lines[i].length + newlineLength};\n }\n return {row: l-1, column: lines[l-1].length};\n };\n this.positionToIndex = function(pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n\n return index + pos.column;\n };\n\n}).call(Document.prototype);\n\nexports.Document = Document;\n});\n\nace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\n\nvar BackgroundTokenizer = function(tokenizer, editor) {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.tokenizer = tokenizer;\n\n var self = this;\n\n this.$worker = function() {\n if (!self.running) { return; }\n\n var workerStart = new Date();\n var currentLine = self.currentLine;\n var endLine = -1;\n var doc = self.doc;\n\n var startLine = currentLine;\n while (self.lines[currentLine])\n currentLine++;\n \n var len = doc.getLength();\n var processedLines = 0;\n self.running = false;\n while (currentLine < len) {\n self.$tokenizeRow(currentLine);\n endLine = currentLine;\n do {\n currentLine++;\n } while (self.lines[currentLine]);\n processedLines ++;\n if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) { \n self.running = setTimeout(self.$worker, 20);\n break;\n }\n }\n self.currentLine = currentLine;\n \n if (endLine == -1)\n endLine = currentLine;\n\n if (startLine <= endLine)\n self.fireUpdateEvent(startLine, endLine);\n };\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n this.setTokenizer = function(tokenizer) {\n this.tokenizer = tokenizer;\n this.lines = [];\n this.states = [];\n\n this.start(0);\n };\n this.setDocument = function(doc) {\n this.doc = doc;\n this.lines = [];\n this.states = [];\n\n this.stop();\n };\n this.fireUpdateEvent = function(firstRow, lastRow) {\n var data = {\n first: firstRow,\n last: lastRow\n };\n this._signal(\"update\", {data: data});\n };\n this.start = function(startRow) {\n this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n this.lines.splice(this.currentLine, this.lines.length);\n this.states.splice(this.currentLine, this.states.length);\n\n this.stop();\n this.running = setTimeout(this.$worker, 700);\n };\n \n this.scheduleStart = function() {\n if (!this.running)\n this.running = setTimeout(this.$worker, 700);\n };\n\n this.$updateOnChange = function(delta) {\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n\n if (len === 0) {\n this.lines[startRow] = null;\n } else if (delta.action == \"remove\") {\n this.lines.splice(startRow, len + 1, null);\n this.states.splice(startRow, len + 1, null);\n } else {\n var args = Array(len + 1);\n args.unshift(startRow, 1);\n this.lines.splice.apply(this.lines, args);\n this.states.splice.apply(this.states, args);\n }\n\n this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n\n this.stop();\n };\n this.stop = function() {\n if (this.running)\n clearTimeout(this.running);\n this.running = false;\n };\n this.getTokens = function(row) {\n return this.lines[row] || this.$tokenizeRow(row);\n };\n this.getState = function(row) {\n if (this.currentLine == row)\n this.$tokenizeRow(row);\n return this.states[row] || \"start\";\n };\n\n this.$tokenizeRow = function(row) {\n var line = this.doc.getLine(row);\n var state = this.states[row - 1];\n\n var data = this.tokenizer.getLineTokens(line, state, row);\n\n if (this.states[row] + \"\" !== data.state + \"\") {\n this.states[row] = data.state;\n this.lines[row + 1] = null;\n if (this.currentLine > row + 1)\n this.currentLine = row + 1;\n } else if (this.currentLine == row) {\n this.currentLine = row + 1;\n }\n\n return this.lines[row] = data.tokens;\n };\n\n}).call(BackgroundTokenizer.prototype);\n\nexports.BackgroundTokenizer = BackgroundTokenizer;\n});\n\nace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar lang = acequire(\"./lib/lang\");\nvar oop = acequire(\"./lib/oop\");\nvar Range = acequire(\"./range\").Range;\n\nvar SearchHighlight = function(regExp, clazz, type) {\n this.setRegexp(regExp);\n this.clazz = clazz;\n this.type = type || \"text\";\n};\n\n(function() {\n this.MAX_RANGES = 500;\n \n this.setRegexp = function(regExp) {\n if (this.regExp+\"\" == regExp+\"\")\n return;\n this.regExp = regExp;\n this.cache = [];\n };\n\n this.update = function(html, markerLayer, session, config) {\n if (!this.regExp)\n return;\n var start = config.firstRow, end = config.lastRow;\n\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null) {\n ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n ranges = ranges.map(function(match) {\n return new Range(i, match.offset, i, match.offset + match.length);\n });\n this.cache[i] = ranges.length ? ranges : \"\";\n }\n\n for (var j = ranges.length; j --; ) {\n markerLayer.drawSingleLineMarker(\n html, ranges[j].toScreenRange(session), this.clazz, config);\n }\n }\n };\n\n}).call(SearchHighlight.prototype);\n\nexports.SearchHighlight = SearchHighlight;\n});\n\nace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\nfunction FoldLine(foldData, folds) {\n this.foldData = foldData;\n if (Array.isArray(folds)) {\n this.folds = folds;\n } else {\n folds = this.folds = [ folds ];\n }\n\n var last = folds[folds.length - 1];\n this.range = new Range(folds[0].start.row, folds[0].start.column,\n last.end.row, last.end.column);\n this.start = this.range.start;\n this.end = this.range.end;\n\n this.folds.forEach(function(fold) {\n fold.setFoldLine(this);\n }, this);\n}\n\n(function() {\n this.shiftRow = function(shift) {\n this.start.row += shift;\n this.end.row += shift;\n this.folds.forEach(function(fold) {\n fold.start.row += shift;\n fold.end.row += shift;\n });\n };\n\n this.addFold = function(fold) {\n if (fold.sameRow) {\n if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\n }\n this.folds.push(fold);\n this.folds.sort(function(a, b) {\n return -a.range.compareEnd(b.start.row, b.start.column);\n });\n if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n } else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n } else if (fold.start.row == this.end.row) {\n this.folds.push(fold);\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n } else if (fold.end.row == this.start.row) {\n this.folds.unshift(fold);\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n } else {\n throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\n }\n fold.foldLine = this;\n };\n\n this.containsRow = function(row) {\n return row >= this.start.row && row <= this.end.row;\n };\n\n this.walk = function(callback, endRow, endColumn) {\n var lastEnd = 0,\n folds = this.folds,\n fold,\n cmp, stop, isNewRow = true;\n\n if (endRow == null) {\n endRow = this.end.row;\n endColumn = this.end.column;\n }\n\n for (var i = 0; i < folds.length; i++) {\n fold = folds[i];\n\n cmp = fold.range.compareStart(endRow, endColumn);\n if (cmp == -1) {\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n return;\n }\n\n stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n if (stop || cmp === 0) {\n return;\n }\n isNewRow = !fold.sameRow;\n lastEnd = fold.end.column;\n }\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n };\n\n this.getNextFoldTo = function(row, column) {\n var fold, cmp;\n for (var i = 0; i < this.folds.length; i++) {\n fold = this.folds[i];\n cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n return {\n fold: fold,\n kind: \"after\"\n };\n } else if (cmp === 0) {\n return {\n fold: fold,\n kind: \"inside\"\n };\n }\n }\n return null;\n };\n\n this.addRemoveChars = function(row, column, len) {\n var ret = this.getNextFoldTo(row, column),\n fold, folds;\n if (ret) {\n fold = ret.fold;\n if (ret.kind == \"inside\"\n && fold.start.column != column\n && fold.start.row != row)\n {\n window.console && window.console.log(row, column, fold);\n } else if (fold.start.row == row) {\n folds = this.folds;\n var i = folds.indexOf(fold);\n if (i === 0) {\n this.start.column += len;\n }\n for (i; i < folds.length; i++) {\n fold = folds[i];\n fold.start.column += len;\n if (!fold.sameRow) {\n return;\n }\n fold.end.column += len;\n }\n this.end.column += len;\n }\n }\n };\n\n this.split = function(row, column) {\n var pos = this.getNextFoldTo(row, column);\n \n if (!pos || pos.kind == \"inside\")\n return null;\n \n var fold = pos.fold;\n var folds = this.folds;\n var foldData = this.foldData;\n \n var i = folds.indexOf(fold);\n var foldBefore = folds[i - 1];\n this.end.row = foldBefore.end.row;\n this.end.column = foldBefore.end.column;\n folds = folds.splice(i, folds.length - i);\n\n var newFoldLine = new FoldLine(foldData, folds);\n foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n return newFoldLine;\n };\n\n this.merge = function(foldLineNext) {\n var folds = foldLineNext.folds;\n for (var i = 0; i < folds.length; i++) {\n this.addFold(folds[i]);\n }\n var foldData = this.foldData;\n foldData.splice(foldData.indexOf(foldLineNext), 1);\n };\n\n this.toString = function() {\n var ret = [this.range.toString() + \": [\" ];\n\n this.folds.forEach(function(fold) {\n ret.push(\" \" + fold.toString());\n });\n ret.push(\"]\");\n return ret.join(\"\\n\");\n };\n\n this.idxToPosition = function(idx) {\n var lastFoldEndColumn = 0;\n\n for (var i = 0; i < this.folds.length; i++) {\n var fold = this.folds[i];\n\n idx -= fold.start.column - lastFoldEndColumn;\n if (idx < 0) {\n return {\n row: fold.start.row,\n column: fold.start.column + idx\n };\n }\n\n idx -= fold.placeholder.length;\n if (idx < 0) {\n return fold.start;\n }\n\n lastFoldEndColumn = fold.end.column;\n }\n\n return {\n row: this.end.row,\n column: this.end.column + idx\n };\n };\n}).call(FoldLine.prototype);\n\nexports.FoldLine = FoldLine;\n});\n\nace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\nvar Range = acequire(\"./range\").Range;\nvar comparePoints = Range.comparePoints;\n\nvar RangeList = function() {\n this.ranges = [];\n};\n\n(function() {\n this.comparePoints = comparePoints;\n\n this.pointIndex = function(pos, excludeEdges, startIndex) {\n var list = this.ranges;\n\n for (var i = startIndex || 0; i < list.length; i++) {\n var range = list[i];\n var cmpEnd = comparePoints(pos, range.end);\n if (cmpEnd > 0)\n continue;\n var cmpStart = comparePoints(pos, range.start);\n if (cmpEnd === 0)\n return excludeEdges && cmpStart !== 0 ? -i-2 : i;\n if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n return i;\n\n return -i-1;\n }\n return -i - 1;\n };\n\n this.add = function(range) {\n var excludeEdges = !range.isEmpty();\n var startIndex = this.pointIndex(range.start, excludeEdges);\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n\n var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n else\n endIndex++;\n return this.ranges.splice(startIndex, endIndex - startIndex, range);\n };\n\n this.addList = function(list) {\n var removed = [];\n for (var i = list.length; i--; ) {\n removed.push.apply(removed, this.add(list[i]));\n }\n return removed;\n };\n\n this.substractPoint = function(pos) {\n var i = this.pointIndex(pos);\n\n if (i >= 0)\n return this.ranges.splice(i, 1);\n };\n this.merge = function() {\n var removed = [];\n var list = this.ranges;\n \n list = list.sort(function(a, b) {\n return comparePoints(a.start, b.start);\n });\n \n var next = list[0], range;\n for (var i = 1; i < list.length; i++) {\n range = next;\n next = list[i];\n var cmp = comparePoints(range.end, next.start);\n if (cmp < 0)\n continue;\n\n if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n continue;\n\n if (comparePoints(range.end, next.end) < 0) {\n range.end.row = next.end.row;\n range.end.column = next.end.column;\n }\n\n list.splice(i, 1);\n removed.push(next);\n next = range;\n i--;\n }\n \n this.ranges = list;\n\n return removed;\n };\n\n this.contains = function(row, column) {\n return this.pointIndex({row: row, column: column}) >= 0;\n };\n\n this.containsPoint = function(pos) {\n return this.pointIndex(pos) >= 0;\n };\n\n this.rangeAtPoint = function(pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges[i];\n };\n\n\n this.clipRows = function(startRow, endRow) {\n var list = this.ranges;\n if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n return [];\n\n var startIndex = this.pointIndex({row: startRow, column: 0});\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex({row: endRow, column: 0}, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n\n var clipped = [];\n for (var i = startIndex; i < endIndex; i++) {\n clipped.push(list[i]);\n }\n return clipped;\n };\n\n this.removeAll = function() {\n return this.ranges.splice(0, this.ranges.length);\n };\n\n this.attach = function(session) {\n if (this.session)\n this.detach();\n\n this.session = session;\n this.onChange = this.$onChange.bind(this);\n\n this.session.on('change', this.onChange);\n };\n\n this.detach = function() {\n if (!this.session)\n return;\n this.session.removeListener('change', this.onChange);\n this.session = null;\n };\n\n this.$onChange = function(delta) {\n if (delta.action == \"insert\"){\n var start = delta.start;\n var end = delta.end;\n } else {\n var end = delta.start;\n var start = delta.end;\n }\n var startRow = start.row;\n var endRow = end.row;\n var lineDif = endRow - startRow;\n\n var colDiff = -start.column + end.column;\n var ranges = this.ranges;\n\n for (var i = 0, n = ranges.length; i < n; i++) {\n var r = ranges[i];\n if (r.end.row < startRow)\n continue;\n if (r.start.row > startRow)\n break;\n\n if (r.start.row == startRow && r.start.column >= start.column ) {\n if (r.start.column == start.column && this.$insertRight) {\n } else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n if (r.end.row == startRow && r.end.column >= start.column) {\n if (r.end.column == start.column && this.$insertRight) {\n continue;\n }\n if (r.end.column == start.column && colDiff > 0 && i < n - 1) { \n if (r.end.column > r.start.column && r.end.column == ranges[i+1].start.column)\n r.end.column -= colDiff;\n }\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n\n if (lineDif != 0 && i < n) {\n for (; i < n; i++) {\n var r = ranges[i];\n r.start.row += lineDif;\n r.end.row += lineDif;\n }\n }\n };\n\n}).call(RangeList.prototype);\n\nexports.RangeList = RangeList;\n});\n\nace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/range_list\",\"ace/lib/oop\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\nvar RangeList = acequire(\"../range_list\").RangeList;\nvar oop = acequire(\"../lib/oop\");\nvar Fold = exports.Fold = function(range, placeholder) {\n this.foldLine = null;\n this.placeholder = placeholder;\n this.range = range;\n this.start = range.start;\n this.end = range.end;\n\n this.sameRow = range.start.row == range.end.row;\n this.subFolds = this.ranges = [];\n};\n\noop.inherits(Fold, RangeList);\n\n(function() {\n\n this.toString = function() {\n return '\"' + this.placeholder + '\" ' + this.range.toString();\n };\n\n this.setFoldLine = function(foldLine) {\n this.foldLine = foldLine;\n this.subFolds.forEach(function(fold) {\n fold.setFoldLine(foldLine);\n });\n };\n\n this.clone = function() {\n var range = this.range.clone();\n var fold = new Fold(range, this.placeholder);\n this.subFolds.forEach(function(subFold) {\n fold.subFolds.push(subFold.clone());\n });\n fold.collapseChildren = this.collapseChildren;\n return fold;\n };\n\n this.addSubFold = function(fold) {\n if (this.range.isEqual(fold))\n return;\n\n if (!this.range.containsRange(fold))\n throw new Error(\"A fold can't intersect already existing fold\" + fold.range + this.range);\n consumeRange(fold, this.start);\n\n var row = fold.start.row, column = fold.start.column;\n for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n cmp = this.subFolds[i].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterStart = this.subFolds[i];\n\n if (cmp == 0)\n return afterStart.addSubFold(fold);\n var row = fold.range.end.row, column = fold.range.end.column;\n for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n cmp = this.subFolds[j].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterEnd = this.subFolds[j];\n\n if (cmp == 0)\n throw new Error(\"A fold can't intersect already existing fold\" + fold.range + this.range);\n\n var consumedFolds = this.subFolds.splice(i, j - i, fold);\n fold.setFoldLine(this.foldLine);\n\n return fold;\n };\n \n this.restoreRange = function(range) {\n return restoreRange(range, this.start);\n };\n\n}).call(Fold.prototype);\n\nfunction consumePoint(point, anchor) {\n point.row -= anchor.row;\n if (point.row == 0)\n point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n consumePoint(range.start, anchor);\n consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n if (point.row == 0)\n point.column += anchor.column;\n point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n restorePoint(range.start, anchor);\n restorePoint(range.end, anchor);\n}\n\n});\n\nace.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, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\nvar FoldLine = acequire(\"./fold_line\").FoldLine;\nvar Fold = acequire(\"./fold\").Fold;\nvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\n\nfunction Folding() {\n this.getFoldAt = function(row, column, side) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine)\n return null;\n\n var folds = foldLine.folds;\n for (var i = 0; i < folds.length; i++) {\n var fold = folds[i];\n if (fold.range.contains(row, column)) {\n if (side == 1 && fold.range.isEnd(row, column)) {\n continue;\n } else if (side == -1 && fold.range.isStart(row, column)) {\n continue;\n }\n return fold;\n }\n }\n };\n this.getFoldsInRange = function(range) {\n var start = range.start;\n var end = range.end;\n var foldLines = this.$foldData;\n var foundFolds = [];\n\n start.column += 1;\n end.column -= 1;\n\n for (var i = 0; i < foldLines.length; i++) {\n var cmp = foldLines[i].range.compareRange(range);\n if (cmp == 2) {\n continue;\n }\n else if (cmp == -2) {\n break;\n }\n\n var folds = foldLines[i].folds;\n for (var j = 0; j < folds.length; j++) {\n var fold = folds[j];\n cmp = fold.range.compareRange(range);\n if (cmp == -2) {\n break;\n } else if (cmp == 2) {\n continue;\n } else\n if (cmp == 42) {\n break;\n }\n foundFolds.push(fold);\n }\n }\n start.column -= 1;\n end.column += 1;\n\n return foundFolds;\n };\n\n this.getFoldsInRangeList = function(ranges) {\n if (Array.isArray(ranges)) {\n var folds = [];\n ranges.forEach(function(range) {\n folds = folds.concat(this.getFoldsInRange(range));\n }, this);\n } else {\n var folds = this.getFoldsInRange(ranges);\n }\n return folds;\n };\n this.getAllFolds = function() {\n var folds = [];\n var foldLines = this.$foldData;\n \n for (var i = 0; i < foldLines.length; i++)\n for (var j = 0; j < foldLines[i].folds.length; j++)\n folds.push(foldLines[i].folds[j]);\n\n return folds;\n };\n this.getFoldStringAt = function(row, column, trim, foldLine) {\n foldLine = foldLine || this.getFoldLine(row);\n if (!foldLine)\n return null;\n\n var lastFold = {\n end: { column: 0 }\n };\n var str, fold;\n for (var i = 0; i < foldLine.folds.length; i++) {\n fold = foldLine.folds[i];\n var cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n str = this\n .getLine(fold.start.row)\n .substring(lastFold.end.column, fold.start.column);\n break;\n }\n else if (cmp === 0) {\n return null;\n }\n lastFold = fold;\n }\n if (!str)\n str = this.getLine(fold.start.row).substring(lastFold.end.column);\n\n if (trim == -1)\n return str.substring(0, column - lastFold.end.column);\n else if (trim == 1)\n return str.substring(column - lastFold.end.column);\n else\n return str;\n };\n\n this.getFoldLine = function(docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n return foldLine;\n } else if (foldLine.end.row > docRow) {\n return null;\n }\n }\n return null;\n };\n this.getNextFoldLine = function(docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.end.row >= docRow) {\n return foldLine;\n }\n }\n return null;\n };\n\n this.getFoldedRowCount = function(first, last) {\n var foldData = this.$foldData, rowCount = last-first+1;\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i],\n end = foldLine.end.row,\n start = foldLine.start.row;\n if (end >= last) {\n if (start < last) {\n if (start >= first)\n rowCount -= last-start;\n else\n rowCount = 0; // in one fold\n }\n break;\n } else if (end >= first){\n if (start >= first) // fold inside range\n rowCount -= end-start;\n else\n rowCount -= end-first+1;\n }\n }\n return rowCount;\n };\n\n this.$addFoldLine = function(foldLine) {\n this.$foldData.push(foldLine);\n this.$foldData.sort(function(a, b) {\n return a.start.row - b.start.row;\n });\n return foldLine;\n };\n this.addFold = function(placeholder, range) {\n var foldData = this.$foldData;\n var added = false;\n var fold;\n \n if (placeholder instanceof Fold)\n fold = placeholder;\n else {\n fold = new Fold(range, placeholder);\n fold.collapseChildren = range.collapseChildren;\n }\n this.$clipRangeToDocument(fold.range);\n\n var startRow = fold.start.row;\n var startColumn = fold.start.column;\n var endRow = fold.end.row;\n var endColumn = fold.end.column;\n if (!(startRow < endRow || \n startRow == endRow && startColumn <= endColumn - 2))\n throw new Error(\"The range has to be at least 2 characters width\");\n\n var startFold = this.getFoldAt(startRow, startColumn, 1);\n var endFold = this.getFoldAt(endRow, endColumn, -1);\n if (startFold && endFold == startFold)\n return startFold.addSubFold(fold);\n\n if (startFold && !startFold.range.isStart(startRow, startColumn))\n this.removeFold(startFold);\n \n if (endFold && !endFold.range.isEnd(endRow, endColumn))\n this.removeFold(endFold);\n var folds = this.getFoldsInRange(fold.range);\n if (folds.length > 0) {\n this.removeFolds(folds);\n folds.forEach(function(subFold) {\n fold.addSubFold(subFold);\n });\n }\n\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (endRow == foldLine.start.row) {\n foldLine.addFold(fold);\n added = true;\n break;\n } else if (startRow == foldLine.end.row) {\n foldLine.addFold(fold);\n added = true;\n if (!fold.sameRow) {\n var foldLineNext = foldData[i + 1];\n if (foldLineNext && foldLineNext.start.row == endRow) {\n foldLine.merge(foldLineNext);\n break;\n }\n }\n break;\n } else if (endRow <= foldLine.start.row) {\n break;\n }\n }\n\n if (!added)\n foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n\n if (this.$useWrapMode)\n this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n else\n this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"add\" });\n\n return fold;\n };\n\n this.addFolds = function(folds) {\n folds.forEach(function(fold) {\n this.addFold(fold);\n }, this);\n };\n\n this.removeFold = function(fold) {\n var foldLine = fold.foldLine;\n var startRow = foldLine.start.row;\n var endRow = foldLine.end.row;\n\n var foldLines = this.$foldData;\n var folds = foldLine.folds;\n if (folds.length == 1) {\n foldLines.splice(foldLines.indexOf(foldLine), 1);\n } else\n if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n folds.pop();\n foldLine.end.row = folds[folds.length - 1].end.row;\n foldLine.end.column = folds[folds.length - 1].end.column;\n } else\n if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n folds.shift();\n foldLine.start.row = folds[0].start.row;\n foldLine.start.column = folds[0].start.column;\n } else\n if (fold.sameRow) {\n folds.splice(folds.indexOf(fold), 1);\n } else\n {\n var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n folds = newFoldLine.folds;\n folds.shift();\n newFoldLine.start.row = folds[0].start.row;\n newFoldLine.start.column = folds[0].start.column;\n }\n\n if (!this.$updating) {\n if (this.$useWrapMode)\n this.$updateWrapData(startRow, endRow);\n else\n this.$updateRowLengthCache(startRow, endRow);\n }\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"remove\" });\n };\n\n this.removeFolds = function(folds) {\n var cloneFolds = [];\n for (var i = 0; i < folds.length; i++) {\n cloneFolds.push(folds[i]);\n }\n\n cloneFolds.forEach(function(fold) {\n this.removeFold(fold);\n }, this);\n this.$modified = true;\n };\n\n this.expandFold = function(fold) {\n this.removeFold(fold);\n fold.subFolds.forEach(function(subFold) {\n fold.restoreRange(subFold);\n this.addFold(subFold);\n }, this);\n if (fold.collapseChildren > 0) {\n this.foldAll(fold.start.row+1, fold.end.row, fold.collapseChildren-1);\n }\n fold.subFolds = [];\n };\n\n this.expandFolds = function(folds) {\n folds.forEach(function(fold) {\n this.expandFold(fold);\n }, this);\n };\n\n this.unfold = function(location, expandInner) {\n var range, folds;\n if (location == null) {\n range = new Range(0, 0, this.getLength(), 0);\n expandInner = true;\n } else if (typeof location == \"number\")\n range = new Range(location, 0, location, this.getLine(location).length);\n else if (\"row\" in location)\n range = Range.fromPoints(location, location);\n else\n range = location;\n \n folds = this.getFoldsInRangeList(range);\n if (expandInner) {\n this.removeFolds(folds);\n } else {\n var subFolds = folds;\n while (subFolds.length) {\n this.expandFolds(subFolds);\n subFolds = this.getFoldsInRangeList(range);\n }\n }\n if (folds.length)\n return folds;\n };\n this.isRowFolded = function(docRow, startFoldRow) {\n return !!this.getFoldLine(docRow, startFoldRow);\n };\n\n this.getRowFoldEnd = function(docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.end.row : docRow;\n };\n\n this.getRowFoldStart = function(docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.start.row : docRow;\n };\n\n this.getFoldDisplayLine = function(foldLine, endRow, endColumn, startRow, startColumn) {\n if (startRow == null)\n startRow = foldLine.start.row;\n if (startColumn == null)\n startColumn = 0;\n if (endRow == null)\n endRow = foldLine.end.row;\n if (endColumn == null)\n endColumn = this.getLine(endRow).length;\n var doc = this.doc;\n var textLine = \"\";\n\n foldLine.walk(function(placeholder, row, column, lastColumn) {\n if (row < startRow)\n return;\n if (row == startRow) {\n if (column < startColumn)\n return;\n lastColumn = Math.max(startColumn, lastColumn);\n }\n\n if (placeholder != null) {\n textLine += placeholder;\n } else {\n textLine += doc.getLine(row).substring(lastColumn, column);\n }\n }, endRow, endColumn);\n return textLine;\n };\n\n this.getDisplayLine = function(row, endColumn, startRow, startColumn) {\n var foldLine = this.getFoldLine(row);\n\n if (!foldLine) {\n var line;\n line = this.doc.getLine(row);\n return line.substring(startColumn || 0, endColumn || line.length);\n } else {\n return this.getFoldDisplayLine(\n foldLine, row, endColumn, startRow, startColumn);\n }\n };\n\n this.$cloneFoldData = function() {\n var fd = [];\n fd = this.$foldData.map(function(foldLine) {\n var folds = foldLine.folds.map(function(fold) {\n return fold.clone();\n });\n return new FoldLine(fd, folds);\n });\n\n return fd;\n };\n\n this.toggleFold = function(tryToUnfold) {\n var selection = this.selection;\n var range = selection.getRange();\n var fold;\n var bracketPos;\n\n if (range.isEmpty()) {\n var cursor = range.start;\n fold = this.getFoldAt(cursor.row, cursor.column);\n\n if (fold) {\n this.expandFold(fold);\n return;\n } else if (bracketPos = this.findMatchingBracket(cursor)) {\n if (range.comparePoint(bracketPos) == 1) {\n range.end = bracketPos;\n } else {\n range.start = bracketPos;\n range.start.column++;\n range.end.column--;\n }\n } else if (bracketPos = this.findMatchingBracket({row: cursor.row, column: cursor.column + 1})) {\n if (range.comparePoint(bracketPos) == 1)\n range.end = bracketPos;\n else\n range.start = bracketPos;\n\n range.start.column++;\n } else {\n range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n }\n } else {\n var folds = this.getFoldsInRange(range);\n if (tryToUnfold && folds.length) {\n this.expandFolds(folds);\n return;\n } else if (folds.length == 1 ) {\n fold = folds[0];\n }\n }\n\n if (!fold)\n fold = this.getFoldAt(range.start.row, range.start.column);\n\n if (fold && fold.range.toString() == range.toString()) {\n this.expandFold(fold);\n return;\n }\n\n var placeholder = \"...\";\n if (!range.isMultiLine()) {\n placeholder = this.getTextRange(range);\n if (placeholder.length < 4)\n return;\n placeholder = placeholder.trim().substring(0, 2) + \"..\";\n }\n\n this.addFold(placeholder, range);\n };\n\n this.getCommentFoldRange = function(row, column, dir) {\n var iterator = new TokenIterator(this, row, column);\n var token = iterator.getCurrentToken();\n var type = token.type;\n if (token && /^comment|string/.test(type)) {\n type = type.match(/comment|string/)[0];\n if (type == \"comment\")\n type += \"|doc-start\";\n var re = new RegExp(type);\n var range = new Range();\n if (dir != 1) {\n do {\n token = iterator.stepBackward();\n } while (token && re.test(token.type));\n iterator.stepForward();\n }\n \n range.start.row = iterator.getCurrentTokenRow();\n range.start.column = iterator.getCurrentTokenColumn() + 2;\n\n iterator = new TokenIterator(this, row, column);\n \n if (dir != -1) {\n var lastRow = -1;\n do {\n token = iterator.stepForward();\n if (lastRow == -1) {\n var state = this.getState(iterator.$row);\n if (!re.test(state))\n lastRow = iterator.$row;\n } else if (iterator.$row > lastRow) {\n break;\n }\n } while (token && re.test(token.type));\n token = iterator.stepBackward();\n } else\n token = iterator.getCurrentToken();\n\n range.end.row = iterator.getCurrentTokenRow();\n range.end.column = iterator.getCurrentTokenColumn() + token.value.length - 2;\n return range;\n }\n };\n\n this.foldAll = function(startRow, endRow, depth) {\n if (depth == undefined)\n depth = 100000; // JSON.stringify doesn't hanle Infinity\n var foldWidgets = this.foldWidgets;\n if (!foldWidgets)\n return; // mode doesn't support folding\n endRow = endRow || this.getLength();\n startRow = startRow || 0;\n for (var row = startRow; row < endRow; row++) {\n if (foldWidgets[row] == null)\n foldWidgets[row] = this.getFoldWidget(row);\n if (foldWidgets[row] != \"start\")\n continue;\n\n var range = this.getFoldWidgetRange(row);\n if (range && range.isMultiLine()\n && range.end.row <= endRow\n && range.start.row >= startRow\n ) {\n row = range.end.row;\n try {\n var fold = this.addFold(\"...\", range);\n if (fold)\n fold.collapseChildren = depth;\n } catch(e) {}\n }\n }\n };\n this.$foldStyles = {\n \"manual\": 1,\n \"markbegin\": 1,\n \"markbeginend\": 1\n };\n this.$foldStyle = \"markbegin\";\n this.setFoldStyle = function(style) {\n if (!this.$foldStyles[style])\n throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\n \n if (this.$foldStyle == style)\n return;\n\n this.$foldStyle = style;\n \n if (style == \"manual\")\n this.unfold();\n var mode = this.$foldMode;\n this.$setFolding(null);\n this.$setFolding(mode);\n };\n\n this.$setFolding = function(foldMode) {\n if (this.$foldMode == foldMode)\n return;\n \n this.$foldMode = foldMode;\n \n this.off('change', this.$updateFoldWidgets);\n this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n this._signal(\"changeAnnotation\");\n \n if (!foldMode || this.$foldStyle == \"manual\") {\n this.foldWidgets = null;\n return;\n }\n \n this.foldWidgets = [];\n this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n \n this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n this.on('change', this.$updateFoldWidgets);\n this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n };\n\n this.getParentFoldRangeData = function (row, ignoreCurrent) {\n var fw = this.foldWidgets;\n if (!fw || (ignoreCurrent && fw[row]))\n return {};\n\n var i = row - 1, firstRange;\n while (i >= 0) {\n var c = fw[i];\n if (c == null)\n c = fw[i] = this.getFoldWidget(i);\n\n if (c == \"start\") {\n var range = this.getFoldWidgetRange(i);\n if (!firstRange)\n firstRange = range;\n if (range && range.end.row >= row)\n break;\n }\n i--;\n }\n\n return {\n range: i !== -1 && range,\n firstRange: firstRange\n };\n };\n\n this.onFoldWidgetClick = function(row, e) {\n e = e.domEvent;\n var options = {\n children: e.shiftKey,\n all: e.ctrlKey || e.metaKey,\n siblings: e.altKey\n };\n \n var range = this.$toggleFoldWidget(row, options);\n if (!range) {\n var el = (e.target || e.srcElement);\n if (el && /ace_fold-widget/.test(el.className))\n el.className += \" ace_invalid\";\n }\n };\n \n this.$toggleFoldWidget = function(row, options) {\n if (!this.getFoldWidget)\n return;\n var type = this.getFoldWidget(row);\n var line = this.getLine(row);\n\n var dir = type === \"end\" ? -1 : 1;\n var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n\n if (fold) {\n if (options.children || options.all)\n this.removeFold(fold);\n else\n this.expandFold(fold);\n return fold;\n }\n\n var range = this.getFoldWidgetRange(row, true);\n if (range && !range.isMultiLine()) {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n return fold;\n }\n }\n \n if (options.siblings) {\n var data = this.getParentFoldRangeData(row);\n if (data.range) {\n var startRow = data.range.start.row + 1;\n var endRow = data.range.end.row;\n }\n this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n } else if (options.children) {\n endRow = range ? range.end.row : this.getLength();\n this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n } else if (range) {\n if (options.all) \n range.collapseChildren = 10000;\n this.addFold(\"...\", range);\n }\n \n return range;\n };\n \n \n \n this.toggleFoldWidget = function(toggleParent) {\n var row = this.selection.getCursor().row;\n row = this.getRowFoldStart(row);\n var range = this.$toggleFoldWidget(row, {});\n \n if (range)\n return;\n var data = this.getParentFoldRangeData(row, true);\n range = data.range || data.firstRange;\n \n if (range) {\n row = range.start.row;\n var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n\n if (fold) {\n this.removeFold(fold);\n } else {\n this.addFold(\"...\", range);\n }\n }\n };\n\n this.updateFoldWidgets = function(delta) {\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n\n if (len === 0) {\n this.foldWidgets[firstRow] = null;\n } else if (delta.action == 'remove') {\n this.foldWidgets.splice(firstRow, len + 1, null);\n } else {\n var args = Array(len + 1);\n args.unshift(firstRow, 1);\n this.foldWidgets.splice.apply(this.foldWidgets, args);\n }\n };\n this.tokenizerUpdateFoldWidgets = function(e) {\n var rows = e.data;\n if (rows.first != rows.last) {\n if (this.foldWidgets.length > rows.first)\n this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n }\n };\n}\n\nexports.Folding = Folding;\n\n});\n\nace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\nvar Range = acequire(\"../range\").Range;\n\n\nfunction BracketMatch() {\n\n this.findMatchingBracket = function(position, chr) {\n if (position.column == 0) return null;\n\n var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column-1);\n if (charBeforeCursor == \"\") return null;\n\n var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match)\n return null;\n\n if (match[1])\n return this.$findClosingBracket(match[1], position);\n else\n return this.$findOpeningBracket(match[2], position);\n };\n \n this.getBracketRange = function(pos) {\n var line = this.getLine(pos.row);\n var before = true, range;\n\n var chr = line.charAt(pos.column-1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = {row: pos.row, column: pos.column + 1};\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n before = false;\n }\n if (!match)\n return null;\n\n if (match[1]) {\n var bracketPos = this.$findClosingBracket(match[1], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(pos, bracketPos);\n if (!before) {\n range.end.column++;\n range.start.column--;\n }\n range.cursor = range.end;\n } else {\n var bracketPos = this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(bracketPos, pos);\n if (!before) {\n range.start.column++;\n range.end.column--;\n }\n range.cursor = range.start;\n }\n \n return range;\n };\n\n this.$brackets = {\n \")\": \"(\",\n \"(\": \")\",\n \"]\": \"[\",\n \"[\": \"]\",\n \"{\": \"}\",\n \"}\": \"{\"\n };\n\n this.$findOpeningBracket = function(bracket, position, typeRe) {\n var openBracket = this.$brackets[bracket];\n var depth = 1;\n\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n \n if (!typeRe){\n typeRe = new RegExp(\n \"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\n .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\n + \")+\"\n );\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n var value = token.value;\n \n while (true) {\n \n while (valueIndex >= 0) {\n var chr = value.charAt(valueIndex);\n if (chr == openBracket) {\n depth -= 1;\n if (depth == 0) {\n return {row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn()};\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex -= 1;\n }\n do {\n token = iterator.stepBackward();\n } while (token && !typeRe.test(token.type));\n\n if (token == null)\n break;\n \n value = token.value;\n valueIndex = value.length - 1;\n }\n \n return null;\n };\n\n this.$findClosingBracket = function(bracket, position, typeRe) {\n var closingBracket = this.$brackets[bracket];\n var depth = 1;\n\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n\n if (!typeRe){\n typeRe = new RegExp(\n \"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\n .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\n + \")+\"\n );\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn();\n\n while (true) {\n\n var value = token.value;\n var valueLength = value.length;\n while (valueIndex < valueLength) {\n var chr = value.charAt(valueIndex);\n if (chr == closingBracket) {\n depth -= 1;\n if (depth == 0) {\n return {row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn()};\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex += 1;\n }\n do {\n token = iterator.stepForward();\n } while (token && !typeRe.test(token.type));\n\n if (token == null)\n break;\n\n valueIndex = 0;\n }\n \n return null;\n };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"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, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar lang = acequire(\"./lib/lang\");\nvar BidiHandler = acequire(\"./bidihandler\").BidiHandler;\nvar config = acequire(\"./config\");\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar Selection = acequire(\"./selection\").Selection;\nvar TextMode = acequire(\"./mode/text\").Mode;\nvar Range = acequire(\"./range\").Range;\nvar Document = acequire(\"./document\").Document;\nvar BackgroundTokenizer = acequire(\"./background_tokenizer\").BackgroundTokenizer;\nvar SearchHighlight = acequire(\"./search_highlight\").SearchHighlight;\n\nvar EditSession = function(text, mode) {\n this.$breakpoints = [];\n this.$decorations = [];\n this.$frontMarkers = {};\n this.$backMarkers = {};\n this.$markerId = 1;\n this.$undoSelect = true;\n\n this.$foldData = [];\n this.id = \"session\" + (++EditSession.$uid);\n this.$foldData.toString = function() {\n return this.join(\"\\n\");\n };\n this.on(\"changeFold\", this.onChangeFold.bind(this));\n this.$onChange = this.onChange.bind(this);\n\n if (typeof text != \"object\" || !text.getLine)\n text = new Document(text);\n\n this.$bidiHandler = new BidiHandler(this);\n this.setDocument(text);\n this.selection = new Selection(this);\n\n config.resetOptions(this);\n this.setMode(mode);\n config._signal(\"session\", this);\n};\n\n\nEditSession.$uid = 0;\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setDocument = function(doc) {\n if (this.doc)\n this.doc.removeListener(\"change\", this.$onChange);\n\n this.doc = doc;\n doc.on(\"change\", this.$onChange);\n\n if (this.bgTokenizer)\n this.bgTokenizer.setDocument(this.getDocument());\n\n this.resetCaches();\n };\n this.getDocument = function() {\n return this.doc;\n };\n this.$resetRowCache = function(docRow) {\n if (!docRow) {\n this.$docRowCache = [];\n this.$screenRowCache = [];\n return;\n }\n var l = this.$docRowCache.length;\n var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n if (l > i) {\n this.$docRowCache.splice(i, l);\n this.$screenRowCache.splice(i, l);\n }\n };\n\n this.$getRowCacheIndex = function(cacheArray, val) {\n var low = 0;\n var hi = cacheArray.length - 1;\n\n while (low <= hi) {\n var mid = (low + hi) >> 1;\n var c = cacheArray[mid];\n\n if (val > c)\n low = mid + 1;\n else if (val < c)\n hi = mid - 1;\n else\n return mid;\n }\n\n return low -1;\n };\n\n this.resetCaches = function() {\n this.$modified = true;\n this.$wrapData = [];\n this.$rowLengthCache = [];\n this.$resetRowCache(0);\n if (this.bgTokenizer)\n this.bgTokenizer.start(0);\n };\n\n this.onChangeFold = function(e) {\n var fold = e.data;\n this.$resetRowCache(fold.start.row);\n };\n\n this.onChange = function(delta) {\n this.$modified = true;\n this.$bidiHandler.onChange(delta);\n this.$resetRowCache(delta.start.row);\n\n var removedFolds = this.$updateInternalDataOnChange(delta);\n if (!this.$fromUndo && this.$undoManager && !delta.ignore) {\n this.$deltasDoc.push(delta);\n if (removedFolds && removedFolds.length != 0) {\n this.$deltasFold.push({\n action: \"removeFolds\",\n folds: removedFolds\n });\n }\n\n this.$informUndoManager.schedule();\n }\n\n this.bgTokenizer && this.bgTokenizer.$updateOnChange(delta);\n this._signal(\"change\", delta);\n };\n this.setValue = function(text) {\n this.doc.setValue(text);\n this.selection.moveTo(0, 0);\n\n this.$resetRowCache(0);\n this.$deltas = [];\n this.$deltasDoc = [];\n this.$deltasFold = [];\n this.setUndoManager(this.$undoManager);\n this.getUndoManager().reset();\n };\n this.getValue =\n this.toString = function() {\n return this.doc.getValue();\n };\n this.getSelection = function() {\n return this.selection;\n };\n this.getState = function(row) {\n return this.bgTokenizer.getState(row);\n };\n this.getTokens = function(row) {\n return this.bgTokenizer.getTokens(row);\n };\n this.getTokenAt = function(row, column) {\n var tokens = this.bgTokenizer.getTokens(row);\n var token, c = 0;\n if (column == null) {\n var i = tokens.length - 1;\n c = this.getLine(row).length;\n } else {\n for (var i = 0; i < tokens.length; i++) {\n c += tokens[i].value.length;\n if (c >= column)\n break;\n }\n }\n token = tokens[i];\n if (!token)\n return null;\n token.index = i;\n token.start = c - token.value.length;\n return token;\n };\n this.setUndoManager = function(undoManager) {\n this.$undoManager = undoManager;\n this.$deltas = [];\n this.$deltasDoc = [];\n this.$deltasFold = [];\n\n if (this.$informUndoManager)\n this.$informUndoManager.cancel();\n\n if (undoManager) {\n var self = this;\n\n this.$syncInformUndoManager = function() {\n self.$informUndoManager.cancel();\n\n if (self.$deltasFold.length) {\n self.$deltas.push({\n group: \"fold\",\n deltas: self.$deltasFold\n });\n self.$deltasFold = [];\n }\n\n if (self.$deltasDoc.length) {\n self.$deltas.push({\n group: \"doc\",\n deltas: self.$deltasDoc\n });\n self.$deltasDoc = [];\n }\n\n if (self.$deltas.length > 0) {\n undoManager.execute({\n action: \"aceupdate\",\n args: [self.$deltas, self],\n merge: self.mergeUndoDeltas\n });\n }\n self.mergeUndoDeltas = false;\n self.$deltas = [];\n };\n this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n }\n };\n this.markUndoGroup = function() {\n if (this.$syncInformUndoManager)\n this.$syncInformUndoManager();\n };\n \n this.$defaultUndoManager = {\n undo: function() {},\n redo: function() {},\n reset: function() {}\n };\n this.getUndoManager = function() {\n return this.$undoManager || this.$defaultUndoManager;\n };\n this.getTabString = function() {\n if (this.getUseSoftTabs()) {\n return lang.stringRepeat(\" \", this.getTabSize());\n } else {\n return \"\\t\";\n }\n };\n this.setUseSoftTabs = function(val) {\n this.setOption(\"useSoftTabs\", val);\n };\n this.getUseSoftTabs = function() {\n return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n };\n this.setTabSize = function(tabSize) {\n this.setOption(\"tabSize\", tabSize);\n };\n this.getTabSize = function() {\n return this.$tabSize;\n };\n this.isTabStop = function(position) {\n return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n };\n this.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) {\n this.setOption(\"navigateWithinSoftTabs\", navigateWithinSoftTabs);\n };\n this.getNavigateWithinSoftTabs = function() {\n return this.$navigateWithinSoftTabs;\n };\n\n this.$overwrite = false;\n this.setOverwrite = function(overwrite) {\n this.setOption(\"overwrite\", overwrite);\n };\n this.getOverwrite = function() {\n return this.$overwrite;\n };\n this.toggleOverwrite = function() {\n this.setOverwrite(!this.$overwrite);\n };\n this.addGutterDecoration = function(row, className) {\n if (!this.$decorations[row])\n this.$decorations[row] = \"\";\n this.$decorations[row] += \" \" + className;\n this._signal(\"changeBreakpoint\", {});\n };\n this.removeGutterDecoration = function(row, className) {\n this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\n this._signal(\"changeBreakpoint\", {});\n };\n this.getBreakpoints = function() {\n return this.$breakpoints;\n };\n this.setBreakpoints = function(rows) {\n this.$breakpoints = [];\n for (var i=0; i 0)\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n\n if (!inToken)\n inToken = !!line.charAt(column).match(this.tokenRe);\n\n if (inToken)\n var re = this.tokenRe;\n else if (/^\\s+$/.test(line.slice(column-1, column+1)))\n var re = /\\s/;\n else\n var re = this.nonTokenRe;\n\n var start = column;\n if (start > 0) {\n do {\n start--;\n }\n while (start >= 0 && line.charAt(start).match(re));\n start++;\n }\n\n var end = column;\n while (end < line.length && line.charAt(end).match(re)) {\n end++;\n }\n\n return new Range(row, start, row, end);\n };\n this.getAWordRange = function(row, column) {\n var wordRange = this.getWordRange(row, column);\n var line = this.getLine(wordRange.end.row);\n\n while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n wordRange.end.column += 1;\n }\n return wordRange;\n };\n this.setNewLineMode = function(newLineMode) {\n this.doc.setNewLineMode(newLineMode);\n };\n this.getNewLineMode = function() {\n return this.doc.getNewLineMode();\n };\n this.setUseWorker = function(useWorker) { this.setOption(\"useWorker\", useWorker); };\n this.getUseWorker = function() { return this.$useWorker; };\n this.onReloadTokenizer = function(e) {\n var rows = e.data;\n this.bgTokenizer.start(rows.first);\n this._signal(\"tokenizerUpdate\", e);\n };\n\n this.$modes = {};\n this.$mode = null;\n this.$modeId = null;\n this.setMode = function(mode, cb) {\n if (mode && typeof mode === \"object\") {\n if (mode.getTokenizer)\n return this.$onChangeMode(mode);\n var options = mode;\n var path = options.path;\n } else {\n path = mode || \"ace/mode/text\";\n }\n if (!this.$modes[\"ace/mode/text\"])\n this.$modes[\"ace/mode/text\"] = new TextMode();\n\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n cb && cb();\n return;\n }\n this.$modeId = path;\n config.loadModule([\"mode\", path], function(m) {\n if (this.$modeId !== path)\n return cb && cb();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n } else if (m && m.Mode) {\n m = new m.Mode(options);\n if (!options) {\n this.$modes[path] = m;\n m.$id = path;\n }\n this.$onChangeMode(m);\n }\n cb && cb();\n }.bind(this));\n if (!this.$mode)\n this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\n };\n\n this.$onChangeMode = function(mode, $isPlaceholder) {\n if (!$isPlaceholder)\n this.$modeId = mode.$id;\n if (this.$mode === mode) \n return;\n\n this.$mode = mode;\n\n this.$stopWorker();\n\n if (this.$useWorker)\n this.$startWorker();\n\n var tokenizer = mode.getTokenizer();\n\n if(tokenizer.addEventListener !== undefined) {\n var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n tokenizer.addEventListener(\"update\", onReloadTokenizer);\n }\n\n if (!this.bgTokenizer) {\n this.bgTokenizer = new BackgroundTokenizer(tokenizer);\n var _self = this;\n this.bgTokenizer.addEventListener(\"update\", function(e) {\n _self._signal(\"tokenizerUpdate\", e);\n });\n } else {\n this.bgTokenizer.setTokenizer(tokenizer);\n }\n\n this.bgTokenizer.setDocument(this.getDocument());\n\n this.tokenRe = mode.tokenRe;\n this.nonTokenRe = mode.nonTokenRe;\n\n \n if (!$isPlaceholder) {\n if (mode.attachToSession)\n mode.attachToSession(this);\n this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n this.$setFolding(mode.foldingRules);\n this.bgTokenizer.start(0);\n this._emit(\"changeMode\");\n }\n };\n\n this.$stopWorker = function() {\n if (this.$worker) {\n this.$worker.terminate();\n this.$worker = null;\n }\n };\n\n this.$startWorker = function() {\n try {\n this.$worker = this.$mode.createWorker(this);\n } catch (e) {\n config.warn(\"Could not load worker\", e);\n this.$worker = null;\n }\n };\n this.getMode = function() {\n return this.$mode;\n };\n\n this.$scrollTop = 0;\n this.setScrollTop = function(scrollTop) {\n if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n return;\n\n this.$scrollTop = scrollTop;\n this._signal(\"changeScrollTop\", scrollTop);\n };\n this.getScrollTop = function() {\n return this.$scrollTop;\n };\n\n this.$scrollLeft = 0;\n this.setScrollLeft = function(scrollLeft) {\n if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n return;\n\n this.$scrollLeft = scrollLeft;\n this._signal(\"changeScrollLeft\", scrollLeft);\n };\n this.getScrollLeft = function() {\n return this.$scrollLeft;\n };\n this.getScreenWidth = function() {\n this.$computeWidth();\n if (this.lineWidgets) \n return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n return this.screenWidth;\n };\n \n this.getLineWidgetMaxWidth = function() {\n if (this.lineWidgetsWidth != null) return this.lineWidgetsWidth;\n var width = 0;\n this.lineWidgets.forEach(function(w) {\n if (w && w.screenWidth > width)\n width = w.screenWidth;\n });\n return this.lineWidgetWidth = width;\n };\n\n this.$computeWidth = function(force) {\n if (this.$modified || force) {\n this.$modified = false;\n\n if (this.$useWrapMode)\n return this.screenWidth = this.$wrapLimit;\n\n var lines = this.doc.getAllLines();\n var cache = this.$rowLengthCache;\n var longestScreenLine = 0;\n var foldIndex = 0;\n var foldLine = this.$foldData[foldIndex];\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n var len = lines.length;\n\n for (var i = 0; i < len; i++) {\n if (i > foldStart) {\n i = foldLine.end.row + 1;\n if (i >= len)\n break;\n foldLine = this.$foldData[foldIndex++];\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n\n if (cache[i] == null)\n cache[i] = this.$getStringScreenWidth(lines[i])[0];\n\n if (cache[i] > longestScreenLine)\n longestScreenLine = cache[i];\n }\n this.screenWidth = longestScreenLine;\n }\n };\n this.getLine = function(row) {\n return this.doc.getLine(row);\n };\n this.getLines = function(firstRow, lastRow) {\n return this.doc.getLines(firstRow, lastRow);\n };\n this.getLength = function() {\n return this.doc.getLength();\n };\n this.getTextRange = function(range) {\n return this.doc.getTextRange(range || this.selection.getRange());\n };\n this.insert = function(position, text) {\n return this.doc.insert(position, text);\n };\n this.remove = function(range) {\n return this.doc.remove(range);\n };\n this.removeFullLines = function(firstRow, lastRow){\n return this.doc.removeFullLines(firstRow, lastRow);\n };\n this.undoChanges = function(deltas, dontSelect) {\n if (!deltas.length)\n return;\n\n this.$fromUndo = true;\n var lastUndoRange = null;\n for (var i = deltas.length - 1; i != -1; i--) {\n var delta = deltas[i];\n if (delta.group == \"doc\") {\n this.doc.revertDeltas(delta.deltas);\n lastUndoRange =\n this.$getUndoSelection(delta.deltas, true, lastUndoRange);\n } else {\n delta.deltas.forEach(function(foldDelta) {\n this.addFolds(foldDelta.folds);\n }, this);\n }\n }\n this.$fromUndo = false;\n lastUndoRange &&\n this.$undoSelect &&\n !dontSelect &&\n this.selection.setSelectionRange(lastUndoRange);\n return lastUndoRange;\n };\n this.redoChanges = function(deltas, dontSelect) {\n if (!deltas.length)\n return;\n\n this.$fromUndo = true;\n var lastUndoRange = null;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (delta.group == \"doc\") {\n this.doc.applyDeltas(delta.deltas);\n lastUndoRange =\n this.$getUndoSelection(delta.deltas, false, lastUndoRange);\n }\n }\n this.$fromUndo = false;\n lastUndoRange &&\n this.$undoSelect &&\n !dontSelect &&\n this.selection.setSelectionRange(lastUndoRange);\n return lastUndoRange;\n };\n this.setUndoSelect = function(enable) {\n this.$undoSelect = enable;\n };\n\n this.$getUndoSelection = function(deltas, isUndo, lastUndoRange) {\n function isInsert(delta) {\n return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\n }\n\n var delta = deltas[0];\n var range, point;\n var lastDeltaIsInsert = false;\n if (isInsert(delta)) {\n range = Range.fromPoints(delta.start, delta.end);\n lastDeltaIsInsert = true;\n } else {\n range = Range.fromPoints(delta.start, delta.start);\n lastDeltaIsInsert = false;\n }\n\n for (var i = 1; i < deltas.length; i++) {\n delta = deltas[i];\n if (isInsert(delta)) {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range.setStart(point);\n }\n point = delta.end;\n if (range.compare(point.row, point.column) == 1) {\n range.setEnd(point);\n }\n lastDeltaIsInsert = true;\n } else {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range = Range.fromPoints(delta.start, delta.start);\n }\n lastDeltaIsInsert = false;\n }\n }\n if (lastUndoRange != null) {\n if (Range.comparePoints(lastUndoRange.start, range.start) === 0) {\n lastUndoRange.start.column += range.end.column - range.start.column;\n lastUndoRange.end.column += range.end.column - range.start.column;\n }\n\n var cmp = lastUndoRange.compareRange(range);\n if (cmp == 1) {\n range.setStart(lastUndoRange.start);\n } else if (cmp == -1) {\n range.setEnd(lastUndoRange.end);\n }\n }\n\n return range;\n };\n this.replace = function(range, text) {\n return this.doc.replace(range, text);\n };\n this.moveText = function(fromRange, toPosition, copy) {\n var text = this.getTextRange(fromRange);\n var folds = this.getFoldsInRange(fromRange);\n\n var toRange = Range.fromPoints(toPosition, toPosition);\n if (!copy) {\n this.remove(fromRange);\n var rowDiff = fromRange.start.row - fromRange.end.row;\n var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n if (collDiff) {\n if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n toRange.start.column += collDiff;\n if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n toRange.end.column += collDiff;\n }\n if (rowDiff && toRange.start.row >= fromRange.end.row) {\n toRange.start.row += rowDiff;\n toRange.end.row += rowDiff;\n }\n }\n\n toRange.end = this.insert(toRange.start, text);\n if (folds.length) {\n var oldStart = fromRange.start;\n var newStart = toRange.start;\n var rowDiff = newStart.row - oldStart.row;\n var collDiff = newStart.column - oldStart.column;\n this.addFolds(folds.map(function(x) {\n x = x.clone();\n if (x.start.row == oldStart.row)\n x.start.column += collDiff;\n if (x.end.row == oldStart.row)\n x.end.column += collDiff;\n x.start.row += rowDiff;\n x.end.row += rowDiff;\n return x;\n }));\n }\n\n return toRange;\n };\n this.indentRows = function(startRow, endRow, indentString) {\n indentString = indentString.replace(/\\t/g, this.getTabString());\n for (var row=startRow; row<=endRow; row++)\n this.doc.insertInLine({row: row, column: 0}, indentString);\n };\n this.outdentRows = function (range) {\n var rowRange = range.collapseRows();\n var deleteRange = new Range(0, 0, 0, 0);\n var size = this.getTabSize();\n\n for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n var line = this.getLine(i);\n\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n for (var j = 0; j < size; ++j)\n if (line.charAt(j) != ' ')\n break;\n if (j < size && line.charAt(j) == '\\t') {\n deleteRange.start.column = j;\n deleteRange.end.column = j + 1;\n } else {\n deleteRange.start.column = 0;\n deleteRange.end.column = j;\n }\n this.remove(deleteRange);\n }\n };\n\n this.$moveLines = function(firstRow, lastRow, dir) {\n firstRow = this.getRowFoldStart(firstRow);\n lastRow = this.getRowFoldEnd(lastRow);\n if (dir < 0) {\n var row = this.getRowFoldStart(firstRow + dir);\n if (row < 0) return 0;\n var diff = row-firstRow;\n } else if (dir > 0) {\n var row = this.getRowFoldEnd(lastRow + dir);\n if (row > this.doc.getLength()-1) return 0;\n var diff = row-lastRow;\n } else {\n firstRow = this.$clipRowToDocument(firstRow);\n lastRow = this.$clipRowToDocument(lastRow);\n var diff = lastRow - firstRow + 1;\n }\n\n var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n var folds = this.getFoldsInRange(range).map(function(x){\n x = x.clone();\n x.start.row += diff;\n x.end.row += diff;\n return x;\n });\n \n var lines = dir == 0\n ? this.doc.getLines(firstRow, lastRow)\n : this.doc.removeFullLines(firstRow, lastRow);\n this.doc.insertFullLines(firstRow+diff, lines);\n folds.length && this.addFolds(folds);\n return diff;\n };\n this.moveLinesUp = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, -1);\n };\n this.moveLinesDown = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 1);\n };\n this.duplicateLines = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 0);\n };\n\n\n this.$clipRowToDocument = function(row) {\n return Math.max(0, Math.min(row, this.doc.getLength()-1));\n };\n\n this.$clipColumnToRow = function(row, column) {\n if (column < 0)\n return 0;\n return Math.min(this.doc.getLine(row).length, column);\n };\n\n\n this.$clipPositionToDocument = function(row, column) {\n column = Math.max(0, column);\n\n if (row < 0) {\n row = 0;\n column = 0;\n } else {\n var len = this.doc.getLength();\n if (row >= len) {\n row = len - 1;\n column = this.doc.getLine(len-1).length;\n } else {\n column = Math.min(this.doc.getLine(row).length, column);\n }\n }\n\n return {\n row: row,\n column: column\n };\n };\n\n this.$clipRangeToDocument = function(range) {\n if (range.start.row < 0) {\n range.start.row = 0;\n range.start.column = 0;\n } else {\n range.start.column = this.$clipColumnToRow(\n range.start.row,\n range.start.column\n );\n }\n\n var len = this.doc.getLength() - 1;\n if (range.end.row > len) {\n range.end.row = len;\n range.end.column = this.doc.getLine(len).length;\n } else {\n range.end.column = this.$clipColumnToRow(\n range.end.row,\n range.end.column\n );\n }\n return range;\n };\n this.$wrapLimit = 80;\n this.$useWrapMode = false;\n this.$wrapLimitRange = {\n min : null,\n max : null\n };\n this.setUseWrapMode = function(useWrapMode) {\n if (useWrapMode != this.$useWrapMode) {\n this.$useWrapMode = useWrapMode;\n this.$modified = true;\n this.$resetRowCache(0);\n if (useWrapMode) {\n var len = this.getLength();\n this.$wrapData = Array(len);\n this.$updateWrapData(0, len - 1);\n }\n\n this._signal(\"changeWrapMode\");\n }\n };\n this.getUseWrapMode = function() {\n return this.$useWrapMode;\n };\n this.setWrapLimitRange = function(min, max) {\n if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n this.$wrapLimitRange = { min: min, max: max };\n this.$modified = true;\n this.$bidiHandler.markAsDirty();\n if (this.$useWrapMode)\n this._signal(\"changeWrapMode\");\n }\n };\n this.adjustWrapLimit = function(desiredLimit, $printMargin) {\n var limits = this.$wrapLimitRange;\n if (limits.max < 0)\n limits = {min: $printMargin, max: $printMargin};\n var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n this.$wrapLimit = wrapLimit;\n this.$modified = true;\n if (this.$useWrapMode) {\n this.$updateWrapData(0, this.getLength() - 1);\n this.$resetRowCache(0);\n this._signal(\"changeWrapLimit\");\n }\n return true;\n }\n return false;\n };\n\n this.$constrainWrapLimit = function(wrapLimit, min, max) {\n if (min)\n wrapLimit = Math.max(min, wrapLimit);\n\n if (max)\n wrapLimit = Math.min(max, wrapLimit);\n\n return wrapLimit;\n };\n this.getWrapLimit = function() {\n return this.$wrapLimit;\n };\n this.setWrapLimit = function (limit) {\n this.setWrapLimitRange(limit, limit);\n };\n this.getWrapLimitRange = function() {\n return {\n min : this.$wrapLimitRange.min,\n max : this.$wrapLimitRange.max\n };\n };\n\n this.$updateInternalDataOnChange = function(delta) {\n var useWrapMode = this.$useWrapMode;\n var action = delta.action;\n var start = delta.start;\n var end = delta.end;\n var firstRow = start.row;\n var lastRow = end.row;\n var len = lastRow - firstRow;\n var removedFolds = null;\n \n this.$updating = true;\n if (len != 0) {\n if (action === \"remove\") {\n this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\n\n var foldLines = this.$foldData;\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n\n var foldLine = this.getFoldLine(end.row);\n var idx = 0;\n if (foldLine) {\n foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n foldLine.shiftRow(-len);\n\n var foldLineBefore = this.getFoldLine(firstRow);\n if (foldLineBefore && foldLineBefore !== foldLine) {\n foldLineBefore.merge(foldLine);\n foldLine = foldLineBefore;\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= end.row) {\n foldLine.shiftRow(-len);\n }\n }\n\n lastRow = firstRow;\n } else {\n var args = Array(len);\n args.unshift(firstRow, 0);\n var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache;\n arr.splice.apply(arr, args);\n var foldLines = this.$foldData;\n var foldLine = this.getFoldLine(firstRow);\n var idx = 0;\n if (foldLine) {\n var cmp = foldLine.range.compareInside(start.row, start.column);\n if (cmp == 0) {\n foldLine = foldLine.split(start.row, start.column);\n if (foldLine) {\n foldLine.shiftRow(len);\n foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n }\n } else\n if (cmp == -1) {\n foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n foldLine.shiftRow(len);\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= firstRow) {\n foldLine.shiftRow(len);\n }\n }\n }\n } else {\n len = Math.abs(delta.start.column - delta.end.column);\n if (action === \"remove\") {\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n\n len = -len;\n }\n var foldLine = this.getFoldLine(firstRow);\n if (foldLine) {\n foldLine.addRemoveChars(firstRow, start.column, len);\n }\n }\n\n if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\n }\n this.$updating = false;\n\n if (useWrapMode)\n this.$updateWrapData(firstRow, lastRow);\n else\n this.$updateRowLengthCache(firstRow, lastRow);\n\n return removedFolds;\n };\n\n this.$updateRowLengthCache = function(firstRow, lastRow, b) {\n this.$rowLengthCache[firstRow] = null;\n this.$rowLengthCache[lastRow] = null;\n };\n\n this.$updateWrapData = function(firstRow, lastRow) {\n var lines = this.doc.getAllLines();\n var tabSize = this.getTabSize();\n var wrapData = this.$wrapData;\n var wrapLimit = this.$wrapLimit;\n var tokens;\n var foldLine;\n\n var row = firstRow;\n lastRow = Math.min(lastRow, lines.length - 1);\n while (row <= lastRow) {\n foldLine = this.getFoldLine(row, foldLine);\n if (!foldLine) {\n tokens = this.$getDisplayTokens(lines[row]);\n wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row ++;\n } else {\n tokens = [];\n foldLine.walk(function(placeholder, row, column, lastColumn) {\n var walkTokens;\n if (placeholder != null) {\n walkTokens = this.$getDisplayTokens(\n placeholder, tokens.length);\n walkTokens[0] = PLACEHOLDER_START;\n for (var i = 1; i < walkTokens.length; i++) {\n walkTokens[i] = PLACEHOLDER_BODY;\n }\n } else {\n walkTokens = this.$getDisplayTokens(\n lines[row].substring(lastColumn, column),\n tokens.length);\n }\n tokens = tokens.concat(walkTokens);\n }.bind(this),\n foldLine.end.row,\n lines[foldLine.end.row].length + 1\n );\n\n wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row = foldLine.end.row + 1;\n }\n }\n };\n var CHAR = 1,\n CHAR_EXT = 2,\n PLACEHOLDER_START = 3,\n PLACEHOLDER_BODY = 4,\n PUNCTUATION = 9,\n SPACE = 10,\n TAB = 11,\n TAB_SPACE = 12;\n\n\n this.$computeWrapSplits = function(tokens, wrapLimit, tabSize) {\n if (tokens.length == 0) {\n return [];\n }\n\n var splits = [];\n var displayLength = tokens.length;\n var lastSplit = 0, lastDocSplit = 0;\n\n var isCode = this.$wrapAsCode;\n\n var indentedSoftWrap = this.$indentedSoftWrap;\n var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n\n function getWrapIndent() {\n var indentation = 0;\n if (maxIndent === 0)\n return indentation;\n if (indentedSoftWrap) {\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token == SPACE)\n indentation += 1;\n else if (token == TAB)\n indentation += tabSize;\n else if (token == TAB_SPACE)\n continue;\n else\n break;\n }\n }\n if (isCode && indentedSoftWrap !== false)\n indentation += tabSize;\n return Math.min(indentation, maxIndent);\n }\n function addSplit(screenPos) {\n var displayed = tokens.slice(lastSplit, screenPos);\n var len = displayed.length;\n displayed.join(\"\")\n .replace(/12/g, function() {\n len -= 1;\n })\n .replace(/2/g, function() {\n len -= 1;\n });\n\n if (!splits.length) {\n indent = getWrapIndent();\n splits.indent = indent;\n }\n lastDocSplit += len;\n splits.push(lastDocSplit);\n lastSplit = screenPos;\n }\n var indent = 0;\n while (displayLength - lastSplit > wrapLimit - indent) {\n var split = lastSplit + wrapLimit - indent;\n if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n addSplit(split);\n continue;\n }\n if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n for (split; split != lastSplit - 1; split--) {\n if (tokens[split] == PLACEHOLDER_START) {\n break;\n }\n }\n if (split > lastSplit) {\n addSplit(split);\n continue;\n }\n split = lastSplit + wrapLimit;\n for (split; split < tokens.length; split++) {\n if (tokens[split] != PLACEHOLDER_BODY) {\n break;\n }\n }\n if (split == tokens.length) {\n break; // Breaks the while-loop.\n }\n addSplit(split);\n continue;\n }\n var minSplit = Math.max(split - (wrapLimit -(wrapLimit>>2)), lastSplit - 1);\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split --;\n }\n if (isCode) {\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split --;\n }\n while (split > minSplit && tokens[split] == PUNCTUATION) {\n split --;\n }\n } else {\n while (split > minSplit && tokens[split] < SPACE) {\n split --;\n }\n }\n if (split > minSplit) {\n addSplit(++split);\n continue;\n }\n split = lastSplit + wrapLimit;\n if (tokens[split] == CHAR_EXT)\n split--;\n addSplit(split - indent);\n }\n return splits;\n };\n this.$getDisplayTokens = function(str, offset) {\n var arr = [];\n var tabSize;\n offset = offset || 0;\n\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c == 9) {\n tabSize = this.getScreenTabSize(arr.length + offset);\n arr.push(TAB);\n for (var n = 1; n < tabSize; n++) {\n arr.push(TAB_SPACE);\n }\n }\n else if (c == 32) {\n arr.push(SPACE);\n } else if((c > 39 && c < 48) || (c > 57 && c < 64)) {\n arr.push(PUNCTUATION);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n arr.push(CHAR, CHAR_EXT);\n } else {\n arr.push(CHAR);\n }\n }\n return arr;\n };\n this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn == 0)\n return [0, 0];\n if (maxScreenColumn == null)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charCodeAt(column);\n if (c == 9) {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n screenColumn += 2;\n } else {\n screenColumn += 1;\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n\n return [screenColumn, column];\n };\n\n this.lineWidgets = null;\n this.getRowLength = function(row) {\n if (this.lineWidgets)\n var h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else \n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n } else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n this.getRowLineCount = function(row) {\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1;\n } else {\n return this.$wrapData[row].length + 1;\n }\n };\n\n this.getRowWrapIndent = function(screenRow) {\n if (this.$useWrapMode) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n var splits = this.$wrapData[pos.row];\n return splits.length && splits[0] < pos.column ? splits.indent : 0;\n } else {\n return 0;\n }\n };\n this.getScreenLastRowColumn = function(screenRow) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n return this.documentToScreenColumn(pos.row, pos.column);\n };\n this.getDocumentLastRowColumn = function(docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.getScreenLastRowColumn(screenRow);\n };\n this.getDocumentLastRowColumnPosition = function(docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n };\n this.getRowSplitData = function(row) {\n if (!this.$useWrapMode) {\n return undefined;\n } else {\n return this.$wrapData[row];\n }\n };\n this.getScreenTabSize = function(screenColumn) {\n return this.$tabSize - screenColumn % this.$tabSize;\n };\n\n\n this.screenToDocumentRow = function(screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).row;\n };\n\n\n this.screenToDocumentColumn = function(screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).column;\n };\n this.screenToDocumentPosition = function(screenRow, screenColumn, offsetX) {\n if (screenRow < 0)\n return {row: 0, column: 0};\n\n var line;\n var docRow = 0;\n var docColumn = 0;\n var column;\n var row = 0;\n var rowLength = 0;\n\n var rowCache = this.$screenRowCache;\n var i = this.$getRowCacheIndex(rowCache, screenRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var docRow = this.$docRowCache[i];\n var doCache = screenRow > rowCache[l - 1];\n } else {\n var doCache = !l;\n }\n\n var maxRow = this.getLength() - 1;\n var foldLine = this.getNextFoldLine(docRow);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (row <= screenRow) {\n rowLength = this.getRowLength(docRow);\n if (row + rowLength > screenRow || docRow >= maxRow) {\n break;\n } else {\n row += rowLength;\n docRow++;\n if (docRow > foldStart) {\n docRow = foldLine.end.row+1;\n foldLine = this.getNextFoldLine(docRow, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n }\n\n if (doCache) {\n this.$docRowCache.push(docRow);\n this.$screenRowCache.push(row);\n }\n }\n\n if (foldLine && foldLine.start.row <= docRow) {\n line = this.getFoldDisplayLine(foldLine);\n docRow = foldLine.start.row;\n } else if (row + rowLength <= screenRow || docRow > maxRow) {\n return {\n row: maxRow,\n column: this.getLine(maxRow).length\n };\n } else {\n line = this.getLine(docRow);\n foldLine = null;\n }\n var wrapIndent = 0, splitIndex = Math.floor(screenRow - row);\n if (this.$useWrapMode) {\n var splits = this.$wrapData[docRow];\n if (splits) {\n column = splits[splitIndex];\n if(splitIndex > 0 && splits.length) {\n wrapIndent = splits.indent;\n docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n line = line.substring(docColumn);\n }\n }\n }\n\n if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex))\n screenColumn = this.$bidiHandler.offsetToCol(offsetX);\n\n docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n if (this.$useWrapMode && docColumn >= column)\n docColumn = column - 1;\n\n if (foldLine)\n return foldLine.idxToPosition(docColumn);\n\n return {row: docRow, column: docColumn};\n };\n this.documentToScreenPosition = function(docRow, docColumn) {\n if (typeof docColumn === \"undefined\")\n var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\n else\n pos = this.$clipPositionToDocument(docRow, docColumn);\n\n docRow = pos.row;\n docColumn = pos.column;\n\n var screenRow = 0;\n var foldStartRow = null;\n var fold = null;\n fold = this.getFoldAt(docRow, docColumn, 1);\n if (fold) {\n docRow = fold.start.row;\n docColumn = fold.start.column;\n }\n\n var rowEnd, row = 0;\n\n\n var rowCache = this.$docRowCache;\n var i = this.$getRowCacheIndex(rowCache, docRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var screenRow = this.$screenRowCache[i];\n var doCache = docRow > rowCache[l - 1];\n } else {\n var doCache = !l;\n }\n\n var foldLine = this.getNextFoldLine(row);\n var foldStart = foldLine ?foldLine.start.row :Infinity;\n\n while (row < docRow) {\n if (row >= foldStart) {\n rowEnd = foldLine.end.row + 1;\n if (rowEnd > docRow)\n break;\n foldLine = this.getNextFoldLine(rowEnd, foldLine);\n foldStart = foldLine ?foldLine.start.row :Infinity;\n }\n else {\n rowEnd = row + 1;\n }\n\n screenRow += this.getRowLength(row);\n row = rowEnd;\n\n if (doCache) {\n this.$docRowCache.push(row);\n this.$screenRowCache.push(screenRow);\n }\n }\n var textLine = \"\";\n if (foldLine && row >= foldStart) {\n textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n foldStartRow = foldLine.start.row;\n } else {\n textLine = this.getLine(docRow).substring(0, docColumn);\n foldStartRow = docRow;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var wrapRow = this.$wrapData[foldStartRow];\n if (wrapRow) {\n var screenRowOffset = 0;\n while (textLine.length >= wrapRow[screenRowOffset]) {\n screenRow ++;\n screenRowOffset++;\n }\n textLine = textLine.substring(\n wrapRow[screenRowOffset - 1] || 0, textLine.length\n );\n wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n }\n }\n\n return {\n row: screenRow,\n column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n };\n };\n this.documentToScreenColumn = function(row, docColumn) {\n return this.documentToScreenPosition(row, docColumn).column;\n };\n this.documentToScreenRow = function(docRow, docColumn) {\n return this.documentToScreenPosition(docRow, docColumn).row;\n };\n this.getScreenLength = function() {\n var screenRows = 0;\n var fold = null;\n if (!this.$useWrapMode) {\n screenRows = this.getLength();\n var foldData = this.$foldData;\n for (var i = 0; i < foldData.length; i++) {\n fold = foldData[i];\n screenRows -= fold.end.row - fold.start.row;\n }\n } else {\n var lastRow = this.$wrapData.length;\n var row = 0, i = 0;\n var fold = this.$foldData[i++];\n var foldStart = fold ? fold.start.row :Infinity;\n\n while (row < lastRow) {\n var splits = this.$wrapData[row];\n screenRows += splits ? splits.length + 1 : 1;\n row ++;\n if (row > foldStart) {\n row = fold.end.row+1;\n fold = this.$foldData[i++];\n foldStart = fold ?fold.start.row :Infinity;\n }\n }\n }\n if (this.lineWidgets)\n screenRows += this.$getWidgetScreenLength();\n\n return screenRows;\n };\n this.$setFontMetrics = function(fm) {\n if (!this.$enableVarChar) return;\n this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn === 0)\n return [0, 0];\n if (!maxScreenColumn)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n \n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charAt(column);\n if (c === \"\\t\") {\n screenColumn += this.getScreenTabSize(screenColumn);\n } else {\n screenColumn += fm.getCharacterWidth(c);\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n \n return [screenColumn, column];\n };\n };\n \n this.destroy = function() {\n if (this.bgTokenizer) {\n this.bgTokenizer.setDocument(null);\n this.bgTokenizer = null;\n }\n this.$stopWorker();\n };\n\n this.isFullWidth = isFullWidth;\n function isFullWidth(c) {\n if (c < 0x1100)\n return false;\n return c >= 0x1100 && c <= 0x115F ||\n c >= 0x11A3 && c <= 0x11A7 ||\n c >= 0x11FA && c <= 0x11FF ||\n c >= 0x2329 && c <= 0x232A ||\n c >= 0x2E80 && c <= 0x2E99 ||\n c >= 0x2E9B && c <= 0x2EF3 ||\n c >= 0x2F00 && c <= 0x2FD5 ||\n c >= 0x2FF0 && c <= 0x2FFB ||\n c >= 0x3000 && c <= 0x303E ||\n c >= 0x3041 && c <= 0x3096 ||\n c >= 0x3099 && c <= 0x30FF ||\n c >= 0x3105 && c <= 0x312D ||\n c >= 0x3131 && c <= 0x318E ||\n c >= 0x3190 && c <= 0x31BA ||\n c >= 0x31C0 && c <= 0x31E3 ||\n c >= 0x31F0 && c <= 0x321E ||\n c >= 0x3220 && c <= 0x3247 ||\n c >= 0x3250 && c <= 0x32FE ||\n c >= 0x3300 && c <= 0x4DBF ||\n c >= 0x4E00 && c <= 0xA48C ||\n c >= 0xA490 && c <= 0xA4C6 ||\n c >= 0xA960 && c <= 0xA97C ||\n c >= 0xAC00 && c <= 0xD7A3 ||\n c >= 0xD7B0 && c <= 0xD7C6 ||\n c >= 0xD7CB && c <= 0xD7FB ||\n c >= 0xF900 && c <= 0xFAFF ||\n c >= 0xFE10 && c <= 0xFE19 ||\n c >= 0xFE30 && c <= 0xFE52 ||\n c >= 0xFE54 && c <= 0xFE66 ||\n c >= 0xFE68 && c <= 0xFE6B ||\n c >= 0xFF01 && c <= 0xFF60 ||\n c >= 0xFFE0 && c <= 0xFFE6;\n }\n\n}).call(EditSession.prototype);\n\nacequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\nacequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\n\n\nconfig.defineOptions(EditSession.prototype, \"session\", {\n wrap: {\n set: function(value) {\n if (!value || value == \"off\")\n value = false;\n else if (value == \"free\")\n value = true;\n else if (value == \"printMargin\")\n value = -1;\n else if (typeof value == \"string\")\n value = parseInt(value, 10) || false;\n\n if (this.$wrap == value)\n return;\n this.$wrap = value;\n if (!value) {\n this.setUseWrapMode(false);\n } else {\n var col = typeof value == \"number\" ? value : null;\n this.setWrapLimitRange(col, col);\n this.setUseWrapMode(true);\n }\n },\n get: function() {\n if (this.getUseWrapMode()) {\n if (this.$wrap == -1)\n return \"printMargin\";\n if (!this.getWrapLimitRange().min)\n return \"free\";\n return this.$wrap;\n }\n return \"off\";\n },\n handlesSet: true\n }, \n wrapMethod: {\n set: function(val) {\n val = val == \"auto\"\n ? this.$mode.type != \"text\"\n : val != \"text\";\n if (val != this.$wrapAsCode) {\n this.$wrapAsCode = val;\n if (this.$useWrapMode) {\n this.$modified = true;\n this.$resetRowCache(0);\n this.$updateWrapData(0, this.getLength() - 1);\n }\n }\n },\n initialValue: \"auto\"\n },\n indentedSoftWrap: { initialValue: true },\n firstLineNumber: {\n set: function() {this._signal(\"changeBreakpoint\");},\n initialValue: 1\n },\n useWorker: {\n set: function(useWorker) {\n this.$useWorker = useWorker;\n\n this.$stopWorker();\n if (useWorker)\n this.$startWorker();\n },\n initialValue: true\n },\n useSoftTabs: {initialValue: true},\n tabSize: {\n set: function(tabSize) {\n if (isNaN(tabSize) || this.$tabSize === tabSize) return;\n\n this.$modified = true;\n this.$rowLengthCache = [];\n this.$tabSize = tabSize;\n this._signal(\"changeTabSize\");\n },\n initialValue: 4,\n handlesSet: true\n },\n navigateWithinSoftTabs: {initialValue: false},\n overwrite: {\n set: function(val) {this._signal(\"changeOverwrite\");},\n initialValue: false\n },\n newLineMode: {\n set: function(val) {this.doc.setNewLineMode(val);},\n get: function() {return this.doc.getNewLineMode();},\n handlesSet: true\n },\n mode: {\n set: function(val) { this.setMode(val); },\n get: function() { return this.$modeId; }\n }\n});\n\nexports.EditSession = EditSession;\n});\n\nace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar lang = acequire(\"./lib/lang\");\nvar oop = acequire(\"./lib/oop\");\nvar Range = acequire(\"./range\").Range;\n\nvar Search = function() {\n this.$options = {};\n};\n\n(function() {\n this.set = function(options) {\n oop.mixin(this.$options, options);\n return this;\n };\n this.getOptions = function() {\n return lang.copyObject(this.$options);\n };\n this.setOptions = function(options) {\n this.$options = options;\n };\n this.find = function(session) {\n var options = this.$options;\n var iterator = this.$matchIterator(session, options);\n if (!iterator)\n return false;\n\n var firstRange = null;\n iterator.forEach(function(sr, sc, er, ec) {\n firstRange = new Range(sr, sc, er, ec);\n if (sc == ec && options.start && options.start.start\n && options.skipCurrent != false && firstRange.isEqual(options.start)\n ) {\n firstRange = null;\n return false;\n }\n\n return true;\n });\n\n return firstRange;\n };\n this.findAll = function(session) {\n var options = this.$options;\n if (!options.needle)\n return [];\n this.$assembleRegExp(options);\n\n var range = options.range;\n var lines = range\n ? session.getLines(range.start.row, range.end.row)\n : session.doc.getAllLines();\n\n var ranges = [];\n var re = options.re;\n if (options.$isMultiLine) {\n var len = re.length;\n var maxRow = lines.length - len;\n var prevRange;\n outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n for (var j = 0; j < len; j++)\n if (lines[row + j].search(re[j]) == -1)\n continue outer;\n \n var startLine = lines[row];\n var line = lines[row + len - 1];\n var startIndex = startLine.length - startLine.match(re[0])[0].length;\n var endIndex = line.match(re[len - 1])[0].length;\n \n if (prevRange && prevRange.end.row === row &&\n prevRange.end.column > startIndex\n ) {\n continue;\n }\n ranges.push(prevRange = new Range(\n row, startIndex, row + len - 1, endIndex\n ));\n if (len > 2)\n row = row + len - 2;\n }\n } else {\n for (var i = 0; i < lines.length; i++) {\n var matches = lang.getMatchOffsets(lines[i], re);\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n }\n }\n }\n\n if (range) {\n var startColumn = range.start.column;\n var endColumn = range.start.column;\n var i = 0, j = ranges.length - 1;\n while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == range.start.row)\n i++;\n\n while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == range.end.row)\n j--;\n \n ranges = ranges.slice(i, j + 1);\n for (i = 0, j = ranges.length; i < j; i++) {\n ranges[i].start.row += range.start.row;\n ranges[i].end.row += range.start.row;\n }\n }\n\n return ranges;\n };\n this.replace = function(input, replacement) {\n var options = this.$options;\n\n var re = this.$assembleRegExp(options);\n if (options.$isMultiLine)\n return replacement;\n\n if (!re)\n return;\n\n var match = re.exec(input);\n if (!match || match[0].length != input.length)\n return null;\n \n replacement = input.replace(re, replacement);\n if (options.preserveCase) {\n replacement = replacement.split(\"\");\n for (var i = Math.min(input.length, input.length); i--; ) {\n var ch = input[i];\n if (ch && ch.toLowerCase() != ch)\n replacement[i] = replacement[i].toUpperCase();\n else\n replacement[i] = replacement[i].toLowerCase();\n }\n replacement = replacement.join(\"\");\n }\n \n return replacement;\n };\n\n this.$assembleRegExp = function(options, $disableFakeMultiline) {\n if (options.needle instanceof RegExp)\n return options.re = options.needle;\n\n var needle = options.needle;\n\n if (!options.needle)\n return options.re = false;\n\n if (!options.regExp)\n needle = lang.escapeRegExp(needle);\n\n if (options.wholeWord)\n needle = addWordBoundary(needle, options);\n\n var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\n\n options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n if (options.$isMultiLine)\n return options.re = this.$assembleMultilineRegExp(needle, modifier);\n\n try {\n var re = new RegExp(needle, modifier);\n } catch(e) {\n re = false;\n }\n return options.re = re;\n };\n\n this.$assembleMultilineRegExp = function(needle, modifier) {\n var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\n var re = [];\n for (var i = 0; i < parts.length; i++) try {\n re.push(new RegExp(parts[i], modifier));\n } catch(e) {\n return false;\n }\n return re;\n };\n\n this.$matchIterator = function(session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n var backwards = options.backwards == true;\n var skipCurrent = options.skipCurrent != false;\n\n var range = options.range;\n var start = options.start;\n if (!start)\n start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\n \n if (start.start)\n start = start[skipCurrent != backwards ? \"end\" : \"start\"];\n\n var firstRow = range ? range.start.row : 0;\n var lastRow = range ? range.end.row : session.getLength() - 1;\n\n if (backwards) {\n var forEach = function(callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row--; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n };\n }\n else {\n var forEach = function(callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row = row + 1; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n };\n }\n \n if (options.$isMultiLine) {\n var len = re.length;\n var forEachInLine = function(row, offset, callback) {\n var startRow = backwards ? row - len + 1 : row;\n if (startRow < 0) return;\n var line = session.getLine(startRow);\n var startIndex = line.search(re[0]);\n if (!backwards && startIndex < offset || startIndex === -1) return;\n for (var i = 1; i < len; i++) {\n line = session.getLine(startRow + i);\n if (line.search(re[i]) == -1)\n return;\n }\n var endIndex = line.match(re[len - 1])[0].length;\n if (backwards && endIndex > offset) return;\n if (callback(startRow, startIndex, startRow + len - 1, endIndex))\n return true;\n };\n }\n else if (backwards) {\n var forEachInLine = function(row, endIndex, callback) {\n var line = session.getLine(row);\n var matches = [];\n var m, last = 0;\n re.lastIndex = 0;\n while((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (!length) {\n if (last >= line.length) break;\n re.lastIndex = last += 1;\n }\n if (m.index + length > endIndex)\n break;\n matches.push(m.index, length);\n }\n for (var i = matches.length - 1; i >= 0; i -= 2) {\n var column = matches[i - 1];\n var length = matches[i];\n if (callback(row, column, row, column + length))\n return true;\n }\n };\n }\n else {\n var forEachInLine = function(row, startIndex, callback) {\n var line = session.getLine(row);\n var m;\n var last = startIndex;\n re.lastIndex = startIndex;\n while((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (callback(row, last, row,last + length))\n return true;\n if (!length) {\n re.lastIndex = last += 1;\n if (last >= line.length) return false;\n }\n }\n };\n }\n return {forEach: forEach};\n };\n\n}).call(Search.prototype);\n\nfunction addWordBoundary(needle, options) {\n function wordBoundary(c) {\n if (/\\w/.test(c) || options.regExp) return \"\\\\b\";\n return \"\";\n }\n return wordBoundary(needle[0]) + needle\n + wordBoundary(needle[needle.length - 1]);\n}\n\nexports.Search = Search;\n});\n\nace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar keyUtil = acequire(\"../lib/keys\");\nvar useragent = acequire(\"../lib/useragent\");\nvar KEY_MODS = keyUtil.KEY_MODS;\n\nfunction HashHandler(config, platform) {\n this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\n this.commands = {};\n this.commandKeyBinding = {};\n this.addCommands(config);\n this.$singleCommand = true;\n}\n\nfunction MultiHashHandler(config, platform) {\n HashHandler.call(this, config, platform);\n this.$singleCommand = false;\n}\n\nMultiHashHandler.prototype = HashHandler.prototype;\n\n(function() {\n \n\n this.addCommand = function(command) {\n if (this.commands[command.name])\n this.removeCommand(command);\n\n this.commands[command.name] = command;\n\n if (command.bindKey)\n this._buildKeyHash(command);\n };\n\n this.removeCommand = function(command, keepCommand) {\n var name = command && (typeof command === 'string' ? command : command.name);\n command = this.commands[name];\n if (!keepCommand)\n delete this.commands[name];\n var ckb = this.commandKeyBinding;\n for (var keyId in ckb) {\n var cmdGroup = ckb[keyId];\n if (cmdGroup == command) {\n delete ckb[keyId];\n } else if (Array.isArray(cmdGroup)) {\n var i = cmdGroup.indexOf(command);\n if (i != -1) {\n cmdGroup.splice(i, 1);\n if (cmdGroup.length == 1)\n ckb[keyId] = cmdGroup[0];\n }\n }\n }\n };\n\n this.bindKey = function(key, command, position) {\n if (typeof key == \"object\" && key) {\n if (position == undefined)\n position = key.position;\n key = key[this.platform];\n }\n if (!key)\n return;\n if (typeof command == \"function\")\n return this.addCommand({exec: command, bindKey: key, name: command.name || key});\n \n key.split(\"|\").forEach(function(keyPart) {\n var chain = \"\";\n if (keyPart.indexOf(\" \") != -1) {\n var parts = keyPart.split(/\\s+/);\n keyPart = parts.pop();\n parts.forEach(function(keyPart) {\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n chain += (chain ? \" \" : \"\") + id;\n this._addCommandToBinding(chain, \"chainKeys\");\n }, this);\n chain += \" \";\n }\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n this._addCommandToBinding(chain + id, command, position);\n }, this);\n };\n \n function getPosition(command) {\n return typeof command == \"object\" && command.bindKey\n && command.bindKey.position\n || (command.isDefault ? -100 : 0);\n }\n this._addCommandToBinding = function(keyId, command, position) {\n var ckb = this.commandKeyBinding, i;\n if (!command) {\n delete ckb[keyId];\n } else if (!ckb[keyId] || this.$singleCommand) {\n ckb[keyId] = command;\n } else {\n if (!Array.isArray(ckb[keyId])) {\n ckb[keyId] = [ckb[keyId]];\n } else if ((i = ckb[keyId].indexOf(command)) != -1) {\n ckb[keyId].splice(i, 1);\n }\n\n if (typeof position != \"number\") {\n position = getPosition(command);\n }\n\n var commands = ckb[keyId];\n for (i = 0; i < commands.length; i++) {\n var other = commands[i];\n var otherPos = getPosition(other);\n if (otherPos > position)\n break;\n }\n commands.splice(i, 0, command);\n }\n };\n\n this.addCommands = function(commands) {\n commands && Object.keys(commands).forEach(function(name) {\n var command = commands[name];\n if (!command)\n return;\n \n if (typeof command === \"string\")\n return this.bindKey(command, name);\n\n if (typeof command === \"function\")\n command = { exec: command };\n\n if (typeof command !== \"object\")\n return;\n\n if (!command.name)\n command.name = name;\n\n this.addCommand(command);\n }, this);\n };\n\n this.removeCommands = function(commands) {\n Object.keys(commands).forEach(function(name) {\n this.removeCommand(commands[name]);\n }, this);\n };\n\n this.bindKeys = function(keyList) {\n Object.keys(keyList).forEach(function(key) {\n this.bindKey(key, keyList[key]);\n }, this);\n };\n\n this._buildKeyHash = function(command) {\n this.bindKey(command.bindKey, command);\n };\n this.parseKeys = function(keys) {\n var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(x){return x;});\n var key = parts.pop();\n\n var keyCode = keyUtil[key];\n if (keyUtil.FUNCTION_KEYS[keyCode])\n key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n else if (!parts.length)\n return {key: key, hashId: -1};\n else if (parts.length == 1 && parts[0] == \"shift\")\n return {key: key.toUpperCase(), hashId: -1};\n\n var hashId = 0;\n for (var i = parts.length; i--;) {\n var modifier = keyUtil.KEY_MODS[parts[i]];\n if (modifier == null) {\n if (typeof console != \"undefined\")\n console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\n return false;\n }\n hashId |= modifier;\n }\n return {key: key, hashId: hashId};\n };\n\n this.findKeyCommand = function findKeyCommand(hashId, keyString) {\n var key = KEY_MODS[hashId] + keyString;\n return this.commandKeyBinding[key];\n };\n\n this.handleKeyboard = function(data, hashId, keyString, keyCode) {\n if (keyCode < 0) return;\n var key = KEY_MODS[hashId] + keyString;\n var command = this.commandKeyBinding[key];\n if (data.$keyChain) {\n data.$keyChain += \" \" + key;\n command = this.commandKeyBinding[data.$keyChain] || command;\n }\n \n if (command) {\n if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\n data.$keyChain = data.$keyChain || key;\n return {command: \"null\"};\n }\n }\n \n if (data.$keyChain) {\n if ((!hashId || hashId == 4) && keyString.length == 1)\n data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n else if (hashId == -1 || keyCode > 0)\n data.$keyChain = \"\"; // reset keyChain\n }\n return {command: command};\n };\n \n this.getStatusText = function(editor, data) {\n return data.$keyChain || \"\";\n };\n\n}).call(HashHandler.prototype);\n\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n});\n\nace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar MultiHashHandler = acequire(\"../keyboard/hash_handler\").MultiHashHandler;\nvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\n\nvar CommandManager = function(platform, commands) {\n MultiHashHandler.call(this, commands, platform);\n this.byName = this.commands;\n this.setDefaultHandler(\"exec\", function(e) {\n return e.command.exec(e.editor, e.args || {});\n });\n};\n\noop.inherits(CommandManager, MultiHashHandler);\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.exec = function(command, editor, args) {\n if (Array.isArray(command)) {\n for (var i = command.length; i--; ) {\n if (this.exec(command[i], editor, args)) return true;\n }\n return false;\n }\n\n if (typeof command === \"string\")\n command = this.commands[command];\n\n if (!command)\n return false;\n\n if (editor && editor.$readOnly && !command.readOnly)\n return false;\n\n if (command.isAvailable && !command.isAvailable(editor))\n return false;\n\n var e = {editor: editor, command: command, args: args};\n e.returnValue = this._emit(\"exec\", e);\n this._signal(\"afterExec\", e);\n\n return e.returnValue === false ? false : true;\n };\n\n this.toggleRecording = function(editor) {\n if (this.$inReplay)\n return;\n\n editor && editor._emit(\"changeStatus\");\n if (this.recording) {\n this.macro.pop();\n this.removeEventListener(\"exec\", this.$addCommandToMacro);\n\n if (!this.macro.length)\n this.macro = this.oldMacro;\n\n return this.recording = false;\n }\n if (!this.$addCommandToMacro) {\n this.$addCommandToMacro = function(e) {\n this.macro.push([e.command, e.args]);\n }.bind(this);\n }\n\n this.oldMacro = this.macro;\n this.macro = [];\n this.on(\"exec\", this.$addCommandToMacro);\n return this.recording = true;\n };\n\n this.replay = function(editor) {\n if (this.$inReplay || !this.macro)\n return;\n\n if (this.recording)\n return this.toggleRecording(editor);\n\n try {\n this.$inReplay = true;\n this.macro.forEach(function(x) {\n if (typeof x == \"string\")\n this.exec(x, editor);\n else\n this.exec(x[0], editor, x[1]);\n }, this);\n } finally {\n this.$inReplay = false;\n }\n };\n\n this.trimMacro = function(m) {\n return m.map(function(x){\n if (typeof x[0] != \"string\")\n x[0] = x[0].name;\n if (!x[1])\n x = x[0];\n return x;\n });\n };\n\n}).call(CommandManager.prototype);\n\nexports.CommandManager = CommandManager;\n\n});\n\nace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar lang = acequire(\"../lib/lang\");\nvar config = acequire(\"../config\");\nvar Range = acequire(\"../range\").Range;\n\nfunction bindKey(win, mac) {\n return {win: win, mac: mac};\n}\nexports.commands = [{\n name: \"showSettingsMenu\",\n bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/settings_menu\", function(module) {\n module.init(editor);\n editor.showSettingsMenu();\n });\n },\n readOnly: true\n}, {\n name: \"goToNextError\",\n bindKey: bindKey(\"Alt-E\", \"F4\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/error_marker\", function(module) {\n module.showErrorMarker(editor, 1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"goToPreviousError\",\n bindKey: bindKey(\"Alt-Shift-E\", \"Shift-F4\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/error_marker\", function(module) {\n module.showErrorMarker(editor, -1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"selectall\",\n bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\n exec: function(editor) { editor.selectAll(); },\n readOnly: true\n}, {\n name: \"centerselection\",\n bindKey: bindKey(null, \"Ctrl-L\"),\n exec: function(editor) { editor.centerSelection(); },\n readOnly: true\n}, {\n name: \"gotoline\",\n bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\n exec: function(editor) {\n var line = parseInt(prompt(\"Enter line number:\"), 10);\n if (!isNaN(line)) {\n editor.gotoLine(line);\n }\n },\n readOnly: true\n}, {\n name: \"fold\",\n bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\n exec: function(editor) { editor.session.toggleFold(false); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"unfold\",\n bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\n exec: function(editor) { editor.session.toggleFold(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"toggleFoldWidget\",\n bindKey: bindKey(\"F2\", \"F2\"),\n exec: function(editor) { editor.session.toggleFoldWidget(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"toggleParentFoldWidget\",\n bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\n exec: function(editor) { editor.session.toggleFoldWidget(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"foldall\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function(editor) { editor.session.foldAll(); },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"foldOther\",\n bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\n exec: function(editor) { \n editor.session.foldAll();\n editor.session.unfold(editor.selection.getAllRanges());\n },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"unfoldall\",\n bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\n exec: function(editor) { editor.session.unfold(); },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"findnext\",\n bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\n exec: function(editor) { editor.findNext(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"findprevious\",\n bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\n exec: function(editor) { editor.findPrevious(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"selectOrFindNext\",\n bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\n exec: function(editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findNext(); \n },\n readOnly: true\n}, {\n name: \"selectOrFindPrevious\",\n bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\n exec: function(editor) { \n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findPrevious();\n },\n readOnly: true\n}, {\n name: \"find\",\n bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/searchbox\", function(e) {e.Search(editor);});\n },\n readOnly: true\n}, {\n name: \"overwrite\",\n bindKey: \"Insert\",\n exec: function(editor) { editor.toggleOverwrite(); },\n readOnly: true\n}, {\n name: \"selecttostart\",\n bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Home|Command-Shift-Up\"),\n exec: function(editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"gotostart\",\n bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\n exec: function(editor) { editor.navigateFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"selectup\",\n bindKey: bindKey(\"Shift-Up\", \"Shift-Up|Ctrl-Shift-P\"),\n exec: function(editor) { editor.getSelection().selectUp(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"golineup\",\n bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\n exec: function(editor, args) { editor.navigateUp(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttoend\",\n bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-End|Command-Shift-Down\"),\n exec: function(editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"gotoend\",\n bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\n exec: function(editor) { editor.navigateFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"selectdown\",\n bindKey: bindKey(\"Shift-Down\", \"Shift-Down|Ctrl-Shift-N\"),\n exec: function(editor) { editor.getSelection().selectDown(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"golinedown\",\n bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\n exec: function(editor, args) { editor.navigateDown(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectwordleft\",\n bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\n exec: function(editor) { editor.getSelection().selectWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotowordleft\",\n bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\n exec: function(editor) { editor.navigateWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttolinestart\",\n bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left|Ctrl-Shift-A\"),\n exec: function(editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotolinestart\",\n bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\n exec: function(editor) { editor.navigateLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectleft\",\n bindKey: bindKey(\"Shift-Left\", \"Shift-Left|Ctrl-Shift-B\"),\n exec: function(editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotoleft\",\n bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\n exec: function(editor, args) { editor.navigateLeft(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectwordright\",\n bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\n exec: function(editor) { editor.getSelection().selectWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotowordright\",\n bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\n exec: function(editor) { editor.navigateWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttolineend\",\n bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),\n exec: function(editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotolineend\",\n bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\n exec: function(editor) { editor.navigateLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectright\",\n bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\n exec: function(editor) { editor.getSelection().selectRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotoright\",\n bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\n exec: function(editor, args) { editor.navigateRight(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectpagedown\",\n bindKey: \"Shift-PageDown\",\n exec: function(editor) { editor.selectPageDown(); },\n readOnly: true\n}, {\n name: \"pagedown\",\n bindKey: bindKey(null, \"Option-PageDown\"),\n exec: function(editor) { editor.scrollPageDown(); },\n readOnly: true\n}, {\n name: \"gotopagedown\",\n bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\n exec: function(editor) { editor.gotoPageDown(); },\n readOnly: true\n}, {\n name: \"selectpageup\",\n bindKey: \"Shift-PageUp\",\n exec: function(editor) { editor.selectPageUp(); },\n readOnly: true\n}, {\n name: \"pageup\",\n bindKey: bindKey(null, \"Option-PageUp\"),\n exec: function(editor) { editor.scrollPageUp(); },\n readOnly: true\n}, {\n name: \"gotopageup\",\n bindKey: \"PageUp\",\n exec: function(editor) { editor.gotoPageUp(); },\n readOnly: true\n}, {\n name: \"scrollup\",\n bindKey: bindKey(\"Ctrl-Up\", null),\n exec: function(e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n}, {\n name: \"scrolldown\",\n bindKey: bindKey(\"Ctrl-Down\", null),\n exec: function(e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n}, {\n name: \"selectlinestart\",\n bindKey: \"Shift-Home\",\n exec: function(editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectlineend\",\n bindKey: \"Shift-End\",\n exec: function(editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"togglerecording\",\n bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\n exec: function(editor) { editor.commands.toggleRecording(editor); },\n readOnly: true\n}, {\n name: \"replaymacro\",\n bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\n exec: function(editor) { editor.commands.replay(editor); },\n readOnly: true\n}, {\n name: \"jumptomatching\",\n bindKey: bindKey(\"Ctrl-P\", \"Ctrl-P\"),\n exec: function(editor) { editor.jumpToMatching(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"selecttomatching\",\n bindKey: bindKey(\"Ctrl-Shift-P\", \"Ctrl-Shift-P\"),\n exec: function(editor) { editor.jumpToMatching(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"expandToMatching\",\n bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\n exec: function(editor) { editor.jumpToMatching(true, true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"passKeysToBrowser\",\n bindKey: bindKey(null, null),\n exec: function() {},\n passEvent: true,\n readOnly: true\n}, {\n name: \"copy\",\n exec: function(editor) {\n },\n readOnly: true\n},\n{\n name: \"cut\",\n exec: function(editor) {\n var range = editor.getSelectionRange();\n editor._emit(\"cut\", range);\n\n if (!editor.selection.isEmpty()) {\n editor.session.remove(range);\n editor.clearSelection();\n }\n },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"paste\",\n exec: function(editor, args) {\n editor.$handlePaste(args);\n },\n scrollIntoView: \"cursor\"\n}, {\n name: \"removeline\",\n bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\n exec: function(editor) { editor.removeLines(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEachLine\"\n}, {\n name: \"duplicateSelection\",\n bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\n exec: function(editor) { editor.duplicateSelection(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"sortlines\",\n bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\n exec: function(editor) { editor.sortLines(); },\n scrollIntoView: \"selection\",\n multiSelectAction: \"forEachLine\"\n}, {\n name: \"togglecomment\",\n bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\n exec: function(editor) { editor.toggleCommentLines(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"toggleBlockComment\",\n bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\n exec: function(editor) { editor.toggleBlockComment(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"modifyNumberUp\",\n bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\n exec: function(editor) { editor.modifyNumber(1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"modifyNumberDown\",\n bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\n exec: function(editor) { editor.modifyNumber(-1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"replace\",\n bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/searchbox\", function(e) {e.Search(editor, true);});\n }\n}, {\n name: \"undo\",\n bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\n exec: function(editor) { editor.undo(); }\n}, {\n name: \"redo\",\n bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\n exec: function(editor) { editor.redo(); }\n}, {\n name: \"copylinesup\",\n bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\n exec: function(editor) { editor.copyLinesUp(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"movelinesup\",\n bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\n exec: function(editor) { editor.moveLinesUp(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"copylinesdown\",\n bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\n exec: function(editor) { editor.copyLinesDown(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"movelinesdown\",\n bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\n exec: function(editor) { editor.moveLinesDown(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"del\",\n bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\n exec: function(editor) { editor.remove(\"right\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"backspace\",\n bindKey: bindKey(\n \"Shift-Backspace|Backspace\",\n \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"\n ),\n exec: function(editor) { editor.remove(\"left\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"cut_or_delete\",\n bindKey: bindKey(\"Shift-Delete\", null),\n exec: function(editor) { \n if (editor.selection.isEmpty()) {\n editor.remove(\"left\");\n } else {\n return false;\n }\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolinestart\",\n bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\n exec: function(editor) { editor.removeToLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolineend\",\n bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K|Command-Delete\"),\n exec: function(editor) { editor.removeToLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolinestarthard\",\n bindKey: bindKey(\"Ctrl-Shift-Backspace\", null),\n exec: function(editor) {\n var range = editor.selection.getRange();\n range.start.column = 0;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolineendhard\",\n bindKey: bindKey(\"Ctrl-Shift-Delete\", null),\n exec: function(editor) {\n var range = editor.selection.getRange();\n range.end.column = Number.MAX_VALUE;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removewordleft\",\n bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\n exec: function(editor) { editor.removeWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removewordright\",\n bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\n exec: function(editor) { editor.removeWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"outdent\",\n bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\n exec: function(editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"indent\",\n bindKey: bindKey(\"Tab\", \"Tab\"),\n exec: function(editor) { editor.indent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"blockoutdent\",\n bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\n exec: function(editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"blockindent\",\n bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\n exec: function(editor) { editor.blockIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"insertstring\",\n exec: function(editor, str) { editor.insert(str); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"inserttext\",\n exec: function(editor, args) {\n editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"splitline\",\n bindKey: bindKey(null, \"Ctrl-O\"),\n exec: function(editor) { editor.splitLine(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"transposeletters\",\n bindKey: bindKey(\"Alt-Shift-X\", \"Ctrl-T\"),\n exec: function(editor) { editor.transposeLetters(); },\n multiSelectAction: function(editor) {editor.transposeSelections(1); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"touppercase\",\n bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\n exec: function(editor) { editor.toUpperCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"tolowercase\",\n bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\n exec: function(editor) { editor.toLowerCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"expandtoline\",\n bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\n exec: function(editor) {\n var range = editor.selection.getRange();\n\n range.start.column = range.end.column = 0;\n range.end.row++;\n editor.selection.setRange(range, false);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"joinlines\",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n var isBackwards = editor.selection.isBackwards();\n var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\n var insertLine = editor.session.doc.getLine(selectionStart.row);\n\n for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n if (curLine.length !== 0) {\n curLine = \" \" + curLine;\n }\n insertLine += curLine;\n }\n\n if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n insertLine += editor.session.doc.getNewLineCharacter();\n }\n\n editor.clearSelection();\n editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n\n if (selectedCount > 0) {\n editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n } else {\n firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n }\n },\n multiSelectAction: \"forEach\",\n readOnly: true\n}, {\n name: \"invertSelection\",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n var endRow = editor.session.doc.getLength() - 1;\n var endCol = editor.session.doc.getLine(endRow).length;\n var ranges = editor.selection.rangeList.ranges;\n var newRanges = [];\n if (ranges.length < 1) {\n ranges = [editor.selection.getRange()];\n }\n\n for (var i = 0; i < ranges.length; i++) {\n if (i == (ranges.length - 1)) {\n if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n }\n }\n\n if (i === 0) {\n if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n }\n } else {\n newRanges.push(new Range(ranges[i-1].end.row, ranges[i-1].end.column, ranges[i].start.row, ranges[i].start.column));\n }\n }\n\n editor.exitMultiSelectMode();\n editor.clearSelection();\n\n for(var i = 0; i < newRanges.length; i++) {\n editor.selection.addRange(newRanges[i], false);\n }\n },\n readOnly: true,\n scrollIntoView: \"none\"\n}];\n\n});\n\nace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\",\"ace/lib/dom\",\"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\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nacequire(\"./lib/fixoldbrowsers\");\n\nvar oop = acequire(\"./lib/oop\");\nvar dom = acequire(\"./lib/dom\");\nvar lang = acequire(\"./lib/lang\");\nvar useragent = acequire(\"./lib/useragent\");\nvar TextInput = acequire(\"./keyboard/textinput\").TextInput;\nvar MouseHandler = acequire(\"./mouse/mouse_handler\").MouseHandler;\nvar FoldHandler = acequire(\"./mouse/fold_handler\").FoldHandler;\nvar KeyBinding = acequire(\"./keyboard/keybinding\").KeyBinding;\nvar EditSession = acequire(\"./edit_session\").EditSession;\nvar Search = acequire(\"./search\").Search;\nvar Range = acequire(\"./range\").Range;\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar CommandManager = acequire(\"./commands/command_manager\").CommandManager;\nvar defaultCommands = acequire(\"./commands/default_commands\").commands;\nvar config = acequire(\"./config\");\nvar TokenIterator = acequire(\"./token_iterator\").TokenIterator;\nvar Editor = function(renderer, session) {\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\n this.id = \"editor\" + (++Editor.$uid);\n\n this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\n if (typeof document == \"object\") {\n this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n this.renderer.textarea = this.textInput.getElement();\n this.$mouseHandler = new MouseHandler(this);\n new FoldHandler(this);\n }\n\n this.keyBinding = new KeyBinding(this);\n\n this.$blockScrolling = 0;\n this.$search = new Search().set({\n wrap: true\n });\n\n this.$historyTracker = this.$historyTracker.bind(this);\n this.commands.on(\"exec\", this.$historyTracker);\n\n this.$initOperationListeners();\n \n this._$emitInputEvent = lang.delayedCall(function() {\n this._signal(\"input\", {});\n if (this.session && this.session.bgTokenizer)\n this.session.bgTokenizer.scheduleStart();\n }.bind(this));\n \n this.on(\"change\", function(_, _self) {\n _self._$emitInputEvent.schedule(31);\n });\n\n this.setSession(session || new EditSession(\"\"));\n config.resetOptions(this);\n config._signal(\"editor\", this);\n};\n\nEditor.$uid = 0;\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$initOperationListeners = function() {\n function last(a) {return a[a.length - 1];}\n\n this.selections = [];\n this.commands.on(\"exec\", this.startOperation.bind(this), true);\n this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\n\n this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this));\n\n this.on(\"change\", function() {\n this.curOp || this.startOperation();\n this.curOp.docChanged = true;\n }.bind(this), true);\n\n this.on(\"changeSelection\", function() {\n this.curOp || this.startOperation();\n this.curOp.selectionChanged = true;\n }.bind(this), true);\n };\n\n this.curOp = null;\n this.prevOp = {};\n this.startOperation = function(commadEvent) {\n if (this.curOp) {\n if (!commadEvent || this.curOp.command)\n return;\n this.prevOp = this.curOp;\n }\n if (!commadEvent) {\n this.previousCommand = null;\n commadEvent = {};\n }\n\n this.$opResetTimer.schedule();\n this.curOp = {\n command: commadEvent.command || {},\n args: commadEvent.args,\n scrollTop: this.renderer.scrollTop\n };\n if (this.curOp.command.name && this.curOp.command.scrollIntoView !== undefined)\n this.$blockScrolling++;\n };\n\n this.endOperation = function(e) {\n if (this.curOp) {\n if (e && e.returnValue === false)\n return this.curOp = null;\n this._signal(\"beforeEndOperation\");\n var command = this.curOp.command;\n if (command.name && this.$blockScrolling > 0)\n this.$blockScrolling--;\n var scrollIntoView = command && command.scrollIntoView;\n if (scrollIntoView) {\n switch (scrollIntoView) {\n case \"center-animate\":\n scrollIntoView = \"animate\";\n case \"center\":\n this.renderer.scrollCursorIntoView(null, 0.5);\n break;\n case \"animate\":\n case \"cursor\":\n this.renderer.scrollCursorIntoView();\n break;\n case \"selectionPart\":\n var range = this.selection.getRange();\n var config = this.renderer.layerConfig;\n if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n }\n break;\n default:\n break;\n }\n if (scrollIntoView == \"animate\")\n this.renderer.animateScrolling(this.curOp.scrollTop);\n }\n \n this.prevOp = this.curOp;\n this.curOp = null;\n }\n };\n this.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\n this.$historyTracker = function(e) {\n if (!this.$mergeUndoDeltas)\n return;\n\n var prev = this.prevOp;\n var mergeableCommands = this.$mergeableCommands;\n var shouldMerge = prev.command && (e.command.name == prev.command.name);\n if (e.command.name == \"insertstring\") {\n var text = e.args;\n if (this.mergeNextCommand === undefined)\n this.mergeNextCommand = true;\n\n shouldMerge = shouldMerge\n && this.mergeNextCommand // previous command allows to coalesce with\n && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n\n this.mergeNextCommand = true;\n } else {\n shouldMerge = shouldMerge\n && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n }\n\n if (\n this.$mergeUndoDeltas != \"always\"\n && Date.now() - this.sequenceStartTime > 2000\n ) {\n shouldMerge = false; // the sequence is too long\n }\n\n if (shouldMerge)\n this.session.mergeUndoDeltas = true;\n else if (mergeableCommands.indexOf(e.command.name) !== -1)\n this.sequenceStartTime = Date.now();\n };\n this.setKeyboardHandler = function(keyboardHandler, cb) {\n if (keyboardHandler && typeof keyboardHandler === \"string\") {\n this.$keybindingId = keyboardHandler;\n var _self = this;\n config.loadModule([\"keybinding\", keyboardHandler], function(module) {\n if (_self.$keybindingId == keyboardHandler)\n _self.keyBinding.setKeyboardHandler(module && module.handler);\n cb && cb();\n });\n } else {\n this.$keybindingId = null;\n this.keyBinding.setKeyboardHandler(keyboardHandler);\n cb && cb();\n }\n };\n this.getKeyboardHandler = function() {\n return this.keyBinding.getKeyboardHandler();\n };\n this.setSession = function(session) {\n if (this.session == session)\n return;\n if (this.curOp) this.endOperation();\n this.curOp = {};\n\n var oldSession = this.session;\n if (oldSession) {\n this.session.off(\"change\", this.$onDocumentChange);\n this.session.off(\"changeMode\", this.$onChangeMode);\n this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.session.off(\"changeTabSize\", this.$onChangeTabSize);\n this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\n this.session.off(\"changeFold\", this.$onChangeFold);\n this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\n this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\n this.session.off(\"changeOverwrite\", this.$onCursorChange);\n this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\n this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\n\n var selection = this.session.getSelection();\n selection.off(\"changeCursor\", this.$onCursorChange);\n selection.off(\"changeSelection\", this.$onSelectionChange);\n }\n\n this.session = session;\n if (session) {\n this.$onDocumentChange = this.onDocumentChange.bind(this);\n session.on(\"change\", this.$onDocumentChange);\n this.renderer.setSession(session);\n \n this.$onChangeMode = this.onChangeMode.bind(this);\n session.on(\"changeMode\", this.$onChangeMode);\n \n this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n \n this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n session.on(\"changeTabSize\", this.$onChangeTabSize);\n \n this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\n \n this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n session.on(\"changeWrapMode\", this.$onChangeWrapMode);\n \n this.$onChangeFold = this.onChangeFold.bind(this);\n session.on(\"changeFold\", this.$onChangeFold);\n \n this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\n \n this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\n \n this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\n \n this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\n \n this.$onCursorChange = this.onCursorChange.bind(this);\n this.session.on(\"changeOverwrite\", this.$onCursorChange);\n \n this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\n \n this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\n \n this.selection = session.getSelection();\n this.selection.on(\"changeCursor\", this.$onCursorChange);\n \n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n \n this.onChangeMode();\n \n this.$blockScrolling += 1;\n this.onCursorChange();\n this.$blockScrolling -= 1;\n \n this.onScrollTopChange();\n this.onScrollLeftChange();\n this.onSelectionChange();\n this.onChangeFrontMarker();\n this.onChangeBackMarker();\n this.onChangeBreakpoint();\n this.onChangeAnnotation();\n this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n this.renderer.updateFull();\n } else {\n this.selection = null;\n this.renderer.setSession(session);\n }\n\n this._signal(\"changeSession\", {\n session: session,\n oldSession: oldSession\n });\n \n this.curOp = null;\n \n oldSession && oldSession._signal(\"changeEditor\", {oldEditor: this});\n session && session._signal(\"changeEditor\", {editor: this});\n\n if (session && session.bgTokenizer)\n session.bgTokenizer.scheduleStart();\n };\n this.getSession = function() {\n return this.session;\n };\n this.setValue = function(val, cursorPos) {\n this.session.doc.setValue(val);\n\n if (!cursorPos)\n this.selectAll();\n else if (cursorPos == 1)\n this.navigateFileEnd();\n else if (cursorPos == -1)\n this.navigateFileStart();\n\n return val;\n };\n this.getValue = function() {\n return this.session.getValue();\n };\n this.getSelection = function() {\n return this.selection;\n };\n this.resize = function(force) {\n this.renderer.onResize(force);\n };\n this.setTheme = function(theme, cb) {\n this.renderer.setTheme(theme, cb);\n };\n this.getTheme = function() {\n return this.renderer.getTheme();\n };\n this.setStyle = function(style) {\n this.renderer.setStyle(style);\n };\n this.unsetStyle = function(style) {\n this.renderer.unsetStyle(style);\n };\n this.getFontSize = function () {\n return this.getOption(\"fontSize\") ||\n dom.computedStyle(this.container, \"fontSize\");\n };\n this.setFontSize = function(size) {\n this.setOption(\"fontSize\", size);\n };\n\n this.$highlightBrackets = function() {\n if (this.session.$bracketHighlight) {\n this.session.removeMarker(this.session.$bracketHighlight);\n this.session.$bracketHighlight = null;\n }\n\n if (this.$highlightPending) {\n return;\n }\n var self = this;\n this.$highlightPending = true;\n setTimeout(function() {\n self.$highlightPending = false;\n var session = self.session;\n if (!session || !session.bgTokenizer) return;\n var pos = session.findMatchingBracket(self.getCursorPosition());\n if (pos) {\n var range = new Range(pos.row, pos.column, pos.row, pos.column + 1);\n } else if (session.$mode.getMatching) {\n var range = session.$mode.getMatching(self.session);\n }\n if (range)\n session.$bracketHighlight = session.addMarker(range, \"ace_bracket\", \"text\");\n }, 50);\n };\n this.$highlightTags = function() {\n if (this.$highlightTagPending)\n return;\n var self = this;\n this.$highlightTagPending = true;\n setTimeout(function() {\n self.$highlightTagPending = false;\n \n var session = self.session;\n if (!session || !session.bgTokenizer) return;\n \n var pos = self.getCursorPosition();\n var iterator = new TokenIterator(self.session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n \n if (!token || !/\\b(?:tag-open|tag-name)/.test(token.type)) {\n session.removeMarker(session.$tagHighlight);\n session.$tagHighlight = null;\n return;\n }\n \n if (token.type.indexOf(\"tag-open\") != -1) {\n token = iterator.stepForward();\n if (!token)\n return;\n }\n \n var tag = token.value;\n var depth = 0;\n var prevToken = iterator.stepBackward();\n \n if (prevToken.value == '<'){\n do {\n prevToken = token;\n token = iterator.stepForward();\n \n if (token && token.value === tag && token.type.indexOf('tag-name') !== -1) {\n if (prevToken.value === '<'){\n depth++;\n } else if (prevToken.value === '= 0);\n } else {\n do {\n token = prevToken;\n prevToken = iterator.stepBackward();\n \n if (token && token.value === tag && token.type.indexOf('tag-name') !== -1) {\n if (prevToken.value === '<') {\n depth++;\n } else if (prevToken.value === ' 1))\n highlight = false;\n }\n\n if (session.$highlightLineMarker && !highlight) {\n session.removeMarker(session.$highlightLineMarker.id);\n session.$highlightLineMarker = null;\n } else if (!session.$highlightLineMarker && highlight) {\n var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\n session.$highlightLineMarker = range;\n } else if (highlight) {\n session.$highlightLineMarker.start.row = highlight.row;\n session.$highlightLineMarker.end.row = highlight.row;\n session.$highlightLineMarker.start.column = highlight.column;\n session._signal(\"changeBackMarker\");\n }\n };\n\n this.onSelectionChange = function(e) {\n var session = this.session;\n\n if (session.$selectionMarker) {\n session.removeMarker(session.$selectionMarker);\n }\n session.$selectionMarker = null;\n\n if (!this.selection.isEmpty()) {\n var range = this.selection.getRange();\n var style = this.getSelectionStyle();\n session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\n } else {\n this.$updateHighlightActiveLine();\n }\n\n var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n this.session.highlight(re);\n\n this._signal(\"changeSelection\");\n };\n\n this.$getSelectionHighLightRegexp = function() {\n var session = this.session;\n\n var selection = this.getSelectionRange();\n if (selection.isEmpty() || selection.isMultiLine())\n return;\n\n var startOuter = selection.start.column - 1;\n var endOuter = selection.end.column + 1;\n var line = session.getLine(selection.start.row);\n var lineCols = line.length;\n var needle = line.substring(Math.max(startOuter, 0),\n Math.min(endOuter, lineCols));\n if ((startOuter >= 0 && /^[\\w\\d]/.test(needle)) ||\n (endOuter <= lineCols && /[\\w\\d]$/.test(needle)))\n return;\n\n needle = line.substring(selection.start.column, selection.end.column);\n if (!/^[\\w\\d]+$/.test(needle))\n return;\n\n var re = this.$search.$assembleRegExp({\n wholeWord: true,\n caseSensitive: true,\n needle: needle\n });\n\n return re;\n };\n\n\n this.onChangeFrontMarker = function() {\n this.renderer.updateFrontMarkers();\n };\n\n this.onChangeBackMarker = function() {\n this.renderer.updateBackMarkers();\n };\n\n\n this.onChangeBreakpoint = function() {\n this.renderer.updateBreakpoints();\n };\n\n this.onChangeAnnotation = function() {\n this.renderer.setAnnotations(this.session.getAnnotations());\n };\n\n\n this.onChangeMode = function(e) {\n this.renderer.updateText();\n this._emit(\"changeMode\", e);\n };\n\n\n this.onChangeWrapLimit = function() {\n this.renderer.updateFull();\n };\n\n this.onChangeWrapMode = function() {\n this.renderer.onResize(true);\n };\n\n\n this.onChangeFold = function() {\n this.$updateHighlightActiveLine();\n this.renderer.updateFull();\n };\n this.getSelectedText = function() {\n return this.session.getTextRange(this.getSelectionRange());\n };\n this.getCopyText = function() {\n var text = this.getSelectedText();\n this._signal(\"copy\", text);\n return text;\n };\n this.onCopy = function() {\n this.commands.exec(\"copy\", this);\n };\n this.onCut = function() {\n this.commands.exec(\"cut\", this);\n };\n this.onPaste = function(text, event) {\n var e = {text: text, event: event};\n this.commands.exec(\"paste\", this, e);\n };\n \n this.$handlePaste = function(e) {\n if (typeof e == \"string\") \n e = {text: e};\n this._signal(\"paste\", e);\n var text = e.text;\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n this.insert(text);\n } else {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var ranges = this.selection.rangeList.ranges;\n \n if (lines.length > ranges.length || lines.length < 2 || !lines[1])\n return this.commands.exec(\"insertstring\", this, text);\n \n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.isEmpty())\n this.session.remove(range);\n \n this.session.insert(range.start, lines[i]);\n }\n }\n };\n\n this.execCommand = function(command, args) {\n return this.commands.exec(command, this, args);\n };\n this.insert = function(text, pasted) {\n var session = this.session;\n var mode = session.getMode();\n var cursor = this.getCursorPosition();\n\n if (this.getBehavioursEnabled() && !pasted) {\n var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\n if (transform) {\n if (text !== transform.text) {\n this.session.mergeUndoDeltas = false;\n this.$mergeNextCommand = false;\n }\n text = transform.text;\n\n }\n }\n \n if (text == \"\\t\")\n text = this.session.getTabString();\n if (!this.selection.isEmpty()) {\n var range = this.getSelectionRange();\n cursor = this.session.remove(range);\n this.clearSelection();\n }\n else if (this.session.getOverwrite() && text.indexOf(\"\\n\") == -1) {\n var range = new Range.fromPoints(cursor, cursor);\n range.end.column += text.length;\n this.session.remove(range);\n }\n\n if (text == \"\\n\" || text == \"\\r\\n\") {\n var line = session.getLine(cursor.row);\n if (cursor.column > line.search(/\\S|$/)) {\n var d = line.substr(cursor.column).search(/\\S|$/);\n session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n }\n }\n this.clearSelection();\n\n var start = cursor.column;\n var lineState = session.getState(cursor.row);\n var line = session.getLine(cursor.row);\n var shouldOutdent = mode.checkOutdent(lineState, line, text);\n var end = session.insert(cursor, text);\n\n if (transform && transform.selection) {\n if (transform.selection.length == 2) { // Transform relative to the current column\n this.selection.setSelectionRange(\n new Range(cursor.row, start + transform.selection[0],\n cursor.row, start + transform.selection[1]));\n } else { // Transform relative to the current row.\n this.selection.setSelectionRange(\n new Range(cursor.row + transform.selection[0],\n transform.selection[1],\n cursor.row + transform.selection[2],\n transform.selection[3]));\n }\n }\n\n if (session.getDocument().isNewLine(text)) {\n var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n\n session.insert({row: cursor.row+1, column: 0}, lineIndent);\n }\n if (shouldOutdent)\n mode.autoOutdent(lineState, session, cursor.row);\n };\n\n this.onTextInput = function(text) {\n this.keyBinding.onTextInput(text);\n };\n\n this.onCommandKey = function(e, hashId, keyCode) {\n this.keyBinding.onCommandKey(e, hashId, keyCode);\n };\n this.setOverwrite = function(overwrite) {\n this.session.setOverwrite(overwrite);\n };\n this.getOverwrite = function() {\n return this.session.getOverwrite();\n };\n this.toggleOverwrite = function() {\n this.session.toggleOverwrite();\n };\n this.setScrollSpeed = function(speed) {\n this.setOption(\"scrollSpeed\", speed);\n };\n this.getScrollSpeed = function() {\n return this.getOption(\"scrollSpeed\");\n };\n this.setDragDelay = function(dragDelay) {\n this.setOption(\"dragDelay\", dragDelay);\n };\n this.getDragDelay = function() {\n return this.getOption(\"dragDelay\");\n };\n this.setSelectionStyle = function(val) {\n this.setOption(\"selectionStyle\", val);\n };\n this.getSelectionStyle = function() {\n return this.getOption(\"selectionStyle\");\n };\n this.setHighlightActiveLine = function(shouldHighlight) {\n this.setOption(\"highlightActiveLine\", shouldHighlight);\n };\n this.getHighlightActiveLine = function() {\n return this.getOption(\"highlightActiveLine\");\n };\n this.setHighlightGutterLine = function(shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n\n this.getHighlightGutterLine = function() {\n return this.getOption(\"highlightGutterLine\");\n };\n this.setHighlightSelectedWord = function(shouldHighlight) {\n this.setOption(\"highlightSelectedWord\", shouldHighlight);\n };\n this.getHighlightSelectedWord = function() {\n return this.$highlightSelectedWord;\n };\n\n this.setAnimatedScroll = function(shouldAnimate){\n this.renderer.setAnimatedScroll(shouldAnimate);\n };\n\n this.getAnimatedScroll = function(){\n return this.renderer.getAnimatedScroll();\n };\n this.setShowInvisibles = function(showInvisibles) {\n this.renderer.setShowInvisibles(showInvisibles);\n };\n this.getShowInvisibles = function() {\n return this.renderer.getShowInvisibles();\n };\n\n this.setDisplayIndentGuides = function(display) {\n this.renderer.setDisplayIndentGuides(display);\n };\n\n this.getDisplayIndentGuides = function() {\n return this.renderer.getDisplayIndentGuides();\n };\n this.setShowPrintMargin = function(showPrintMargin) {\n this.renderer.setShowPrintMargin(showPrintMargin);\n };\n this.getShowPrintMargin = function() {\n return this.renderer.getShowPrintMargin();\n };\n this.setPrintMarginColumn = function(showPrintMargin) {\n this.renderer.setPrintMarginColumn(showPrintMargin);\n };\n this.getPrintMarginColumn = function() {\n return this.renderer.getPrintMarginColumn();\n };\n this.setReadOnly = function(readOnly) {\n this.setOption(\"readOnly\", readOnly);\n };\n this.getReadOnly = function() {\n return this.getOption(\"readOnly\");\n };\n this.setBehavioursEnabled = function (enabled) {\n this.setOption(\"behavioursEnabled\", enabled);\n };\n this.getBehavioursEnabled = function () {\n return this.getOption(\"behavioursEnabled\");\n };\n this.setWrapBehavioursEnabled = function (enabled) {\n this.setOption(\"wrapBehavioursEnabled\", enabled);\n };\n this.getWrapBehavioursEnabled = function () {\n return this.getOption(\"wrapBehavioursEnabled\");\n };\n this.setShowFoldWidgets = function(show) {\n this.setOption(\"showFoldWidgets\", show);\n\n };\n this.getShowFoldWidgets = function() {\n return this.getOption(\"showFoldWidgets\");\n };\n\n this.setFadeFoldWidgets = function(fade) {\n this.setOption(\"fadeFoldWidgets\", fade);\n };\n\n this.getFadeFoldWidgets = function() {\n return this.getOption(\"fadeFoldWidgets\");\n };\n this.remove = function(dir) {\n if (this.selection.isEmpty()){\n if (dir == \"left\")\n this.selection.selectLeft();\n else\n this.selection.selectRight();\n }\n\n var range = this.getSelectionRange();\n if (this.getBehavioursEnabled()) {\n var session = this.session;\n var state = session.getState(range.start.row);\n var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\n\n if (range.end.column === 0) {\n var text = session.getTextRange(range);\n if (text[text.length - 1] == \"\\n\") {\n var line = session.getLine(range.end.row);\n if (/^\\s+$/.test(line)) {\n range.end.column = line.length;\n }\n }\n }\n if (new_range)\n range = new_range;\n }\n\n this.session.remove(range);\n this.clearSelection();\n };\n this.removeWordRight = function() {\n if (this.selection.isEmpty())\n this.selection.selectWordRight();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeWordLeft = function() {\n if (this.selection.isEmpty())\n this.selection.selectWordLeft();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeToLineStart = function() {\n if (this.selection.isEmpty())\n this.selection.selectLineStart();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeToLineEnd = function() {\n if (this.selection.isEmpty())\n this.selection.selectLineEnd();\n\n var range = this.getSelectionRange();\n if (range.start.column == range.end.column && range.start.row == range.end.row) {\n range.end.column = 0;\n range.end.row++;\n }\n\n this.session.remove(range);\n this.clearSelection();\n };\n this.splitLine = function() {\n if (!this.selection.isEmpty()) {\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n }\n\n var cursor = this.getCursorPosition();\n this.insert(\"\\n\");\n this.moveCursorToPosition(cursor);\n };\n this.transposeLetters = function() {\n if (!this.selection.isEmpty()) {\n return;\n }\n\n var cursor = this.getCursorPosition();\n var column = cursor.column;\n if (column === 0)\n return;\n\n var line = this.session.getLine(cursor.row);\n var swap, range;\n if (column < line.length) {\n swap = line.charAt(column) + line.charAt(column-1);\n range = new Range(cursor.row, column-1, cursor.row, column+1);\n }\n else {\n swap = line.charAt(column-1) + line.charAt(column-2);\n range = new Range(cursor.row, column-2, cursor.row, column);\n }\n this.session.replace(range, swap);\n this.session.selection.moveToPosition(range.end);\n };\n this.toLowerCase = function() {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toLowerCase());\n this.selection.setSelectionRange(originalRange);\n };\n this.toUpperCase = function() {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toUpperCase());\n this.selection.setSelectionRange(originalRange);\n };\n this.indent = function() {\n var session = this.session;\n var range = this.getSelectionRange();\n\n if (range.start.row < range.end.row) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n } else if (range.start.column < range.end.column) {\n var text = session.getTextRange(range);\n if (!/^\\s+$/.test(text)) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n }\n \n var line = session.getLine(range.start.row);\n var position = range.start;\n var size = session.getTabSize();\n var column = session.documentToScreenColumn(position.row, position.column);\n\n if (this.session.getUseSoftTabs()) {\n var count = (size - column % size);\n var indentString = lang.stringRepeat(\" \", count);\n } else {\n var count = column % size;\n while (line[range.start.column - 1] == \" \" && count) {\n range.start.column--;\n count--;\n }\n this.selection.setSelectionRange(range);\n indentString = \"\\t\";\n }\n return this.insert(indentString);\n };\n this.blockIndent = function() {\n var rows = this.$getSelectedRows();\n this.session.indentRows(rows.first, rows.last, \"\\t\");\n };\n this.blockOutdent = function() {\n var selection = this.session.getSelection();\n this.session.outdentRows(selection.getRange());\n };\n this.sortLines = function() {\n var rows = this.$getSelectedRows();\n var session = this.session;\n\n var lines = [];\n for (var i = rows.first; i <= rows.last; i++)\n lines.push(session.getLine(i));\n\n lines.sort(function(a, b) {\n if (a.toLowerCase() < b.toLowerCase()) return -1;\n if (a.toLowerCase() > b.toLowerCase()) return 1;\n return 0;\n });\n\n var deleteRange = new Range(0, 0, 0, 0);\n for (var i = rows.first; i <= rows.last; i++) {\n var line = session.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n deleteRange.end.column = line.length;\n session.replace(deleteRange, lines[i-rows.first]);\n }\n };\n this.toggleCommentLines = function() {\n var state = this.session.getState(this.getCursorPosition().row);\n var rows = this.$getSelectedRows();\n this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n };\n\n this.toggleBlockComment = function() {\n var cursor = this.getCursorPosition();\n var state = this.session.getState(cursor.row);\n var range = this.getSelectionRange();\n this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n };\n this.getNumberAt = function(row, column) {\n var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n _numberRx.lastIndex = 0;\n\n var s = this.session.getLine(row);\n while (_numberRx.lastIndex < column) {\n var m = _numberRx.exec(s);\n if(m.index <= column && m.index+m[0].length >= column){\n var number = {\n value: m[0],\n start: m.index,\n end: m.index+m[0].length\n };\n return number;\n }\n }\n return null;\n };\n this.modifyNumber = function(amount) {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n var charRange = new Range(row, column-1, row, column);\n\n var c = this.session.getTextRange(charRange);\n if (!isNaN(parseFloat(c)) && isFinite(c)) {\n var nr = this.getNumberAt(row, column);\n if (nr) {\n var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\n var decimals = nr.start + nr.value.length - fp;\n\n var t = parseFloat(nr.value);\n t *= Math.pow(10, decimals);\n\n\n if(fp !== nr.end && column < fp){\n amount *= Math.pow(10, nr.end - column - 1);\n } else {\n amount *= Math.pow(10, nr.end - column);\n }\n\n t += amount;\n t /= Math.pow(10, decimals);\n var nnr = t.toFixed(decimals);\n var replaceRange = new Range(row, nr.start, row, nr.end);\n this.session.replace(replaceRange, nnr);\n this.moveCursorTo(row, Math.max(nr.start +1, column + nnr.length - nr.value.length));\n\n }\n }\n };\n this.removeLines = function() {\n var rows = this.$getSelectedRows();\n this.session.removeFullLines(rows.first, rows.last);\n this.clearSelection();\n };\n\n this.duplicateSelection = function() {\n var sel = this.selection;\n var doc = this.session;\n var range = sel.getRange();\n var reverse = sel.isBackwards();\n if (range.isEmpty()) {\n var row = range.start.row;\n doc.duplicateLines(row, row);\n } else {\n var point = reverse ? range.start : range.end;\n var endPoint = doc.insert(point, doc.getTextRange(range), false);\n range.start = point;\n range.end = endPoint;\n\n sel.setSelectionRange(range, reverse);\n }\n };\n this.moveLinesDown = function() {\n this.$moveLines(1, false);\n };\n this.moveLinesUp = function() {\n this.$moveLines(-1, false);\n };\n this.moveText = function(range, toPosition, copy) {\n return this.session.moveText(range, toPosition, copy);\n };\n this.copyLinesUp = function() {\n this.$moveLines(-1, true);\n };\n this.copyLinesDown = function() {\n this.$moveLines(1, true);\n };\n this.$moveLines = function(dir, copy) {\n var rows, moved;\n var selection = this.selection;\n if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n var range = selection.toOrientedRange();\n rows = this.$getSelectedRows(range);\n moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n if (copy && dir == -1) moved = 0;\n range.moveBy(moved, 0);\n selection.fromOrientedRange(range);\n } else {\n var ranges = selection.rangeList.ranges;\n selection.rangeList.detach(this.session);\n this.inVirtualSelectionMode = true;\n \n var diff = 0;\n var totalDiff = 0;\n var l = ranges.length;\n for (var i = 0; i < l; i++) {\n var rangeIndex = i;\n ranges[i].moveBy(diff, 0);\n rows = this.$getSelectedRows(ranges[i]);\n var first = rows.first;\n var last = rows.last;\n while (++i < l) {\n if (totalDiff) ranges[i].moveBy(totalDiff, 0);\n var subRows = this.$getSelectedRows(ranges[i]);\n if (copy && subRows.first != last)\n break;\n else if (!copy && subRows.first > last + 1)\n break;\n last = subRows.last;\n }\n i--;\n diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n if (copy && dir == -1) rangeIndex = i + 1;\n while (rangeIndex <= i) {\n ranges[rangeIndex].moveBy(diff, 0);\n rangeIndex++;\n }\n if (!copy) diff = 0;\n totalDiff += diff;\n }\n \n selection.fromOrientedRange(selection.ranges[0]);\n selection.rangeList.attach(this.session);\n this.inVirtualSelectionMode = false;\n }\n };\n this.$getSelectedRows = function(range) {\n range = (range || this.getSelectionRange()).collapseRows();\n\n return {\n first: this.session.getRowFoldStart(range.start.row),\n last: this.session.getRowFoldEnd(range.end.row)\n };\n };\n\n this.onCompositionStart = function(text) {\n this.renderer.showComposition(this.getCursorPosition());\n };\n\n this.onCompositionUpdate = function(text) {\n this.renderer.setCompositionText(text);\n };\n\n this.onCompositionEnd = function() {\n this.renderer.hideComposition();\n };\n this.getFirstVisibleRow = function() {\n return this.renderer.getFirstVisibleRow();\n };\n this.getLastVisibleRow = function() {\n return this.renderer.getLastVisibleRow();\n };\n this.isRowVisible = function(row) {\n return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n };\n this.isRowFullyVisible = function(row) {\n return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n };\n this.$getVisibleRowCount = function() {\n return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n };\n\n this.$moveByPage = function(dir, select) {\n var renderer = this.renderer;\n var config = this.renderer.layerConfig;\n var rows = dir * Math.floor(config.height / config.lineHeight);\n\n this.$blockScrolling++;\n if (select === true) {\n this.selection.$moveSelection(function(){\n this.moveCursorBy(rows, 0);\n });\n } else if (select === false) {\n this.selection.moveCursorBy(rows, 0);\n this.selection.clearSelection();\n }\n this.$blockScrolling--;\n\n var scrollTop = renderer.scrollTop;\n\n renderer.scrollBy(0, rows * config.lineHeight);\n if (select != null)\n renderer.scrollCursorIntoView(null, 0.5);\n\n renderer.animateScrolling(scrollTop);\n };\n this.selectPageDown = function() {\n this.$moveByPage(1, true);\n };\n this.selectPageUp = function() {\n this.$moveByPage(-1, true);\n };\n this.gotoPageDown = function() {\n this.$moveByPage(1, false);\n };\n this.gotoPageUp = function() {\n this.$moveByPage(-1, false);\n };\n this.scrollPageDown = function() {\n this.$moveByPage(1);\n };\n this.scrollPageUp = function() {\n this.$moveByPage(-1);\n };\n this.scrollToRow = function(row) {\n this.renderer.scrollToRow(row);\n };\n this.scrollToLine = function(line, center, animate, callback) {\n this.renderer.scrollToLine(line, center, animate, callback);\n };\n this.centerSelection = function() {\n var range = this.getSelectionRange();\n var pos = {\n row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n };\n this.renderer.alignCursor(pos, 0.5);\n };\n this.getCursorPosition = function() {\n return this.selection.getCursor();\n };\n this.getCursorPositionScreen = function() {\n return this.session.documentToScreenPosition(this.getCursorPosition());\n };\n this.getSelectionRange = function() {\n return this.selection.getRange();\n };\n this.selectAll = function() {\n this.$blockScrolling += 1;\n this.selection.selectAll();\n this.$blockScrolling -= 1;\n };\n this.clearSelection = function() {\n this.selection.clearSelection();\n };\n this.moveCursorTo = function(row, column) {\n this.selection.moveCursorTo(row, column);\n };\n this.moveCursorToPosition = function(pos) {\n this.selection.moveCursorToPosition(pos);\n };\n this.jumpToMatching = function(select, expand) {\n var cursor = this.getCursorPosition();\n var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n var prevToken = iterator.getCurrentToken();\n var token = prevToken || iterator.stepForward();\n\n if (!token) return;\n var matchType;\n var found = false;\n var depth = {};\n var i = cursor.column - token.start;\n var bracketType;\n var brackets = {\n \")\": \"(\",\n \"(\": \"(\",\n \"]\": \"[\",\n \"[\": \"[\",\n \"{\": \"{\",\n \"}\": \"{\"\n };\n \n do {\n if (token.value.match(/[{}()\\[\\]]/g)) {\n for (; i < token.value.length && !found; i++) {\n if (!brackets[token.value[i]]) {\n continue;\n }\n\n bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\n\n if (isNaN(depth[bracketType])) {\n depth[bracketType] = 0;\n }\n\n switch (token.value[i]) {\n case '(':\n case '[':\n case '{':\n depth[bracketType]++;\n break;\n case ')':\n case ']':\n case '}':\n depth[bracketType]--;\n\n if (depth[bracketType] === -1) {\n matchType = 'bracket';\n found = true;\n }\n break;\n }\n }\n }\n else if (token && token.type.indexOf('tag-name') !== -1) {\n if (isNaN(depth[token.value])) {\n depth[token.value] = 0;\n }\n \n if (prevToken.value === '<') {\n depth[token.value]++;\n }\n else if (prevToken.value === '= 0; --i) {\n if(this.$tryReplace(ranges[i], replacement)) {\n replaced++;\n }\n }\n\n this.selection.setSelectionRange(selection);\n this.$blockScrolling -= 1;\n\n return replaced;\n };\n\n this.$tryReplace = function(range, replacement) {\n var input = this.session.getTextRange(range);\n replacement = this.$search.replace(input, replacement);\n if (replacement !== null) {\n range.end = this.session.replace(range, replacement);\n return range;\n } else {\n return null;\n }\n };\n this.getLastSearchOptions = function() {\n return this.$search.getOptions();\n };\n this.find = function(needle, options, animate) {\n if (!options)\n options = {};\n\n if (typeof needle == \"string\" || needle instanceof RegExp)\n options.needle = needle;\n else if (typeof needle == \"object\")\n oop.mixin(options, needle);\n\n var range = this.selection.getRange();\n if (options.needle == null) {\n needle = this.session.getTextRange(range)\n || this.$search.$options.needle;\n if (!needle) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n needle = this.session.getTextRange(range);\n }\n this.$search.set({needle: needle});\n }\n\n this.$search.set(options);\n if (!options.start)\n this.$search.set({start: range});\n\n var newRange = this.$search.find(this.session);\n if (options.preventScroll)\n return newRange;\n if (newRange) {\n this.revealRange(newRange, animate);\n return newRange;\n }\n if (options.backwards)\n range.start = range.end;\n else\n range.end = range.start;\n this.selection.setRange(range);\n };\n this.findNext = function(options, animate) {\n this.find({skipCurrent: true, backwards: false}, options, animate);\n };\n this.findPrevious = function(options, animate) {\n this.find(options, {skipCurrent: true, backwards: true}, animate);\n };\n\n this.revealRange = function(range, animate) {\n this.$blockScrolling += 1;\n this.session.unfold(range);\n this.selection.setSelectionRange(range);\n this.$blockScrolling -= 1;\n\n var scrollTop = this.renderer.scrollTop;\n this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n if (animate !== false)\n this.renderer.animateScrolling(scrollTop);\n };\n this.undo = function() {\n this.$blockScrolling++;\n this.session.getUndoManager().undo();\n this.$blockScrolling--;\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n this.redo = function() {\n this.$blockScrolling++;\n this.session.getUndoManager().redo();\n this.$blockScrolling--;\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n this.destroy = function() {\n this.renderer.destroy();\n this._signal(\"destroy\", this);\n if (this.session) {\n this.session.destroy();\n }\n };\n this.setAutoScrollEditorIntoView = function(enable) {\n if (!enable)\n return;\n var rect;\n var self = this;\n var shouldScroll = false;\n if (!this.$scrollAnchor)\n this.$scrollAnchor = document.createElement(\"div\");\n var scrollAnchor = this.$scrollAnchor;\n scrollAnchor.style.cssText = \"position:absolute\";\n this.container.insertBefore(scrollAnchor, this.container.firstChild);\n var onChangeSelection = this.on(\"changeSelection\", function() {\n shouldScroll = true;\n });\n var onBeforeRender = this.renderer.on(\"beforeRender\", function() {\n if (shouldScroll)\n rect = self.renderer.container.getBoundingClientRect();\n });\n var onAfterRender = this.renderer.on(\"afterRender\", function() {\n if (shouldScroll && rect && (self.isFocused()\n || self.searchBox && self.searchBox.isFocused())\n ) {\n var renderer = self.renderer;\n var pos = renderer.$cursorLayer.$pixelPos;\n var config = renderer.layerConfig;\n var top = pos.top - config.offset;\n if (pos.top >= 0 && top + rect.top < 0) {\n shouldScroll = true;\n } else if (pos.top < config.height &&\n pos.top + rect.top + config.lineHeight > window.innerHeight) {\n shouldScroll = false;\n } else {\n shouldScroll = null;\n }\n if (shouldScroll != null) {\n scrollAnchor.style.top = top + \"px\";\n scrollAnchor.style.left = pos.left + \"px\";\n scrollAnchor.style.height = config.lineHeight + \"px\";\n scrollAnchor.scrollIntoView(shouldScroll);\n }\n shouldScroll = rect = null;\n }\n });\n this.setAutoScrollEditorIntoView = function(enable) {\n if (enable)\n return;\n delete this.setAutoScrollEditorIntoView;\n this.off(\"changeSelection\", onChangeSelection);\n this.renderer.off(\"afterRender\", onAfterRender);\n this.renderer.off(\"beforeRender\", onBeforeRender);\n };\n };\n\n\n this.$resetCursorStyle = function() {\n var style = this.$cursorStyle || \"ace\";\n var cursorLayer = this.renderer.$cursorLayer;\n if (!cursorLayer)\n return;\n cursorLayer.setSmoothBlinking(/smooth/.test(style));\n cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\n dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\n };\n\n}).call(Editor.prototype);\n\n\n\nconfig.defineOptions(Editor.prototype, \"editor\", {\n selectionStyle: {\n set: function(style) {\n this.onSelectionChange();\n this._signal(\"changeSelectionStyle\", {data: style});\n },\n initialValue: \"line\"\n },\n highlightActiveLine: {\n set: function() {this.$updateHighlightActiveLine();},\n initialValue: true\n },\n highlightSelectedWord: {\n set: function(shouldHighlight) {this.$onSelectionChange();},\n initialValue: true\n },\n readOnly: {\n set: function(readOnly) {\n this.$resetCursorStyle(); \n },\n initialValue: false\n },\n cursorStyle: {\n set: function(val) { this.$resetCursorStyle(); },\n values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\n initialValue: \"ace\"\n },\n mergeUndoDeltas: {\n values: [false, true, \"always\"],\n initialValue: true\n },\n behavioursEnabled: {initialValue: true},\n wrapBehavioursEnabled: {initialValue: true},\n autoScrollEditorIntoView: {\n set: function(val) {this.setAutoScrollEditorIntoView(val);}\n },\n keyboardHandler: {\n set: function(val) { this.setKeyboardHandler(val); },\n get: function() { return this.keybindingId; },\n handlesSet: true\n },\n\n hScrollBarAlwaysVisible: \"renderer\",\n vScrollBarAlwaysVisible: \"renderer\",\n highlightGutterLine: \"renderer\",\n animatedScroll: \"renderer\",\n showInvisibles: \"renderer\",\n showPrintMargin: \"renderer\",\n printMarginColumn: \"renderer\",\n printMargin: \"renderer\",\n fadeFoldWidgets: \"renderer\",\n showFoldWidgets: \"renderer\",\n showLineNumbers: \"renderer\",\n showGutter: \"renderer\",\n displayIndentGuides: \"renderer\",\n fontSize: \"renderer\",\n fontFamily: \"renderer\",\n maxLines: \"renderer\",\n minLines: \"renderer\",\n scrollPastEnd: \"renderer\",\n fixedWidthGutter: \"renderer\",\n theme: \"renderer\",\n\n scrollSpeed: \"$mouseHandler\",\n dragDelay: \"$mouseHandler\",\n dragEnabled: \"$mouseHandler\",\n focusTimout: \"$mouseHandler\",\n tooltipFollowsMouse: \"$mouseHandler\",\n\n firstLineNumber: \"session\",\n overwrite: \"session\",\n newLineMode: \"session\",\n useWorker: \"session\",\n useSoftTabs: \"session\",\n tabSize: \"session\",\n wrap: \"session\",\n indentedSoftWrap: \"session\",\n foldStyle: \"session\",\n mode: \"session\"\n});\n\nexports.Editor = Editor;\n});\n\nace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\nvar UndoManager = function() {\n this.reset();\n};\n\n(function() {\n this.execute = function(options) {\n var deltaSets = options.args[0];\n this.$doc = options.args[1];\n if (options.merge && this.hasUndo()){\n this.dirtyCounter--;\n deltaSets = this.$undoStack.pop().concat(deltaSets);\n }\n this.$undoStack.push(deltaSets);\n this.$redoStack = [];\n if (this.dirtyCounter < 0) {\n this.dirtyCounter = NaN;\n }\n this.dirtyCounter++;\n };\n this.undo = function(dontSelect) {\n var deltaSets = this.$undoStack.pop();\n var undoSelectionRange = null;\n if (deltaSets) {\n undoSelectionRange = this.$doc.undoChanges(deltaSets, dontSelect);\n this.$redoStack.push(deltaSets);\n this.dirtyCounter--;\n }\n\n return undoSelectionRange;\n };\n this.redo = function(dontSelect) {\n var deltaSets = this.$redoStack.pop();\n var redoSelectionRange = null;\n if (deltaSets) {\n redoSelectionRange =\n this.$doc.redoChanges(this.$deserializeDeltas(deltaSets), dontSelect);\n this.$undoStack.push(deltaSets);\n this.dirtyCounter++;\n }\n return redoSelectionRange;\n };\n this.reset = function() {\n this.$undoStack = [];\n this.$redoStack = [];\n this.dirtyCounter = 0;\n };\n this.hasUndo = function() {\n return this.$undoStack.length > 0;\n };\n this.hasRedo = function() {\n return this.$redoStack.length > 0;\n };\n this.markClean = function() {\n this.dirtyCounter = 0;\n };\n this.isClean = function() {\n return this.dirtyCounter === 0;\n };\n this.$serializeDeltas = function(deltaSets) {\n return cloneDeltaSetsObj(deltaSets, $serializeDelta);\n };\n this.$deserializeDeltas = function(deltaSets) {\n return cloneDeltaSetsObj(deltaSets, $deserializeDelta);\n };\n \n function $serializeDelta(delta){\n return {\n action: delta.action,\n start: delta.start,\n end: delta.end,\n lines: delta.lines.length == 1 ? null : delta.lines,\n text: delta.lines.length == 1 ? delta.lines[0] : null\n };\n }\n \n function $deserializeDelta(delta) {\n return {\n action: delta.action,\n start: delta.start,\n end: delta.end,\n lines: delta.lines || [delta.text]\n };\n }\n \n function cloneDeltaSetsObj(deltaSets_old, fnGetModifiedDelta) {\n var deltaSets_new = new Array(deltaSets_old.length);\n for (var i = 0; i < deltaSets_old.length; i++) {\n var deltaSet_old = deltaSets_old[i];\n var deltaSet_new = { group: deltaSet_old.group, deltas: new Array(deltaSet_old.length)};\n \n for (var j = 0; j < deltaSet_old.deltas.length; j++) {\n var delta_old = deltaSet_old.deltas[j];\n deltaSet_new.deltas[j] = fnGetModifiedDelta(delta_old);\n }\n \n deltaSets_new[i] = deltaSet_new;\n }\n return deltaSets_new;\n }\n \n}).call(UndoManager.prototype);\n\nexports.UndoManager = UndoManager;\n});\n\nace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar dom = acequire(\"../lib/dom\");\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\n\nvar Gutter = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_gutter-layer\";\n parentEl.appendChild(this.element);\n this.setShowFoldWidgets(this.$showFoldWidgets);\n \n this.gutterWidth = 0;\n\n this.$annotations = [];\n this.$updateAnnotations = this.$updateAnnotations.bind(this);\n\n this.$cells = [];\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.setSession = function(session) {\n if (this.session)\n this.session.removeEventListener(\"change\", this.$updateAnnotations);\n this.session = session;\n if (session)\n session.on(\"change\", this.$updateAnnotations);\n };\n\n this.addGutterDecoration = function(row, className){\n if (window.console)\n console.warn && console.warn(\"deprecated use session.addGutterDecoration\");\n this.session.addGutterDecoration(row, className);\n };\n\n this.removeGutterDecoration = function(row, className){\n if (window.console)\n console.warn && console.warn(\"deprecated use session.removeGutterDecoration\");\n this.session.removeGutterDecoration(row, className);\n };\n\n this.setAnnotations = function(annotations) {\n this.$annotations = [];\n for (var i = 0; i < annotations.length; i++) {\n var annotation = annotations[i];\n var row = annotation.row;\n var rowInfo = this.$annotations[row];\n if (!rowInfo)\n rowInfo = this.$annotations[row] = {text: []};\n \n var annoText = annotation.text;\n annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || \"\";\n\n if (rowInfo.text.indexOf(annoText) === -1)\n rowInfo.text.push(annoText);\n\n var type = annotation.type;\n if (type == \"error\")\n rowInfo.className = \" ace_error\";\n else if (type == \"warning\" && rowInfo.className != \" ace_error\")\n rowInfo.className = \" ace_warning\";\n else if (type == \"info\" && (!rowInfo.className))\n rowInfo.className = \" ace_info\";\n }\n };\n\n this.$updateAnnotations = function (delta) {\n if (!this.$annotations.length)\n return;\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n } else if (delta.action == 'remove') {\n this.$annotations.splice(firstRow, len + 1, null);\n } else {\n var args = new Array(len + 1);\n args.unshift(firstRow, 1);\n this.$annotations.splice.apply(this.$annotations, args);\n }\n };\n\n this.update = function(config) {\n var session = this.session;\n var firstRow = config.firstRow;\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n session.getLength() - 1);\n var fold = session.getNextFoldLine(firstRow);\n var foldStart = fold ? fold.start.row : Infinity;\n var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n var breakpoints = session.$breakpoints;\n var decorations = session.$decorations;\n var firstLineNumber = session.$firstLineNumber;\n var lastLineNumber = 0;\n \n var gutterRenderer = session.gutterRenderer || this.$renderer;\n\n var cell = null;\n var index = -1;\n var row = firstRow;\n while (true) {\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = session.getNextFoldLine(row, fold);\n foldStart = fold ? fold.start.row : Infinity;\n }\n if (row > lastRow) {\n while (this.$cells.length > index + 1) {\n cell = this.$cells.pop();\n this.element.removeChild(cell.element);\n }\n break;\n }\n\n cell = this.$cells[++index];\n if (!cell) {\n cell = {element: null, textNode: null, foldWidget: null};\n cell.element = dom.createElement(\"div\");\n cell.textNode = document.createTextNode('');\n cell.element.appendChild(cell.textNode);\n this.element.appendChild(cell.element);\n this.$cells[index] = cell;\n }\n\n var className = \"ace_gutter-cell \";\n if (breakpoints[row])\n className += breakpoints[row];\n if (decorations[row])\n className += decorations[row];\n if (this.$annotations[row])\n className += this.$annotations[row].className;\n if (cell.element.className != className)\n cell.element.className = className;\n\n var height = session.getRowLength(row) * config.lineHeight + \"px\";\n if (height != cell.element.style.height)\n cell.element.style.height = height;\n\n if (foldWidgets) {\n var c = foldWidgets[row];\n if (c == null)\n c = foldWidgets[row] = session.getFoldWidget(row);\n }\n\n if (c) {\n if (!cell.foldWidget) {\n cell.foldWidget = dom.createElement(\"span\");\n cell.element.appendChild(cell.foldWidget);\n }\n var className = \"ace_fold-widget ace_\" + c;\n if (c == \"start\" && row == foldStart && row < fold.end.row)\n className += \" ace_closed\";\n else\n className += \" ace_open\";\n if (cell.foldWidget.className != className)\n cell.foldWidget.className = className;\n\n var height = config.lineHeight + \"px\";\n if (cell.foldWidget.style.height != height)\n cell.foldWidget.style.height = height;\n } else {\n if (cell.foldWidget) {\n cell.element.removeChild(cell.foldWidget);\n cell.foldWidget = null;\n }\n }\n \n var text = lastLineNumber = gutterRenderer\n ? gutterRenderer.getText(session, row)\n : row + firstLineNumber;\n if (text !== cell.textNode.data)\n cell.textNode.data = text;\n\n row++;\n }\n\n this.element.style.height = config.minHeight + \"px\";\n\n if (this.$fixedWidth || session.$useWrapMode)\n lastLineNumber = session.getLength() + firstLineNumber;\n\n var gutterWidth = gutterRenderer \n ? gutterRenderer.getWidth(session, lastLineNumber, config)\n : lastLineNumber.toString().length * config.characterWidth;\n \n var padding = this.$padding || this.$computePadding();\n gutterWidth += padding.left + padding.right;\n if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n this.gutterWidth = gutterWidth;\n this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\n this._emit(\"changeGutterWidth\", gutterWidth);\n }\n };\n\n this.$fixedWidth = false;\n \n this.$showLineNumbers = true;\n this.$renderer = \"\";\n this.setShowLineNumbers = function(show) {\n this.$renderer = !show && {\n getWidth: function() {return \"\";},\n getText: function() {return \"\";}\n };\n };\n \n this.getShowLineNumbers = function() {\n return this.$showLineNumbers;\n };\n \n this.$showFoldWidgets = true;\n this.setShowFoldWidgets = function(show) {\n if (show)\n dom.addCssClass(this.element, \"ace_folding-enabled\");\n else\n dom.removeCssClass(this.element, \"ace_folding-enabled\");\n\n this.$showFoldWidgets = show;\n this.$padding = null;\n };\n \n this.getShowFoldWidgets = function() {\n return this.$showFoldWidgets;\n };\n\n this.$computePadding = function() {\n if (!this.element.firstChild)\n return {left: 0, right: 0};\n var style = dom.computedStyle(this.element.firstChild);\n this.$padding = {};\n this.$padding.left = parseInt(style.paddingLeft) + 1 || 0;\n this.$padding.right = parseInt(style.paddingRight) || 0;\n return this.$padding;\n };\n\n this.getRegion = function(point) {\n var padding = this.$padding || this.$computePadding();\n var rect = this.element.getBoundingClientRect();\n if (point.x < padding.left + rect.left)\n return \"markers\";\n if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n return \"foldWidgets\";\n };\n\n}).call(Gutter.prototype);\n\nexports.Gutter = Gutter;\n\n});\n\nace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\nvar dom = acequire(\"../lib/dom\");\n\nvar Marker = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_marker-layer\";\n parentEl.appendChild(this.element);\n};\n\n(function() {\n\n this.$padding = 0;\n\n this.setPadding = function(padding) {\n this.$padding = padding;\n };\n this.setSession = function(session) {\n this.session = session;\n };\n \n this.setMarkers = function(markers) {\n this.markers = markers;\n };\n\n this.update = function(config) {\n if (!config) return;\n\n this.config = config;\n\n\n var html = [];\n for (var key in this.markers) {\n var marker = this.markers[key];\n\n if (!marker.range) {\n marker.update(html, this, this.session, config);\n continue;\n }\n\n var range = marker.range.clipRows(config.firstRow, config.lastRow);\n if (range.isEmpty()) continue;\n\n range = range.toScreenRange(this.session);\n if (marker.renderer) {\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + (this.session.$bidiHandler.isBidiRow(range.start.row)\n ? this.session.$bidiHandler.getPosLeft(range.start.column)\n : range.start.column * config.characterWidth);\n marker.renderer(html, range, left, top, config);\n } else if (marker.type == \"fullLine\") {\n this.drawFullLineMarker(html, range, marker.clazz, config);\n } else if (marker.type == \"screenLine\") {\n this.drawScreenLineMarker(html, range, marker.clazz, config);\n } else if (range.isMultiLine()) {\n if (marker.type == \"text\")\n this.drawTextMarker(html, range, marker.clazz, config);\n else\n this.drawMultiLineMarker(html, range, marker.clazz, config);\n } else {\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n this.drawBidiSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n } else {\n this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n }\n }\n }\n this.element.innerHTML = html.join(\"\");\n };\n\n this.$getTop = function(row, layerConfig) {\n return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n };\n\n function getBorderClass(tl, tr, br, bl) {\n return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n }\n this.drawTextMarker = function(stringBuilder, range, clazz, layerConfig, extraStyle) {\n var session = this.session;\n var start = range.start.row;\n var end = range.end.row;\n var row = start;\n var prev = 0; \n var curr = 0;\n var next = session.getScreenLastRowColumn(row);\n var clazzModified = null;\n var lineRange = new Range(row, range.start.column, row, curr);\n for (; row <= end; row++) {\n lineRange.start.row = lineRange.end.row = row;\n lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n lineRange.end.column = next;\n prev = curr;\n curr = next;\n next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n clazzModified = clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\n + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end);\n\n if (this.session.$bidiHandler.isBidiRow(row)) {\n this.drawBidiSingleLineMarker(stringBuilder, lineRange, clazzModified,\n layerConfig, row == end ? 0 : 1, extraStyle);\n } else {\n this.drawSingleLineMarker(stringBuilder, lineRange, clazzModified,\n layerConfig, row == end ? 0 : 1, extraStyle);\n }\n }\n };\n this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var padding = this.$padding;\n var height, top, left;\n extraStyle = extraStyle || \"\";\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n var range1 = range.clone();\n range1.end.row = range1.start.row;\n range1.end.column = this.session.getLine(range1.start.row).length;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br1 ace_start\", config, null, extraStyle);\n } else {\n height = config.lineHeight;\n top = this.$getTop(range.start.row, config);\n left = padding + range.start.column * config.characterWidth;\n stringBuilder.push(\n \"
\"\n );\n }\n if (this.session.$bidiHandler.isBidiRow(range.end.row)) {\n var range1 = range.clone();\n range1.start.row = range1.end.row;\n range1.start.column = 0;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br12\", config, null, extraStyle);\n } else {\n var width = range.end.column * config.characterWidth;\n height = config.lineHeight;\n top = this.$getTop(range.end.row, config);\n stringBuilder.push(\n \"
\"\n );\n }\n height = (range.end.row - range.start.row - 1) * config.lineHeight;\n if (height <= 0)\n return;\n top = this.$getTop(range.start.row + 1, config);\n \n var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n\n stringBuilder.push(\n \"
\"\n );\n };\n this.drawSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight;\n var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n\n stringBuilder.push(\n \"
\"\n );\n };\n this.drawBidiSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding;\n var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column);\n\n selections.forEach(function(selection) {\n stringBuilder.push(\n \"
\"\n );\n });\n };\n\n this.drawFullLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n if (range.start.row != range.end.row)\n height += this.$getTop(range.end.row, config) - top;\n\n stringBuilder.push(\n \"
\"\n );\n };\n \n this.drawScreenLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n\n stringBuilder.push(\n \"
\"\n );\n };\n\n}).call(Marker.prototype);\n\nexports.Marker = Marker;\n\n});\n\nace.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, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar dom = acequire(\"../lib/dom\");\nvar lang = acequire(\"../lib/lang\");\nvar useragent = acequire(\"../lib/useragent\");\nvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\n\nvar Text = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_text-layer\";\n parentEl.appendChild(this.element);\n this.$updateEolChar = this.$updateEolChar.bind(this);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.EOF_CHAR = \"\\xB6\";\n this.EOL_CHAR_LF = \"\\xAC\";\n this.EOL_CHAR_CRLF = \"\\xa4\";\n this.EOL_CHAR = this.EOL_CHAR_LF;\n this.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\n this.SPACE_CHAR = \"\\xB7\";\n this.$padding = 0;\n\n this.$updateEolChar = function() {\n var EOL_CHAR = this.session.doc.getNewLineCharacter() == \"\\n\"\n ? this.EOL_CHAR_LF\n : this.EOL_CHAR_CRLF;\n if (this.EOL_CHAR != EOL_CHAR) {\n this.EOL_CHAR = EOL_CHAR;\n return true;\n }\n };\n\n this.setPadding = function(padding) {\n this.$padding = padding;\n this.element.style.padding = \"0 \" + padding + \"px\";\n };\n\n this.getLineHeight = function() {\n return this.$fontMetrics.$characterSize.height || 0;\n };\n\n this.getCharacterWidth = function() {\n return this.$fontMetrics.$characterSize.width || 0;\n };\n \n this.$setFontMetrics = function(measure) {\n this.$fontMetrics = measure;\n this.$fontMetrics.on(\"changeCharacterSize\", function(e) {\n this._signal(\"changeCharacterSize\", e);\n }.bind(this));\n this.$pollSizeChanges();\n };\n\n this.checkForSizeChanges = function() {\n this.$fontMetrics.checkForSizeChanges();\n };\n this.$pollSizeChanges = function() {\n return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n };\n this.setSession = function(session) {\n this.session = session;\n if (session)\n this.$computeTabString();\n };\n\n this.showInvisibles = false;\n this.setShowInvisibles = function(showInvisibles) {\n if (this.showInvisibles == showInvisibles)\n return false;\n\n this.showInvisibles = showInvisibles;\n this.$computeTabString();\n return true;\n };\n\n this.displayIndentGuides = true;\n this.setDisplayIndentGuides = function(display) {\n if (this.displayIndentGuides == display)\n return false;\n\n this.displayIndentGuides = display;\n this.$computeTabString();\n return true;\n };\n\n this.$tabStrings = [];\n this.onChangeTabSize =\n this.$computeTabString = function() {\n var tabSize = this.session.getTabSize();\n this.tabSize = tabSize;\n var tabStr = this.$tabStrings = [0];\n for (var i = 1; i < tabSize + 1; i++) {\n if (this.showInvisibles) {\n tabStr.push(\"\"\n + lang.stringRepeat(this.TAB_CHAR, i)\n + \"\");\n } else {\n tabStr.push(lang.stringRepeat(\" \", i));\n }\n }\n if (this.displayIndentGuides) {\n this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n var className = \"ace_indent-guide\";\n var spaceClass = \"\";\n var tabClass = \"\";\n if (this.showInvisibles) {\n className += \" ace_invisible\";\n spaceClass = \" ace_invisible_space\";\n tabClass = \" ace_invisible_tab\";\n var spaceContent = lang.stringRepeat(this.SPACE_CHAR, this.tabSize);\n var tabContent = lang.stringRepeat(this.TAB_CHAR, this.tabSize);\n } else{\n var spaceContent = lang.stringRepeat(\" \", this.tabSize);\n var tabContent = spaceContent;\n }\n\n this.$tabStrings[\" \"] = \"\" + spaceContent + \"\";\n this.$tabStrings[\"\\t\"] = \"\" + tabContent + \"\";\n }\n };\n\n this.updateLines = function(config, firstRow, lastRow) {\n if (this.config.lastRow != config.lastRow ||\n this.config.firstRow != config.firstRow) {\n this.scrollLines(config);\n }\n this.config = config;\n\n var first = Math.max(firstRow, config.firstRow);\n var last = Math.min(lastRow, config.lastRow);\n\n var lineElements = this.element.childNodes;\n var lineElementsIdx = 0;\n\n for (var row = config.firstRow; row < first; row++) {\n var foldLine = this.session.getFoldLine(row);\n if (foldLine) {\n if (foldLine.containsRow(first)) {\n first = foldLine.start.row;\n break;\n } else {\n row = foldLine.end.row;\n }\n }\n lineElementsIdx ++;\n }\n\n var row = first;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row :Infinity;\n }\n if (row > last)\n break;\n\n var lineElement = lineElements[lineElementsIdx++];\n if (lineElement) {\n var html = [];\n this.$renderLine(\n html, row, !this.$useLineGroups(), row == foldStart ? foldLine : false\n );\n lineElement.style.height = config.lineHeight * this.session.getRowLength(row) + \"px\";\n lineElement.innerHTML = html.join(\"\");\n }\n row++;\n }\n };\n\n this.scrollLines = function(config) {\n var oldConfig = this.config;\n this.config = config;\n\n if (!oldConfig || oldConfig.lastRow < config.firstRow)\n return this.update(config);\n\n if (config.lastRow < oldConfig.firstRow)\n return this.update(config);\n\n var el = this.element;\n if (oldConfig.firstRow < config.firstRow)\n for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--)\n el.removeChild(el.firstChild);\n\n if (oldConfig.lastRow > config.lastRow)\n for (var row=this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row>0; row--)\n el.removeChild(el.lastChild);\n\n if (config.firstRow < oldConfig.firstRow) {\n var fragment = this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1);\n if (el.firstChild)\n el.insertBefore(fragment, el.firstChild);\n else\n el.appendChild(fragment);\n }\n\n if (config.lastRow > oldConfig.lastRow) {\n var fragment = this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow);\n el.appendChild(fragment);\n }\n };\n\n this.$renderLinesFragment = function(config, firstRow, lastRow) {\n var fragment = this.element.ownerDocument.createDocumentFragment();\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n\n var container = dom.createElement(\"div\");\n\n var html = [];\n this.$renderLine(html, row, false, row == foldStart ? foldLine : false);\n container.innerHTML = html.join(\"\");\n if (this.$useLineGroups()) {\n container.className = 'ace_line_group';\n fragment.appendChild(container);\n container.style.height = config.lineHeight * this.session.getRowLength(row) + \"px\";\n\n } else {\n while(container.firstChild)\n fragment.appendChild(container.firstChild);\n }\n\n row++;\n }\n return fragment;\n };\n\n this.update = function(config) {\n this.config = config;\n\n var html = [];\n var firstRow = config.firstRow, lastRow = config.lastRow;\n\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row :Infinity;\n }\n if (row > lastRow)\n break;\n\n if (this.$useLineGroups())\n html.push(\"
\");\n\n this.$renderLine(html, row, false, row == foldStart ? foldLine : false);\n\n if (this.$useLineGroups())\n html.push(\"
\"); // end the line group\n\n row++;\n }\n this.element.innerHTML = html.join(\"\");\n };\n\n this.$textToken = {\n \"text\": true,\n \"rparen\": true,\n \"lparen\": true\n };\n\n this.$renderToken = function(stringBuilder, screenColumn, token, value) {\n var self = this;\n var replaceReg = /\\t|&|<|>|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF\\uFFF9-\\uFFFC])|[\\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]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n var replaceFunc = function(c, a, b, tabIdx, idx4) {\n if (a) {\n return self.showInvisibles\n ? \"\" + lang.stringRepeat(self.SPACE_CHAR, c.length) + \"\"\n : c;\n } else if (c == \"&\") {\n return \"&\";\n } else if (c == \"<\") {\n return \"<\";\n } else if (c == \">\") {\n return \">\";\n } else if (c == \"\\t\") {\n var tabSize = self.session.getScreenTabSize(screenColumn + tabIdx);\n screenColumn += tabSize - 1;\n return self.$tabStrings[tabSize];\n } else if (c == \"\\u3000\") {\n var classToUse = self.showInvisibles ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\n var space = self.showInvisibles ? self.SPACE_CHAR : \"\";\n screenColumn += 1;\n return \"\" + space + \"\";\n } else if (b) {\n return \"\" + self.SPACE_CHAR + \"\";\n } else {\n screenColumn += 1;\n return \"\" + c + \"\";\n }\n };\n\n var output = value.replace(replaceReg, replaceFunc);\n\n if (!this.$textToken[token.type]) {\n var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n var style = \"\";\n if (token.type == \"fold\")\n style = \" style='width:\" + (token.value.length * this.config.characterWidth) + \"px;' \";\n stringBuilder.push(\"\", output, \"\");\n }\n else {\n stringBuilder.push(output);\n }\n return screenColumn + value.length;\n };\n\n this.renderIndentGuide = function(stringBuilder, value, max) {\n var cols = value.search(this.$indentGuideRe);\n if (cols <= 0 || cols >= max)\n return value;\n if (value[0] == \" \") {\n cols -= cols % this.tabSize;\n stringBuilder.push(lang.stringRepeat(this.$tabStrings[\" \"], cols/this.tabSize));\n return value.substr(cols);\n } else if (value[0] == \"\\t\") {\n stringBuilder.push(lang.stringRepeat(this.$tabStrings[\"\\t\"], cols));\n return value.substr(cols);\n }\n return value;\n };\n\n this.$renderWrappedLine = function(stringBuilder, tokens, splits, onlyContents) {\n var chars = 0;\n var split = 0;\n var splitChars = splits[0];\n var screenColumn = 0;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n chars = value.length;\n value = this.renderIndentGuide(stringBuilder, value, splitChars);\n if (!value)\n continue;\n chars -= value.length;\n }\n\n if (chars + value.length < splitChars) {\n screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value);\n chars += value.length;\n } else {\n while (chars + value.length >= splitChars) {\n screenColumn = this.$renderToken(\n stringBuilder, screenColumn,\n token, value.substring(0, splitChars - chars)\n );\n value = value.substring(splitChars - chars);\n chars = splitChars;\n\n if (!onlyContents) {\n stringBuilder.push(\"\",\n \"
\"\n );\n }\n\n stringBuilder.push(lang.stringRepeat(\"\\xa0\", splits.indent));\n\n split ++;\n screenColumn = 0;\n splitChars = splits[split] || Number.MAX_VALUE;\n }\n if (value.length != 0) {\n chars += value.length;\n screenColumn = this.$renderToken(\n stringBuilder, screenColumn, token, value\n );\n }\n }\n }\n };\n\n this.$renderSimpleLine = function(stringBuilder, tokens) {\n var screenColumn = 0;\n var token = tokens[0];\n var value = token.value;\n if (this.displayIndentGuides)\n value = this.renderIndentGuide(stringBuilder, value);\n if (value)\n screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value);\n for (var i = 1; i < tokens.length; i++) {\n token = tokens[i];\n value = token.value;\n screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value);\n }\n };\n this.$renderLine = function(stringBuilder, row, onlyContents, foldLine) {\n if (!foldLine && foldLine != false)\n foldLine = this.session.getFoldLine(row);\n\n if (foldLine)\n var tokens = this.$getFoldLineTokens(row, foldLine);\n else\n var tokens = this.session.getTokens(row);\n\n\n if (!onlyContents) {\n stringBuilder.push(\n \"
\"\n );\n }\n\n if (tokens.length) {\n var splits = this.session.getRowSplitData(row);\n if (splits && splits.length)\n this.$renderWrappedLine(stringBuilder, tokens, splits, onlyContents);\n else\n this.$renderSimpleLine(stringBuilder, tokens);\n }\n\n if (this.showInvisibles) {\n if (foldLine)\n row = foldLine.end.row;\n\n stringBuilder.push(\n \"\",\n row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR,\n \"\"\n );\n }\n if (!onlyContents)\n stringBuilder.push(\"
\");\n };\n\n this.$getFoldLineTokens = function(row, foldLine) {\n var session = this.session;\n var renderTokens = [];\n\n function addTokens(tokens, from, to) {\n var idx = 0, col = 0;\n while ((col + tokens[idx].value.length) < from) {\n col += tokens[idx].value.length;\n idx++;\n\n if (idx == tokens.length)\n return;\n }\n if (col != from) {\n var value = tokens[idx].value.substring(from - col);\n if (value.length > (to - from))\n value = value.substring(0, to - from);\n\n renderTokens.push({\n type: tokens[idx].type,\n value: value\n });\n\n col = from + value.length;\n idx += 1;\n }\n\n while (col < to && idx < tokens.length) {\n var value = tokens[idx].value;\n if (value.length + col > to) {\n renderTokens.push({\n type: tokens[idx].type,\n value: value.substring(0, to - col)\n });\n } else\n renderTokens.push(tokens[idx]);\n col += value.length;\n idx += 1;\n }\n }\n\n var tokens = session.getTokens(row);\n foldLine.walk(function(placeholder, row, column, lastColumn, isNewRow) {\n if (placeholder != null) {\n renderTokens.push({\n type: \"fold\",\n value: placeholder\n });\n } else {\n if (isNewRow)\n tokens = session.getTokens(row);\n\n if (tokens.length)\n addTokens(tokens, lastColumn, column);\n }\n }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n\n return renderTokens;\n };\n\n this.$useLineGroups = function() {\n return this.session.getUseWrapMode();\n };\n\n this.destroy = function() {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.$measureNode)\n this.$measureNode.parentNode.removeChild(this.$measureNode);\n delete this.$measureNode;\n };\n\n}).call(Text.prototype);\n\nexports.Text = Text;\n\n});\n\nace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar dom = acequire(\"../lib/dom\");\nvar isIE8;\n\nvar Cursor = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_cursor-layer\";\n parentEl.appendChild(this.element);\n \n if (isIE8 === undefined)\n isIE8 = !(\"opacity\" in this.element.style);\n\n this.isVisible = false;\n this.isBlinking = true;\n this.blinkInterval = 1000;\n this.smoothBlinking = false;\n\n this.cursors = [];\n this.cursor = this.addCursor();\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.$updateCursors = (isIE8\n ? this.$updateVisibility\n : this.$updateOpacity).bind(this);\n};\n\n(function() {\n \n this.$updateVisibility = function(val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--; )\n cursors[i].style.visibility = val ? \"\" : \"hidden\";\n };\n this.$updateOpacity = function(val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--; )\n cursors[i].style.opacity = val ? \"\" : \"0\";\n };\n \n\n this.$padding = 0;\n this.setPadding = function(padding) {\n this.$padding = padding;\n };\n\n this.setSession = function(session) {\n this.session = session;\n };\n\n this.setBlinking = function(blinking) {\n if (blinking != this.isBlinking){\n this.isBlinking = blinking;\n this.restartTimer();\n }\n };\n\n this.setBlinkInterval = function(blinkInterval) {\n if (blinkInterval != this.blinkInterval){\n this.blinkInterval = blinkInterval;\n this.restartTimer();\n }\n };\n\n this.setSmoothBlinking = function(smoothBlinking) {\n if (smoothBlinking != this.smoothBlinking && !isIE8) {\n this.smoothBlinking = smoothBlinking;\n dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\n this.$updateCursors(true);\n this.$updateCursors = (this.$updateOpacity).bind(this);\n this.restartTimer();\n }\n };\n\n this.addCursor = function() {\n var el = dom.createElement(\"div\");\n el.className = \"ace_cursor\";\n this.element.appendChild(el);\n this.cursors.push(el);\n return el;\n };\n\n this.removeCursor = function() {\n if (this.cursors.length > 1) {\n var el = this.cursors.pop();\n el.parentNode.removeChild(el);\n return el;\n }\n };\n\n this.hideCursor = function() {\n this.isVisible = false;\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n\n this.showCursor = function() {\n this.isVisible = true;\n dom.removeCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n\n this.restartTimer = function() {\n var update = this.$updateCursors;\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n if (this.smoothBlinking) {\n dom.removeCssClass(this.element, \"ace_smooth-blinking\");\n }\n \n update(true);\n\n if (!this.isBlinking || !this.blinkInterval || !this.isVisible)\n return;\n\n if (this.smoothBlinking) {\n setTimeout(function(){\n dom.addCssClass(this.element, \"ace_smooth-blinking\");\n }.bind(this));\n }\n \n var blink = function(){\n this.timeoutId = setTimeout(function() {\n update(false);\n }, 0.6 * this.blinkInterval);\n }.bind(this);\n\n this.intervalId = setInterval(function() {\n update(true);\n blink();\n }, this.blinkInterval);\n\n blink();\n };\n\n this.getPixelPosition = function(position, onScreen) {\n if (!this.config || !this.session)\n return {left : 0, top : 0};\n\n if (!position)\n position = this.session.selection.getCursor();\n var pos = this.session.documentToScreenPosition(position);\n var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : pos.column * this.config.characterWidth);\n\n var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n this.config.lineHeight;\n\n return {left : cursorLeft, top : cursorTop};\n };\n\n this.update = function(config) {\n this.config = config;\n\n var selections = this.session.$selectionMarkers;\n var i = 0, cursorIndex = 0;\n\n if (selections === undefined || selections.length === 0){\n selections = [{cursor: null}];\n }\n\n for (var i = 0, n = selections.length; i < n; i++) {\n var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n if ((pixelPos.top > config.height + config.offset ||\n pixelPos.top < 0) && i > 1) {\n continue;\n }\n\n var style = (this.cursors[cursorIndex++] || this.addCursor()).style;\n \n if (!this.drawCursor) {\n style.left = pixelPos.left + \"px\";\n style.top = pixelPos.top + \"px\";\n style.width = config.characterWidth + \"px\";\n style.height = config.lineHeight + \"px\";\n } else {\n this.drawCursor(style, pixelPos, config, selections[i], this.session);\n }\n }\n while (this.cursors.length > cursorIndex)\n this.removeCursor();\n\n var overwrite = this.session.getOverwrite();\n this.$setOverwrite(overwrite);\n this.$pixelPos = pixelPos;\n this.restartTimer();\n };\n \n this.drawCursor = null;\n\n this.$setOverwrite = function(overwrite) {\n if (overwrite != this.overwrite) {\n this.overwrite = overwrite;\n if (overwrite)\n dom.addCssClass(this.element, \"ace_overwrite-cursors\");\n else\n dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\n }\n };\n\n this.destroy = function() {\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n };\n\n}).call(Cursor.prototype);\n\nexports.Cursor = Cursor;\n\n});\n\nace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar dom = acequire(\"./lib/dom\");\nvar event = acequire(\"./lib/event\");\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar MAX_SCROLL_H = 0x8000;\nvar ScrollBar = function(parent) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_scrollbar ace_scrollbar\" + this.classSuffix;\n\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"ace_scrollbar-inner\";\n this.element.appendChild(this.inner);\n\n parent.appendChild(this.element);\n\n this.setVisible(false);\n this.skipEvent = false;\n\n event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\n event.addListener(this.element, \"mousedown\", event.preventDefault);\n};\n\n(function() {\n oop.implement(this, EventEmitter);\n\n this.setVisible = function(isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n}).call(ScrollBar.prototype);\nvar VScrollBar = function(parent, renderer) {\n ScrollBar.call(this, parent);\n this.scrollTop = 0;\n this.scrollHeight = 0;\n renderer.$scrollbarWidth = \n this.width = dom.scrollbarWidth(parent.ownerDocument);\n this.inner.style.width =\n this.element.style.width = (this.width || 15) + 5 + \"px\";\n this.$minWidth = 0;\n};\n\noop.inherits(VScrollBar, ScrollBar);\n\n(function() {\n\n this.classSuffix = '-v';\n this.onScroll = function() {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n if (this.coeff != 1) {\n var h = this.element.clientHeight / this.scrollHeight;\n this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n }\n this._emit(\"scroll\", {data: this.scrollTop});\n }\n this.skipEvent = false;\n };\n this.getWidth = function() {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n this.setHeight = function(height) {\n this.element.style.height = height + \"px\";\n };\n this.setInnerHeight =\n this.setScrollHeight = function(height) {\n this.scrollHeight = height;\n if (height > MAX_SCROLL_H) {\n this.coeff = MAX_SCROLL_H / height;\n height = MAX_SCROLL_H;\n } else if (this.coeff != 1) {\n this.coeff = 1;\n }\n this.inner.style.height = height + \"px\";\n };\n this.setScrollTop = function(scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n this.scrollTop = scrollTop;\n this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n\n}).call(VScrollBar.prototype);\nvar HScrollBar = function(parent, renderer) {\n ScrollBar.call(this, parent);\n this.scrollLeft = 0;\n this.height = renderer.$scrollbarWidth;\n this.inner.style.height =\n this.element.style.height = (this.height || 15) + 5 + \"px\";\n};\n\noop.inherits(HScrollBar, ScrollBar);\n\n(function() {\n\n this.classSuffix = '-h';\n this.onScroll = function() {\n if (!this.skipEvent) {\n this.scrollLeft = this.element.scrollLeft;\n this._emit(\"scroll\", {data: this.scrollLeft});\n }\n this.skipEvent = false;\n };\n this.getHeight = function() {\n return this.isVisible ? this.height : 0;\n };\n this.setWidth = function(width) {\n this.element.style.width = width + \"px\";\n };\n this.setInnerWidth = function(width) {\n this.inner.style.width = width + \"px\";\n };\n this.setScrollWidth = function(width) {\n this.inner.style.width = width + \"px\";\n };\n this.setScrollLeft = function(scrollLeft) {\n if (this.scrollLeft != scrollLeft) {\n this.skipEvent = true;\n this.scrollLeft = this.element.scrollLeft = scrollLeft;\n }\n };\n\n}).call(HScrollBar.prototype);\n\n\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\n\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n});\n\nace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar event = acequire(\"./lib/event\");\n\n\nvar RenderLoop = function(onRender, win) {\n this.onRender = onRender;\n this.pending = false;\n this.changes = 0;\n this.window = win || window;\n};\n\n(function() {\n\n\n this.schedule = function(change) {\n this.changes = this.changes | change;\n if (!this.pending && this.changes) {\n this.pending = true;\n var _self = this;\n event.nextFrame(function() {\n _self.pending = false;\n var changes;\n while (changes = _self.changes) {\n _self.changes = 0;\n _self.onRender(changes);\n }\n }, this.window);\n }\n };\n\n}).call(RenderLoop.prototype);\n\nexports.RenderLoop = RenderLoop;\n});\n\nace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\nvar oop = acequire(\"../lib/oop\");\nvar dom = acequire(\"../lib/dom\");\nvar lang = acequire(\"../lib/lang\");\nvar useragent = acequire(\"../lib/useragent\");\nvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\n\nvar CHAR_COUNT = 0;\n\nvar FontMetrics = exports.FontMetrics = function(parentEl) {\n this.el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.el.style, true);\n \n this.$main = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$main.style);\n \n this.$measureNode = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$measureNode.style);\n \n \n this.el.appendChild(this.$main);\n this.el.appendChild(this.$measureNode);\n parentEl.appendChild(this.el);\n \n if (!CHAR_COUNT)\n this.$testFractionalRect();\n this.$measureNode.innerHTML = lang.stringRepeat(\"X\", CHAR_COUNT);\n \n this.$characterSize = {width: 0, height: 0};\n this.checkForSizeChanges();\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n \n this.$characterSize = {width: 0, height: 0};\n \n this.$testFractionalRect = function() {\n var el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(el.style);\n el.style.width = \"0.2px\";\n document.documentElement.appendChild(el);\n var w = el.getBoundingClientRect().width;\n if (w > 0 && w < 1)\n CHAR_COUNT = 50;\n else\n CHAR_COUNT = 100;\n el.parentNode.removeChild(el);\n };\n \n this.$setMeasureNodeStyles = function(style, isRoot) {\n style.width = style.height = \"auto\";\n style.left = style.top = \"0px\";\n style.visibility = \"hidden\";\n style.position = \"absolute\";\n style.whiteSpace = \"pre\";\n\n if (useragent.isIE < 8) {\n style[\"font-family\"] = \"inherit\";\n } else {\n style.font = \"inherit\";\n }\n style.overflow = isRoot ? \"hidden\" : \"visible\";\n };\n\n this.checkForSizeChanges = function() {\n var size = this.$measureSizes();\n if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n this.$measureNode.style.fontWeight = \"bold\";\n var boldSize = this.$measureSizes();\n this.$measureNode.style.fontWeight = \"\";\n this.$characterSize = size;\n this.charSizes = Object.create(null);\n this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n this._emit(\"changeCharacterSize\", {data: size});\n }\n };\n\n this.$pollSizeChanges = function() {\n if (this.$pollSizeChangesTimer)\n return this.$pollSizeChangesTimer;\n var self = this;\n return this.$pollSizeChangesTimer = setInterval(function() {\n self.checkForSizeChanges();\n }, 500);\n };\n \n this.setPolling = function(val) {\n if (val) {\n this.$pollSizeChanges();\n } else if (this.$pollSizeChangesTimer) {\n clearInterval(this.$pollSizeChangesTimer);\n this.$pollSizeChangesTimer = 0;\n }\n };\n\n this.$measureSizes = function() {\n if (CHAR_COUNT === 50) {\n var rect = null;\n try { \n rect = this.$measureNode.getBoundingClientRect();\n } catch(e) {\n rect = {width: 0, height:0 };\n }\n var size = {\n height: rect.height,\n width: rect.width / CHAR_COUNT\n };\n } else {\n var size = {\n height: this.$measureNode.clientHeight,\n width: this.$measureNode.clientWidth / CHAR_COUNT\n };\n }\n if (size.width === 0 || size.height === 0)\n return null;\n return size;\n };\n\n this.$measureCharWidth = function(ch) {\n this.$main.innerHTML = lang.stringRepeat(ch, CHAR_COUNT);\n var rect = this.$main.getBoundingClientRect();\n return rect.width / CHAR_COUNT;\n };\n \n this.getCharacterWidth = function(ch) {\n var w = this.charSizes[ch];\n if (w === undefined) {\n w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n }\n return w;\n };\n\n this.destroy = function() {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.el && this.el.parentNode)\n this.el.parentNode.removeChild(this.el);\n };\n\n}).call(FontMetrics.prototype);\n\n});\n\nace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/config\",\"ace/lib/useragent\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar dom = acequire(\"./lib/dom\");\nvar config = acequire(\"./config\");\nvar useragent = acequire(\"./lib/useragent\");\nvar GutterLayer = acequire(\"./layer/gutter\").Gutter;\nvar MarkerLayer = acequire(\"./layer/marker\").Marker;\nvar TextLayer = acequire(\"./layer/text\").Text;\nvar CursorLayer = acequire(\"./layer/cursor\").Cursor;\nvar HScrollBar = acequire(\"./scrollbar\").HScrollBar;\nvar VScrollBar = acequire(\"./scrollbar\").VScrollBar;\nvar RenderLoop = acequire(\"./renderloop\").RenderLoop;\nvar FontMetrics = acequire(\"./layer/font_metrics\").FontMetrics;\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar editorCss = \".ace_editor {\\\nposition: relative;\\\noverflow: hidden;\\\nfont: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\\\ndirection: ltr;\\\ntext-align: left;\\\n-webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\\n}\\\n.ace_scroller {\\\nposition: absolute;\\\noverflow: hidden;\\\ntop: 0;\\\nbottom: 0;\\\nbackground-color: inherit;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\ncursor: text;\\\n}\\\n.ace_content {\\\nposition: absolute;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\nmin-width: 100%;\\\n}\\\n.ace_dragging .ace_scroller:before{\\\nposition: absolute;\\\ntop: 0;\\\nleft: 0;\\\nright: 0;\\\nbottom: 0;\\\ncontent: '';\\\nbackground: rgba(250, 250, 250, 0.01);\\\nz-index: 1000;\\\n}\\\n.ace_dragging.ace_dark .ace_scroller:before{\\\nbackground: rgba(0, 0, 0, 0.01);\\\n}\\\n.ace_selecting, .ace_selecting * {\\\ncursor: text !important;\\\n}\\\n.ace_gutter {\\\nposition: absolute;\\\noverflow : hidden;\\\nwidth: auto;\\\ntop: 0;\\\nbottom: 0;\\\nleft: 0;\\\ncursor: default;\\\nz-index: 4;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\n}\\\n.ace_gutter-active-line {\\\nposition: absolute;\\\nleft: 0;\\\nright: 0;\\\n}\\\n.ace_scroller.ace_scroll-left {\\\nbox-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\\\n}\\\n.ace_gutter-cell {\\\npadding-left: 19px;\\\npadding-right: 6px;\\\nbackground-repeat: no-repeat;\\\n}\\\n.ace_gutter-cell.ace_error {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==\\\");\\\nbackground-repeat: no-repeat;\\\nbackground-position: 2px center;\\\n}\\\n.ace_gutter-cell.ace_warning {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==\\\");\\\nbackground-position: 2px center;\\\n}\\\n.ace_gutter-cell.ace_info {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=\\\");\\\nbackground-position: 2px center;\\\n}\\\n.ace_dark .ace_gutter-cell.ace_info {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_scrollbar {\\\nposition: absolute;\\\nright: 0;\\\nbottom: 0;\\\nz-index: 6;\\\n}\\\n.ace_scrollbar-inner {\\\nposition: absolute;\\\ncursor: text;\\\nleft: 0;\\\ntop: 0;\\\n}\\\n.ace_scrollbar-v{\\\noverflow-x: hidden;\\\noverflow-y: scroll;\\\ntop: 0;\\\n}\\\n.ace_scrollbar-h {\\\noverflow-x: scroll;\\\noverflow-y: hidden;\\\nleft: 0;\\\n}\\\n.ace_print-margin {\\\nposition: absolute;\\\nheight: 100%;\\\n}\\\n.ace_text-input {\\\nposition: absolute;\\\nz-index: 0;\\\nwidth: 0.5em;\\\nheight: 1em;\\\nopacity: 0;\\\nbackground: transparent;\\\n-moz-appearance: none;\\\nappearance: none;\\\nborder: none;\\\nresize: none;\\\noutline: none;\\\noverflow: hidden;\\\nfont: inherit;\\\npadding: 0 1px;\\\nmargin: 0 -1px;\\\ntext-indent: -1em;\\\n-ms-user-select: text;\\\n-moz-user-select: text;\\\n-webkit-user-select: text;\\\nuser-select: text;\\\nwhite-space: pre!important;\\\n}\\\n.ace_text-input.ace_composition {\\\nbackground: inherit;\\\ncolor: inherit;\\\nz-index: 1000;\\\nopacity: 1;\\\ntext-indent: 0;\\\n}\\\n.ace_layer {\\\nz-index: 1;\\\nposition: absolute;\\\noverflow: hidden;\\\nword-wrap: normal;\\\nwhite-space: pre;\\\nheight: 100%;\\\nwidth: 100%;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\npointer-events: none;\\\n}\\\n.ace_gutter-layer {\\\nposition: relative;\\\nwidth: auto;\\\ntext-align: right;\\\npointer-events: auto;\\\n}\\\n.ace_text-layer {\\\nfont: inherit !important;\\\n}\\\n.ace_cjk {\\\ndisplay: inline-block;\\\ntext-align: center;\\\n}\\\n.ace_cursor-layer {\\\nz-index: 4;\\\n}\\\n.ace_cursor {\\\nz-index: 4;\\\nposition: absolute;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\nborder-left: 2px solid;\\\ntransform: translatez(0);\\\n}\\\n.ace_multiselect .ace_cursor {\\\nborder-left-width: 1px;\\\n}\\\n.ace_slim-cursors .ace_cursor {\\\nborder-left-width: 1px;\\\n}\\\n.ace_overwrite-cursors .ace_cursor {\\\nborder-left-width: 0;\\\nborder-bottom: 1px solid;\\\n}\\\n.ace_hidden-cursors .ace_cursor {\\\nopacity: 0.2;\\\n}\\\n.ace_smooth-blinking .ace_cursor {\\\n-webkit-transition: opacity 0.18s;\\\ntransition: opacity 0.18s;\\\n}\\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\\nposition: absolute;\\\nz-index: 3;\\\n}\\\n.ace_marker-layer .ace_selection {\\\nposition: absolute;\\\nz-index: 5;\\\n}\\\n.ace_marker-layer .ace_bracket {\\\nposition: absolute;\\\nz-index: 6;\\\n}\\\n.ace_marker-layer .ace_active-line {\\\nposition: absolute;\\\nz-index: 2;\\\n}\\\n.ace_marker-layer .ace_selected-word {\\\nposition: absolute;\\\nz-index: 4;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\n}\\\n.ace_line .ace_fold {\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\ndisplay: inline-block;\\\nheight: 11px;\\\nmargin-top: -2px;\\\nvertical-align: middle;\\\nbackground-image:\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\\nbackground-repeat: no-repeat, repeat-x;\\\nbackground-position: center center, top left;\\\ncolor: transparent;\\\nborder: 1px solid black;\\\nborder-radius: 2px;\\\ncursor: pointer;\\\npointer-events: auto;\\\n}\\\n.ace_dark .ace_fold {\\\n}\\\n.ace_fold:hover{\\\nbackground-image:\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_tooltip {\\\nbackground-color: #FFF;\\\nbackground-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));\\\nbackground-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\\\nborder: 1px solid gray;\\\nborder-radius: 1px;\\\nbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\\ncolor: black;\\\nmax-width: 100%;\\\npadding: 3px 4px;\\\nposition: fixed;\\\nz-index: 999999;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\ncursor: default;\\\nwhite-space: pre;\\\nword-wrap: break-word;\\\nline-height: normal;\\\nfont-style: normal;\\\nfont-weight: normal;\\\nletter-spacing: normal;\\\npointer-events: none;\\\n}\\\n.ace_folding-enabled > .ace_gutter-cell {\\\npadding-right: 13px;\\\n}\\\n.ace_fold-widget {\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\nmargin: 0 -12px 0 1px;\\\ndisplay: none;\\\nwidth: 11px;\\\nvertical-align: top;\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\\nbackground-repeat: no-repeat;\\\nbackground-position: center;\\\nborder-radius: 3px;\\\nborder: 1px solid transparent;\\\ncursor: pointer;\\\n}\\\n.ace_folding-enabled .ace_fold-widget {\\\ndisplay: inline-block; \\\n}\\\n.ace_fold-widget.ace_end {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_fold-widget.ace_closed {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\\n}\\\n.ace_fold-widget:hover {\\\nborder: 1px solid rgba(0, 0, 0, 0.3);\\\nbackground-color: rgba(255, 255, 255, 0.2);\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\\n}\\\n.ace_fold-widget:active {\\\nborder: 1px solid rgba(0, 0, 0, 0.4);\\\nbackground-color: rgba(0, 0, 0, 0.05);\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\\n}\\\n.ace_dark .ace_fold-widget {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_dark .ace_fold-widget.ace_end {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_dark .ace_fold-widget.ace_closed {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_dark .ace_fold-widget:hover {\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\\nbackground-color: rgba(255, 255, 255, 0.1);\\\n}\\\n.ace_dark .ace_fold-widget:active {\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\\n}\\\n.ace_fold-widget.ace_invalid {\\\nbackground-color: #FFB4B4;\\\nborder-color: #DE5555;\\\n}\\\n.ace_fade-fold-widgets .ace_fold-widget {\\\n-webkit-transition: opacity 0.4s ease 0.05s;\\\ntransition: opacity 0.4s ease 0.05s;\\\nopacity: 0;\\\n}\\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\\n-webkit-transition: opacity 0.05s ease 0.05s;\\\ntransition: opacity 0.05s ease 0.05s;\\\nopacity:1;\\\n}\\\n.ace_underline {\\\ntext-decoration: underline;\\\n}\\\n.ace_bold {\\\nfont-weight: bold;\\\n}\\\n.ace_nobold .ace_bold {\\\nfont-weight: normal;\\\n}\\\n.ace_italic {\\\nfont-style: italic;\\\n}\\\n.ace_error-marker {\\\nbackground-color: rgba(255, 0, 0,0.2);\\\nposition: absolute;\\\nz-index: 9;\\\n}\\\n.ace_highlight-marker {\\\nbackground-color: rgba(255, 255, 0,0.2);\\\nposition: absolute;\\\nz-index: 8;\\\n}\\\n.ace_br1 {border-top-left-radius : 3px;}\\\n.ace_br2 {border-top-right-radius : 3px;}\\\n.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\\\n.ace_br4 {border-bottom-right-radius: 3px;}\\\n.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\\\n.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\\\n.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\\\n.ace_br8 {border-bottom-left-radius : 3px;}\\\n.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\\\n.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\\\n.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_text-input-ios {\\\nposition: absolute !important;\\\ntop: -100000px !important;\\\nleft: -100000px !important;\\\n}\\\n\";\n\ndom.importCssString(editorCss, \"ace_editor.css\");\n\nvar VirtualRenderer = function(container, theme) {\n var _self = this;\n\n this.container = container || dom.createElement(\"div\");\n this.$keepTextAreaAtCursor = !useragent.isOldIE;\n\n dom.addCssClass(this.container, \"ace_editor\");\n\n this.setTheme(theme);\n\n this.$gutter = dom.createElement(\"div\");\n this.$gutter.className = \"ace_gutter\";\n this.container.appendChild(this.$gutter);\n this.$gutter.setAttribute(\"aria-hidden\", true);\n\n this.scroller = dom.createElement(\"div\");\n this.scroller.className = \"ace_scroller\";\n this.container.appendChild(this.scroller);\n\n this.content = dom.createElement(\"div\");\n this.content.className = \"ace_content\";\n this.scroller.appendChild(this.content);\n\n this.$gutterLayer = new GutterLayer(this.$gutter);\n this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\n\n this.$markerBack = new MarkerLayer(this.content);\n\n var textLayer = this.$textLayer = new TextLayer(this.content);\n this.canvas = textLayer.element;\n\n this.$markerFront = new MarkerLayer(this.content);\n\n this.$cursorLayer = new CursorLayer(this.content);\n this.$horizScroll = false;\n this.$vScroll = false;\n\n this.scrollBar = \n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.addEventListener(\"scroll\", function(e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function(e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n\n this.scrollTop = 0;\n this.scrollLeft = 0;\n\n this.cursorPos = {\n row : 0,\n column : 0\n };\n\n this.$fontMetrics = new FontMetrics(this.container);\n this.$textLayer.$setFontMetrics(this.$fontMetrics);\n this.$textLayer.addEventListener(\"changeCharacterSize\", function(e) {\n _self.updateCharacterSize();\n _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n _self._signal(\"changeCharacterSize\", e);\n });\n\n this.$size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n $dirty: true\n };\n\n this.layerConfig = {\n width : 1,\n padding : 0,\n firstRow : 0,\n firstRowScreen: 0,\n lastRow : 0,\n lineHeight : 0,\n characterWidth : 0,\n minHeight : 1,\n maxHeight : 1,\n offset : 0,\n height : 1,\n gutterOffset: 1\n };\n \n this.scrollMargin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n\n this.$loop = new RenderLoop(\n this.$renderChanges.bind(this),\n this.container.ownerDocument.defaultView\n );\n this.$loop.schedule(this.CHANGE_FULL);\n\n this.updateCharacterSize();\n this.setPadding(4);\n config.resetOptions(this);\n config._emit(\"renderer\", this);\n};\n\n(function() {\n\n this.CHANGE_CURSOR = 1;\n this.CHANGE_MARKER = 2;\n this.CHANGE_GUTTER = 4;\n this.CHANGE_SCROLL = 8;\n this.CHANGE_LINES = 16;\n this.CHANGE_TEXT = 32;\n this.CHANGE_SIZE = 64;\n this.CHANGE_MARKER_BACK = 128;\n this.CHANGE_MARKER_FRONT = 256;\n this.CHANGE_FULL = 512;\n this.CHANGE_H_SCROLL = 1024;\n\n oop.implement(this, EventEmitter);\n\n this.updateCharacterSize = function() {\n if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\n }\n\n this.layerConfig.characterWidth =\n this.characterWidth = this.$textLayer.getCharacterWidth();\n this.layerConfig.lineHeight =\n this.lineHeight = this.$textLayer.getLineHeight();\n this.$updatePrintMargin();\n };\n this.setSession = function(session) {\n if (this.session)\n this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\n \n this.session = session;\n if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n session.setScrollTop(-this.scrollMargin.top);\n\n this.$cursorLayer.setSession(session);\n this.$markerBack.setSession(session);\n this.$markerFront.setSession(session);\n this.$gutterLayer.setSession(session);\n this.$textLayer.setSession(session);\n if (!session)\n return;\n \n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n \n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode();\n this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\n };\n this.updateLines = function(firstRow, lastRow, force) {\n if (lastRow === undefined)\n lastRow = Infinity;\n\n if (!this.$changedLines) {\n this.$changedLines = {\n firstRow: firstRow,\n lastRow: lastRow\n };\n }\n else {\n if (this.$changedLines.firstRow > firstRow)\n this.$changedLines.firstRow = firstRow;\n\n if (this.$changedLines.lastRow < lastRow)\n this.$changedLines.lastRow = lastRow;\n }\n if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n if (force)\n this.$changedLines.lastRow = this.layerConfig.lastRow;\n else\n return;\n }\n if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n return;\n this.$loop.schedule(this.CHANGE_LINES);\n };\n\n this.onChangeNewLineMode = function() {\n this.$loop.schedule(this.CHANGE_TEXT);\n this.$textLayer.$updateEolChar();\n this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);\n };\n \n this.onChangeTabSize = function() {\n this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n this.$textLayer.onChangeTabSize();\n };\n this.updateText = function() {\n this.$loop.schedule(this.CHANGE_TEXT);\n };\n this.updateFull = function(force) {\n if (force)\n this.$renderChanges(this.CHANGE_FULL, true);\n else\n this.$loop.schedule(this.CHANGE_FULL);\n };\n this.updateFontSize = function() {\n this.$textLayer.checkForSizeChanges();\n };\n\n this.$changes = 0;\n this.$updateSizeAsync = function() {\n if (this.$loop.pending)\n this.$size.$dirty = true;\n else\n this.onResize();\n };\n this.onResize = function(force, gutterWidth, width, height) {\n if (this.resizing > 2)\n return;\n else if (this.resizing > 0)\n this.resizing++;\n else\n this.resizing = force ? 1 : 0;\n var el = this.container;\n if (!height)\n height = el.clientHeight || el.scrollHeight;\n if (!width)\n width = el.clientWidth || el.scrollWidth;\n var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n\n \n if (!this.$size.scrollerHeight || (!width && !height))\n return this.resizing = 0;\n\n if (force)\n this.$gutterLayer.$padding = null;\n\n if (force)\n this.$renderChanges(changes | this.$changes, true);\n else\n this.$loop.schedule(changes | this.$changes);\n\n if (this.resizing)\n this.resizing = 0;\n this.scrollBarV.scrollLeft = this.scrollBarV.scrollTop = null;\n };\n \n this.$updateCachedSize = function(force, gutterWidth, width, height) {\n height -= (this.$extraHeight || 0);\n var changes = 0;\n var size = this.$size;\n var oldSize = {\n width: size.width,\n height: size.height,\n scrollerHeight: size.scrollerHeight,\n scrollerWidth: size.scrollerWidth\n };\n if (height && (force || size.height != height)) {\n size.height = height;\n changes |= this.CHANGE_SIZE;\n\n size.scrollerHeight = size.height;\n if (this.$horizScroll)\n size.scrollerHeight -= this.scrollBarH.getHeight();\n this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\n\n changes = changes | this.CHANGE_SCROLL;\n }\n\n if (width && (force || size.width != width)) {\n changes |= this.CHANGE_SIZE;\n size.width = width;\n \n if (gutterWidth == null)\n gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n \n this.gutterWidth = gutterWidth;\n \n this.scrollBarH.element.style.left = \n this.scroller.style.left = gutterWidth + \"px\";\n size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth()); \n \n this.scrollBarH.element.style.right = \n this.scroller.style.right = this.scrollBarV.getWidth() + \"px\";\n this.scroller.style.bottom = this.scrollBarH.getHeight() + \"px\";\n\n if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force)\n changes |= this.CHANGE_FULL;\n }\n \n size.$dirty = !width || !height;\n\n if (changes)\n this._signal(\"resize\", oldSize);\n\n return changes;\n };\n\n this.onGutterResize = function() {\n var gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n if (gutterWidth != this.gutterWidth)\n this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n\n if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n this.$loop.schedule(this.CHANGE_FULL);\n } else if (this.$size.$dirty) {\n this.$loop.schedule(this.CHANGE_FULL);\n } else {\n this.$computeLayerConfig();\n this.$loop.schedule(this.CHANGE_MARKER);\n }\n };\n this.adjustWrapLimit = function() {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth);\n return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n };\n this.setAnimatedScroll = function(shouldAnimate){\n this.setOption(\"animatedScroll\", shouldAnimate);\n };\n this.getAnimatedScroll = function() {\n return this.$animatedScroll;\n };\n this.setShowInvisibles = function(showInvisibles) {\n this.setOption(\"showInvisibles\", showInvisibles);\n this.session.$bidiHandler.setShowInvisibles(showInvisibles);\n };\n this.getShowInvisibles = function() {\n return this.getOption(\"showInvisibles\");\n };\n this.getDisplayIndentGuides = function() {\n return this.getOption(\"displayIndentGuides\");\n };\n\n this.setDisplayIndentGuides = function(display) {\n this.setOption(\"displayIndentGuides\", display);\n };\n this.setShowPrintMargin = function(showPrintMargin) {\n this.setOption(\"showPrintMargin\", showPrintMargin);\n };\n this.getShowPrintMargin = function() {\n return this.getOption(\"showPrintMargin\");\n };\n this.setPrintMarginColumn = function(showPrintMargin) {\n this.setOption(\"printMarginColumn\", showPrintMargin);\n };\n this.getPrintMarginColumn = function() {\n return this.getOption(\"printMarginColumn\");\n };\n this.getShowGutter = function(){\n return this.getOption(\"showGutter\");\n };\n this.setShowGutter = function(show){\n return this.setOption(\"showGutter\", show);\n };\n\n this.getFadeFoldWidgets = function(){\n return this.getOption(\"fadeFoldWidgets\");\n };\n\n this.setFadeFoldWidgets = function(show) {\n this.setOption(\"fadeFoldWidgets\", show);\n };\n\n this.setHighlightGutterLine = function(shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n\n this.getHighlightGutterLine = function() {\n return this.getOption(\"highlightGutterLine\");\n };\n\n this.$updateGutterLineHighlight = function() {\n var pos = this.$cursorLayer.$pixelPos;\n var height = this.layerConfig.lineHeight;\n if (this.session.getUseWrapMode()) {\n var cursor = this.session.selection.getCursor();\n cursor.column = 0;\n pos = this.$cursorLayer.getPixelPosition(cursor, true);\n height *= this.session.getRowLength(cursor.row);\n }\n this.$gutterLineHighlight.style.top = pos.top - this.layerConfig.offset + \"px\";\n this.$gutterLineHighlight.style.height = height + \"px\";\n };\n\n this.$updatePrintMargin = function() {\n if (!this.$showPrintMargin && !this.$printMarginEl)\n return;\n\n if (!this.$printMarginEl) {\n var containerEl = dom.createElement(\"div\");\n containerEl.className = \"ace_layer ace_print-margin-layer\";\n this.$printMarginEl = dom.createElement(\"div\");\n this.$printMarginEl.className = \"ace_print-margin\";\n containerEl.appendChild(this.$printMarginEl);\n this.content.insertBefore(containerEl, this.content.firstChild);\n }\n\n var style = this.$printMarginEl.style;\n style.left = ((this.characterWidth * this.$printMarginColumn) + this.$padding) + \"px\";\n style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\n \n if (this.session && this.session.$wrap == -1)\n this.adjustWrapLimit();\n };\n this.getContainerElement = function() {\n return this.container;\n };\n this.getMouseEventTarget = function() {\n return this.scroller;\n };\n this.getTextAreaContainer = function() {\n return this.container;\n };\n this.$moveTextAreaToCursor = function() {\n if (!this.$keepTextAreaAtCursor)\n return;\n var config = this.layerConfig;\n var posTop = this.$cursorLayer.$pixelPos.top;\n var posLeft = this.$cursorLayer.$pixelPos.left;\n posTop -= config.offset;\n\n var style = this.textarea.style;\n var h = this.lineHeight;\n if (posTop < 0 || posTop > config.height - h) {\n style.top = style.left = \"0\";\n return;\n }\n\n var w = this.characterWidth;\n if (this.$composition) {\n var val = this.textarea.value.replace(/^\\x01+/, \"\");\n w *= (this.session.$getStringScreenWidth(val)[0]+2);\n h += 2;\n }\n posLeft -= this.scrollLeft;\n if (posLeft > this.$size.scrollerWidth - w)\n posLeft = this.$size.scrollerWidth - w;\n\n posLeft += this.gutterWidth;\n style.height = h + \"px\";\n style.width = w + \"px\";\n style.left = Math.min(posLeft, this.$size.scrollerWidth - w) + \"px\";\n style.top = Math.min(posTop, this.$size.height - h) + \"px\";\n };\n this.getFirstVisibleRow = function() {\n return this.layerConfig.firstRow;\n };\n this.getFirstFullyVisibleRow = function() {\n return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n };\n this.getLastFullyVisibleRow = function() {\n var config = this.layerConfig;\n var lastRow = config.lastRow;\n var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\n if (top - this.session.getScrollTop() > config.height - config.lineHeight)\n return lastRow - 1;\n return lastRow;\n };\n this.getLastVisibleRow = function() {\n return this.layerConfig.lastRow;\n };\n\n this.$padding = null;\n this.setPadding = function(padding) {\n this.$padding = padding;\n this.$textLayer.setPadding(padding);\n this.$cursorLayer.setPadding(padding);\n this.$markerFront.setPadding(padding);\n this.$markerBack.setPadding(padding);\n this.$loop.schedule(this.CHANGE_FULL);\n this.$updatePrintMargin();\n };\n \n this.setScrollMargin = function(top, bottom, left, right) {\n var sm = this.scrollMargin;\n sm.top = top|0;\n sm.bottom = bottom|0;\n sm.right = right|0;\n sm.left = left|0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n if (sm.top && this.scrollTop <= 0 && this.session)\n this.session.setScrollTop(-sm.top);\n this.updateFull();\n };\n this.getHScrollBarAlwaysVisible = function() {\n return this.$hScrollBarAlwaysVisible;\n };\n this.setHScrollBarAlwaysVisible = function(alwaysVisible) {\n this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\n };\n this.getVScrollBarAlwaysVisible = function() {\n return this.$vScrollBarAlwaysVisible;\n };\n this.setVScrollBarAlwaysVisible = function(alwaysVisible) {\n this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\n };\n\n this.$updateScrollBarV = function() {\n var scrollHeight = this.layerConfig.maxHeight;\n var scrollerHeight = this.$size.scrollerHeight;\n if (!this.$maxLines && this.$scrollPastEnd) {\n scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n if (this.scrollTop > scrollHeight - scrollerHeight) {\n scrollHeight = this.scrollTop + scrollerHeight;\n this.scrollBarV.scrollTop = null;\n }\n }\n this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n };\n this.$updateScrollBarH = function() {\n this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n };\n \n this.$frozen = false;\n this.freeze = function() {\n this.$frozen = true;\n };\n \n this.unfreeze = function() {\n this.$frozen = false;\n };\n\n this.$renderChanges = function(changes, force) {\n if (this.$changes) {\n changes |= this.$changes;\n this.$changes = 0;\n }\n if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n this.$changes |= changes;\n return; \n } \n if (this.$size.$dirty) {\n this.$changes |= changes;\n return this.onResize(true);\n }\n if (!this.lineHeight) {\n this.$textLayer.checkForSizeChanges();\n }\n \n this._signal(\"beforeRender\");\n\n if (this.session && this.session.$bidiHandler)\n this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);\n\n var config = this.layerConfig;\n if (changes & this.CHANGE_FULL ||\n changes & this.CHANGE_SIZE ||\n changes & this.CHANGE_TEXT ||\n changes & this.CHANGE_LINES ||\n changes & this.CHANGE_SCROLL ||\n changes & this.CHANGE_H_SCROLL\n ) {\n changes |= this.$computeLayerConfig();\n if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n var st = this.scrollTop + (config.firstRow - this.layerConfig.firstRow) * this.lineHeight;\n if (st > 0) {\n this.scrollTop = st;\n changes = changes | this.CHANGE_SCROLL;\n changes |= this.$computeLayerConfig();\n }\n }\n config = this.layerConfig;\n this.$updateScrollBarV();\n if (changes & this.CHANGE_H_SCROLL)\n this.$updateScrollBarH();\n this.$gutterLayer.element.style.marginTop = (-config.offset) + \"px\";\n this.content.style.marginTop = (-config.offset) + \"px\";\n this.content.style.width = config.width + 2 * this.$padding + \"px\";\n this.content.style.height = config.minHeight + \"px\";\n }\n if (changes & this.CHANGE_H_SCROLL) {\n this.content.style.marginLeft = -this.scrollLeft + \"px\";\n this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller\" : \"ace_scroller ace_scroll-left\";\n }\n if (changes & this.CHANGE_FULL) {\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this.$highlightGutterLine && this.$updateGutterLineHighlight();\n this._signal(\"afterRender\");\n return;\n }\n if (changes & this.CHANGE_SCROLL) {\n if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n this.$textLayer.update(config);\n else\n this.$textLayer.scrollLines(config);\n\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$highlightGutterLine && this.$updateGutterLineHighlight();\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\");\n return;\n }\n\n if (changes & this.CHANGE_TEXT) {\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_LINES) {\n if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n }\n\n if (changes & this.CHANGE_CURSOR) {\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this.$highlightGutterLine && this.$updateGutterLineHighlight();\n }\n\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n this.$markerFront.update(config);\n }\n\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n this.$markerBack.update(config);\n }\n\n this._signal(\"afterRender\");\n };\n\n \n this.$autosize = function() {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n var desiredHeight = Math.min(maxHeight,\n Math.max((this.$minLines || 1) * this.lineHeight, height)\n ) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n desiredHeight = this.$maxPixelHeight;\n var vScroll = height > maxHeight;\n \n if (desiredHeight != this.desiredHeight ||\n this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n if (vScroll != this.$vScroll) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n \n var w = this.container.clientWidth;\n this.container.style.height = desiredHeight + \"px\";\n this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n this.desiredHeight = desiredHeight;\n \n this._signal(\"autosize\");\n }\n };\n \n this.$computeLayerConfig = function() {\n var session = this.session;\n var size = this.$size;\n \n var hideScrollbars = size.height <= 2 * this.lineHeight;\n var screenLines = this.session.getScreenLength();\n var maxHeight = screenLines * this.lineHeight;\n\n var longestLine = this.$getLongestLine();\n \n var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n\n var hScrollChanged = this.$horizScroll !== horizScroll;\n if (hScrollChanged) {\n this.$horizScroll = horizScroll;\n this.scrollBarH.setVisible(horizScroll);\n }\n var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n if (this.$maxLines && this.lineHeight > 1)\n this.$autosize();\n\n var offset = this.scrollTop % this.lineHeight;\n var minHeight = size.scrollerHeight + this.lineHeight;\n \n var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n : 0;\n maxHeight += scrollPastEnd;\n \n var sm = this.scrollMargin;\n this.session.setScrollTop(Math.max(-sm.top,\n Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n\n this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, \n longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n \n var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n var vScrollChanged = vScrollBefore !== vScroll;\n if (vScrollChanged) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n\n var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n var lastRow = firstRow + lineCount;\n var firstRowScreen, firstRowHeight;\n var lineHeight = this.lineHeight;\n firstRow = session.screenToDocumentRow(firstRow, 0);\n var foldLine = session.getFoldLine(firstRow);\n if (foldLine) {\n firstRow = foldLine.start.row;\n }\n\n firstRowScreen = session.documentToScreenRow(firstRow, 0);\n firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n\n lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n firstRowHeight;\n\n offset = this.scrollTop - firstRowScreen * lineHeight;\n\n var changes = 0;\n if (this.layerConfig.width != longestLine) \n changes = this.CHANGE_H_SCROLL;\n if (hScrollChanged || vScrollChanged) {\n changes = this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n this._signal(\"scrollbarVisibilityChanged\");\n if (vScrollChanged)\n longestLine = this.$getLongestLine();\n }\n \n this.layerConfig = {\n width : longestLine,\n padding : this.$padding,\n firstRow : firstRow,\n firstRowScreen: firstRowScreen,\n lastRow : lastRow,\n lineHeight : lineHeight,\n characterWidth : this.characterWidth,\n minHeight : minHeight,\n maxHeight : maxHeight,\n offset : offset,\n gutterOffset : lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height : this.$size.scrollerHeight\n };\n\n return changes;\n };\n\n this.$updateLines = function() {\n if (!this.$changedLines) return;\n var firstRow = this.$changedLines.firstRow;\n var lastRow = this.$changedLines.lastRow;\n this.$changedLines = null;\n\n var layerConfig = this.layerConfig;\n\n if (firstRow > layerConfig.lastRow + 1) { return; }\n if (lastRow < layerConfig.firstRow) { return; }\n if (lastRow === Infinity) {\n if (this.$showGutter)\n this.$gutterLayer.update(layerConfig);\n this.$textLayer.update(layerConfig);\n return;\n }\n this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n return true;\n };\n\n this.$getLongestLine = function() {\n var charCount = this.session.getScreenWidth();\n if (this.showInvisibles && !this.session.$useWrapMode)\n charCount += 1;\n\n return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n };\n this.updateFrontMarkers = function() {\n this.$markerFront.setMarkers(this.session.getMarkers(true));\n this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n };\n this.updateBackMarkers = function() {\n this.$markerBack.setMarkers(this.session.getMarkers());\n this.$loop.schedule(this.CHANGE_MARKER_BACK);\n };\n this.addGutterDecoration = function(row, className){\n this.$gutterLayer.addGutterDecoration(row, className);\n };\n this.removeGutterDecoration = function(row, className){\n this.$gutterLayer.removeGutterDecoration(row, className);\n };\n this.updateBreakpoints = function(rows) {\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n this.setAnnotations = function(annotations) {\n this.$gutterLayer.setAnnotations(annotations);\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n this.updateCursor = function() {\n this.$loop.schedule(this.CHANGE_CURSOR);\n };\n this.hideCursor = function() {\n this.$cursorLayer.hideCursor();\n };\n this.showCursor = function() {\n this.$cursorLayer.showCursor();\n };\n\n this.scrollSelectionIntoView = function(anchor, lead, offset) {\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n };\n this.scrollCursorIntoView = function(cursor, offset, $viewMargin) {\n if (this.$size.scrollerHeight === 0)\n return;\n\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n\n var left = pos.left;\n var top = pos.top;\n \n var topMargin = $viewMargin && $viewMargin.top || 0;\n var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n \n var scrollTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n \n if (scrollTop + topMargin > top) {\n if (offset && scrollTop + topMargin > top + this.lineHeight)\n top -= offset * this.$size.scrollerHeight;\n if (top === 0)\n top = -this.scrollMargin.top;\n this.session.setScrollTop(top);\n } else if (scrollTop + this.$size.scrollerHeight - bottomMargin < top + this.lineHeight) {\n if (offset && scrollTop + this.$size.scrollerHeight - bottomMargin < top - this.lineHeight)\n top += offset * this.$size.scrollerHeight;\n this.session.setScrollTop(top + this.lineHeight - this.$size.scrollerHeight);\n }\n\n var scrollLeft = this.scrollLeft;\n\n if (scrollLeft > left) {\n if (left < this.$padding + 2 * this.layerConfig.characterWidth)\n left = -this.scrollMargin.left;\n this.session.setScrollLeft(left);\n } else if (scrollLeft + this.$size.scrollerWidth < left + this.characterWidth) {\n this.session.setScrollLeft(Math.round(left + this.characterWidth - this.$size.scrollerWidth));\n } else if (scrollLeft <= this.$padding && left - scrollLeft < this.characterWidth) {\n this.session.setScrollLeft(0);\n }\n };\n this.getScrollTop = function() {\n return this.session.getScrollTop();\n };\n this.getScrollLeft = function() {\n return this.session.getScrollLeft();\n };\n this.getScrollTopRow = function() {\n return this.scrollTop / this.lineHeight;\n };\n this.getScrollBottomRow = function() {\n return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n };\n this.scrollToRow = function(row) {\n this.session.setScrollTop(row * this.lineHeight);\n };\n\n this.alignCursor = function(cursor, alignment) {\n if (typeof cursor == \"number\")\n cursor = {row: cursor, column: 0};\n\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var h = this.$size.scrollerHeight - this.lineHeight;\n var offset = pos.top - h * (alignment || 0);\n\n this.session.setScrollTop(offset);\n return offset;\n };\n\n this.STEPS = 8;\n this.$calcSteps = function(fromValue, toValue){\n var i = 0;\n var l = this.STEPS;\n var steps = [];\n\n var func = function(t, x_min, dx) {\n return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n };\n\n for (i = 0; i < l; ++i)\n steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n\n return steps;\n };\n this.scrollToLine = function(line, center, animate, callback) {\n var pos = this.$cursorLayer.getPixelPosition({row: line, column: 0});\n var offset = pos.top;\n if (center)\n offset -= this.$size.scrollerHeight / 2;\n\n var initialScroll = this.scrollTop;\n this.session.setScrollTop(offset);\n if (animate !== false)\n this.animateScrolling(initialScroll, callback);\n };\n\n this.animateScrolling = function(fromValue, callback) {\n var toValue = this.scrollTop;\n if (!this.$animatedScroll)\n return;\n var _self = this;\n \n if (fromValue == toValue)\n return;\n \n if (this.$scrollAnimation) {\n var oldSteps = this.$scrollAnimation.steps;\n if (oldSteps.length) {\n fromValue = oldSteps[0];\n if (fromValue == toValue)\n return;\n }\n }\n \n var steps = _self.$calcSteps(fromValue, toValue);\n this.$scrollAnimation = {from: fromValue, to: toValue, steps: steps};\n\n clearInterval(this.$timer);\n\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n this.$timer = setInterval(function() {\n if (steps.length) {\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n } else if (toValue != null) {\n _self.session.$scrollTop = -1;\n _self.session.setScrollTop(toValue);\n toValue = null;\n } else {\n _self.$timer = clearInterval(_self.$timer);\n _self.$scrollAnimation = null;\n callback && callback();\n }\n }, 10);\n };\n this.scrollToY = function(scrollTop) {\n if (this.scrollTop !== scrollTop) {\n this.$loop.schedule(this.CHANGE_SCROLL);\n this.scrollTop = scrollTop;\n }\n };\n this.scrollToX = function(scrollLeft) {\n if (this.scrollLeft !== scrollLeft)\n this.scrollLeft = scrollLeft;\n this.$loop.schedule(this.CHANGE_H_SCROLL);\n };\n this.scrollTo = function(x, y) {\n this.session.setScrollTop(y);\n this.session.setScrollLeft(y);\n };\n this.scrollBy = function(deltaX, deltaY) {\n deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n };\n this.isScrollableBy = function(deltaX, deltaY) {\n if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n return true;\n if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n return true;\n if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n return true;\n if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n - this.layerConfig.width < -1 + this.scrollMargin.right)\n return true;\n };\n\n this.pixelToScreenCoordinates = function(x, y) {\n var canvasPos = this.scroller.getBoundingClientRect();\n\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n var col = Math.round(offset);\n\n return {row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX};\n };\n\n this.screenToTextCoordinates = function(x, y) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n\n var col = Math.round(offsetX / this.characterWidth);\n\n var row = (y + this.scrollTop - canvasPos.top) / this.lineHeight;\n\n return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX);\n };\n this.textToScreenCoordinates = function(row, column) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var pos = this.session.documentToScreenPosition(row, column);\n\n var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : Math.round(pos.column * this.characterWidth));\n\n var y = pos.row * this.lineHeight;\n\n return {\n pageX: canvasPos.left + x - this.scrollLeft,\n pageY: canvasPos.top + y - this.scrollTop\n };\n };\n this.visualizeFocus = function() {\n dom.addCssClass(this.container, \"ace_focus\");\n };\n this.visualizeBlur = function() {\n dom.removeCssClass(this.container, \"ace_focus\");\n };\n this.showComposition = function(position) {\n if (!this.$composition)\n this.$composition = {\n keepTextAreaAtCursor: this.$keepTextAreaAtCursor,\n cssText: this.textarea.style.cssText\n };\n\n this.$keepTextAreaAtCursor = true;\n dom.addCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = \"\";\n this.$moveTextAreaToCursor();\n };\n this.setCompositionText = function(text) {\n this.$moveTextAreaToCursor();\n };\n this.hideComposition = function() {\n if (!this.$composition)\n return;\n\n dom.removeCssClass(this.textarea, \"ace_composition\");\n this.$keepTextAreaAtCursor = this.$composition.keepTextAreaAtCursor;\n this.textarea.style.cssText = this.$composition.cssText;\n this.$composition = null;\n };\n this.setTheme = function(theme, cb) {\n var _self = this;\n this.$themeId = theme;\n _self._dispatchEvent('themeChange',{theme:theme});\n\n if (!theme || typeof theme == \"string\") {\n var moduleName = theme || this.$options.theme.initialValue;\n config.loadModule([\"theme\", moduleName], afterLoad);\n } else {\n afterLoad(theme);\n }\n\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n if (!module || !module.cssClass)\n throw new Error(\"couldn't load module \" + theme + \" or it didn't call define\");\n dom.importCssString(\n module.cssText,\n module.cssClass,\n _self.container.ownerDocument\n );\n\n if (_self.theme)\n dom.removeCssClass(_self.container, _self.theme.cssClass);\n\n var padding = \"padding\" in module ? module.padding \n : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\n if (_self.$padding && padding != _self.$padding)\n _self.setPadding(padding);\n _self.$theme = module.cssClass;\n\n _self.theme = module;\n dom.addCssClass(_self.container, module.cssClass);\n dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\n if (_self.$size) {\n _self.$size.width = 0;\n _self.$updateSizeAsync();\n }\n\n _self._dispatchEvent('themeLoaded', {theme:module});\n cb && cb();\n }\n };\n this.getTheme = function() {\n return this.$themeId;\n };\n this.setStyle = function(style, include) {\n dom.setCssClass(this.container, style, include !== false);\n };\n this.unsetStyle = function(style) {\n dom.removeCssClass(this.container, style);\n };\n \n this.setCursorStyle = function(style) {\n if (this.scroller.style.cursor != style)\n this.scroller.style.cursor = style;\n };\n this.setMouseCursor = function(cursorStyle) {\n this.scroller.style.cursor = cursorStyle;\n };\n this.destroy = function() {\n this.$textLayer.destroy();\n this.$cursorLayer.destroy();\n };\n\n}).call(VirtualRenderer.prototype);\n\n\nconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\n animatedScroll: {initialValue: false},\n showInvisibles: {\n set: function(value) {\n if (this.$textLayer.setShowInvisibles(value))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: false\n },\n showPrintMargin: {\n set: function() { this.$updatePrintMargin(); },\n initialValue: true\n },\n printMarginColumn: {\n set: function() { this.$updatePrintMargin(); },\n initialValue: 80\n },\n printMargin: {\n set: function(val) {\n if (typeof val == \"number\")\n this.$printMarginColumn = val;\n this.$showPrintMargin = !!val;\n this.$updatePrintMargin();\n },\n get: function() {\n return this.$showPrintMargin && this.$printMarginColumn; \n }\n },\n showGutter: {\n set: function(show){\n this.$gutter.style.display = show ? \"block\" : \"none\";\n this.$loop.schedule(this.CHANGE_FULL);\n this.onGutterResize();\n },\n initialValue: true\n },\n fadeFoldWidgets: {\n set: function(show) {\n dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\n },\n initialValue: false\n },\n showFoldWidgets: {\n set: function(show) {this.$gutterLayer.setShowFoldWidgets(show);},\n initialValue: true\n },\n showLineNumbers: {\n set: function(show) {\n this.$gutterLayer.setShowLineNumbers(show);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n displayIndentGuides: {\n set: function(show) {\n if (this.$textLayer.setDisplayIndentGuides(show))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: true\n },\n highlightGutterLine: {\n set: function(shouldHighlight) {\n if (!this.$gutterLineHighlight) {\n this.$gutterLineHighlight = dom.createElement(\"div\");\n this.$gutterLineHighlight.className = \"ace_gutter-active-line\";\n this.$gutter.appendChild(this.$gutterLineHighlight);\n return;\n }\n\n this.$gutterLineHighlight.style.display = shouldHighlight ? \"\" : \"none\";\n if (this.$cursorLayer.$pixelPos)\n this.$updateGutterLineHighlight();\n },\n initialValue: false,\n value: true\n },\n hScrollBarAlwaysVisible: {\n set: function(val) {\n if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n vScrollBarAlwaysVisible: {\n set: function(val) {\n if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n fontSize: {\n set: function(size) {\n if (typeof size == \"number\")\n size = size + \"px\";\n this.container.style.fontSize = size;\n this.updateFontSize();\n },\n initialValue: 12\n },\n fontFamily: {\n set: function(name) {\n this.container.style.fontFamily = name;\n this.updateFontSize();\n }\n },\n maxLines: {\n set: function(val) {\n this.updateFull();\n }\n },\n minLines: {\n set: function(val) {\n this.updateFull();\n }\n },\n maxPixelHeight: {\n set: function(val) {\n this.updateFull();\n },\n initialValue: 0\n },\n scrollPastEnd: {\n set: function(val) {\n val = +val || 0;\n if (this.$scrollPastEnd == val)\n return;\n this.$scrollPastEnd = val;\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: 0,\n handlesSet: true\n },\n fixedWidthGutter: {\n set: function(val) {\n this.$gutterLayer.$fixedWidth = !!val;\n this.$loop.schedule(this.CHANGE_GUTTER);\n }\n },\n theme: {\n set: function(val) { this.setTheme(val); },\n get: function() { return this.$themeId || this.theme; },\n initialValue: \"./theme/textmate\",\n handlesSet: true\n }\n});\n\nexports.VirtualRenderer = VirtualRenderer;\n});\n\nace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar net = acequire(\"../lib/net\");\nvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\nvar config = acequire(\"../config\");\n\nfunction $workerBlob(workerUrl, mod) {\n var script = mod.src;\"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\n try {\n return new Blob([script], {\"type\": \"application/javascript\"});\n } catch (e) { // Backwards-compatibility\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n var blobBuilder = new BlobBuilder();\n blobBuilder.append(script);\n return blobBuilder.getBlob(\"application/javascript\");\n }\n}\n\nfunction createWorker(workerUrl, mod) {\n var blob = $workerBlob(workerUrl, mod);\n var URL = window.URL || window.webkitURL;\n var blobURL = URL.createObjectURL(blob);\n return new Worker(blobURL);\n}\n\nvar WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) {\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.onMessage = this.onMessage.bind(this);\n if (acequire.nameToUrl && !acequire.toUrl)\n acequire.toUrl = acequire.nameToUrl;\n \n if (config.get(\"packaged\") || !acequire.toUrl) {\n workerUrl = workerUrl || config.moduleUrl(mod.id, \"worker\");\n } else {\n var normalizePath = this.$normalizePath;\n workerUrl = workerUrl || normalizePath(acequire.toUrl(\"ace/worker/worker.js\", null, \"_\"));\n\n var tlns = {};\n topLevelNamespaces.forEach(function(ns) {\n tlns[ns] = normalizePath(acequire.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\n });\n }\n\n this.$worker = createWorker(workerUrl, mod);\n if (importScripts) {\n this.send(\"importScripts\", importScripts);\n }\n this.$worker.postMessage({\n init : true,\n tlns : tlns,\n module : mod.id,\n classname : classname\n });\n\n this.callbackId = 1;\n this.callbacks = {};\n\n this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.onMessage = function(e) {\n var msg = e.data;\n switch (msg.type) {\n case \"event\":\n this._signal(msg.name, {data: msg.data});\n break;\n case \"call\":\n var callback = this.callbacks[msg.id];\n if (callback) {\n callback(msg.data);\n delete this.callbacks[msg.id];\n }\n break;\n case \"error\":\n this.reportError(msg.data);\n break;\n case \"log\":\n window.console && console.log && console.log.apply(console, msg.data);\n break;\n }\n };\n \n this.reportError = function(err) {\n window.console && console.error && console.error(err);\n };\n\n this.$normalizePath = function(path) {\n return net.qualifyURL(path);\n };\n\n this.terminate = function() {\n this._signal(\"terminate\", {});\n this.deltaQueue = null;\n this.$worker.terminate();\n this.$worker = null;\n if (this.$doc)\n this.$doc.off(\"change\", this.changeListener);\n this.$doc = null;\n };\n\n this.send = function(cmd, args) {\n this.$worker.postMessage({command: cmd, args: args});\n };\n\n this.call = function(cmd, args, callback) {\n if (callback) {\n var id = this.callbackId++;\n this.callbacks[id] = callback;\n args.push(id);\n }\n this.send(cmd, args);\n };\n\n this.emit = function(event, data) {\n try {\n this.$worker.postMessage({event: event, data: {data: data.data}});\n }\n catch(ex) {\n console.error(ex.stack);\n }\n };\n\n this.attachToDocument = function(doc) {\n if (this.$doc)\n this.terminate();\n\n this.$doc = doc;\n this.call(\"setValue\", [doc.getValue()]);\n doc.on(\"change\", this.changeListener);\n };\n\n this.changeListener = function(delta) {\n if (!this.deltaQueue) {\n this.deltaQueue = [];\n setTimeout(this.$sendDeltaQueue, 0);\n }\n if (delta.action == \"insert\")\n this.deltaQueue.push(delta.start, delta.lines);\n else\n this.deltaQueue.push(delta.start, delta.end);\n };\n\n this.$sendDeltaQueue = function() {\n var q = this.deltaQueue;\n if (!q) return;\n this.deltaQueue = null;\n if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n this.call(\"setValue\", [this.$doc.getValue()]);\n } else\n this.emit(\"change\", {data: q});\n };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.callbackId = 1;\n this.callbacks = {};\n this.messageBuffer = [];\n\n var main = null;\n var emitSync = false;\n var sender = Object.create(EventEmitter);\n var _self = this;\n\n this.$worker = {};\n this.$worker.terminate = function() {};\n this.$worker.postMessage = function(e) {\n _self.messageBuffer.push(e);\n if (main) {\n if (emitSync)\n setTimeout(processNext);\n else\n processNext();\n }\n };\n this.setEmitSync = function(val) { emitSync = val; };\n\n var processNext = function() {\n var msg = _self.messageBuffer.shift();\n if (msg.command)\n main[msg.command].apply(main, msg.args);\n else if (msg.event)\n sender._signal(msg.event, msg.data);\n };\n\n sender.postMessage = function(msg) {\n _self.onMessage({data: msg});\n };\n sender.callback = function(data, callbackId) {\n this.postMessage({type: \"call\", id: callbackId, data: data});\n };\n sender.emit = function(name, data) {\n this.postMessage({type: \"event\", name: name, data: data});\n };\n\n config.loadModule([\"worker\", mod], function(Main) {\n main = new Main[classname](sender);\n while (_self.messageBuffer.length)\n processNext();\n });\n};\n\nUIWorkerClient.prototype = WorkerClient.prototype;\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\nexports.createWorker = createWorker;\n\n\n});\n\nace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"./range\").Range;\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar oop = acequire(\"./lib/oop\");\n\nvar PlaceHolder = function(session, length, pos, others, mainClass, othersClass) {\n var _self = this;\n this.length = length;\n this.session = session;\n this.doc = session.getDocument();\n this.mainClass = mainClass;\n this.othersClass = othersClass;\n this.$onUpdate = this.onUpdate.bind(this);\n this.doc.on(\"change\", this.$onUpdate);\n this.$others = others;\n \n this.$onCursorChange = function() {\n setTimeout(function() {\n _self.onCursorChange();\n });\n };\n \n this.$pos = pos;\n var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || {length: -1};\n this.$undoStackDepth = undoStack.length;\n this.setup();\n\n session.selection.on(\"changeCursor\", this.$onCursorChange);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setup = function() {\n var _self = this;\n var doc = this.doc;\n var session = this.session;\n \n this.selectionBefore = session.selection.toJSON();\n if (session.selection.inMultiSelectMode)\n session.selection.toSingleRange();\n\n this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\n var pos = this.pos;\n pos.$insertRight = true;\n pos.detach();\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n this.others = [];\n this.$others.forEach(function(other) {\n var anchor = doc.createAnchor(other.row, other.column);\n anchor.$insertRight = true;\n anchor.detach();\n _self.others.push(anchor);\n });\n session.setUndoSelect(false);\n };\n this.showOtherMarkers = function() {\n if (this.othersActive) return;\n var session = this.session;\n var _self = this;\n this.othersActive = true;\n this.others.forEach(function(anchor) {\n anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column+_self.length), _self.othersClass, null, false);\n });\n };\n this.hideOtherMarkers = function() {\n if (!this.othersActive) return;\n this.othersActive = false;\n for (var i = 0; i < this.others.length; i++) {\n this.session.removeMarker(this.others[i].markerId);\n }\n };\n this.onUpdate = function(delta) {\n if (this.$updating)\n return this.updateAnchors(delta);\n \n var range = delta;\n if (range.start.row !== range.end.row) return;\n if (range.start.row !== this.pos.row) return;\n this.$updating = true;\n var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\n var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\n var distanceFromStart = range.start.column - this.pos.column;\n \n this.updateAnchors(delta);\n \n if (inMainRange)\n this.length += lengthDiff;\n\n if (inMainRange && !this.session.$fromUndo) {\n if (delta.action === 'insert') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};\n this.doc.insertMergedLines(newPos, delta.lines);\n }\n } else if (delta.action === 'remove') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};\n this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n }\n }\n }\n \n this.$updating = false;\n this.updateMarkers();\n };\n \n this.updateAnchors = function(delta) {\n this.pos.onChange(delta);\n for (var i = this.others.length; i--;)\n this.others[i].onChange(delta);\n this.updateMarkers();\n };\n \n this.updateMarkers = function() {\n if (this.$updating)\n return;\n var _self = this;\n var session = this.session;\n var updateMarker = function(pos, className) {\n session.removeMarker(pos.markerId);\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column+_self.length), className, null, false);\n };\n updateMarker(this.pos, this.mainClass);\n for (var i = this.others.length; i--;)\n updateMarker(this.others[i], this.othersClass);\n };\n\n this.onCursorChange = function(event) {\n if (this.$updating || !this.session) return;\n var pos = this.session.selection.getCursor();\n if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n this.showOtherMarkers();\n this._emit(\"cursorEnter\", event);\n } else {\n this.hideOtherMarkers();\n this._emit(\"cursorLeave\", event);\n }\n }; \n this.detach = function() {\n this.session.removeMarker(this.pos && this.pos.markerId);\n this.hideOtherMarkers();\n this.doc.removeEventListener(\"change\", this.$onUpdate);\n this.session.selection.removeEventListener(\"changeCursor\", this.$onCursorChange);\n this.session.setUndoSelect(true);\n this.session = null;\n };\n this.cancel = function() {\n if (this.$undoStackDepth === -1)\n return;\n var undoManager = this.session.getUndoManager();\n var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;\n for (var i = 0; i < undosRequired; i++) {\n undoManager.undo(true);\n }\n if (this.selectionBefore)\n this.session.selection.fromJSON(this.selectionBefore);\n };\n}).call(PlaceHolder.prototype);\n\n\nexports.PlaceHolder = PlaceHolder;\n});\n\nace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\nvar event = acequire(\"../lib/event\");\nvar useragent = acequire(\"../lib/useragent\");\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\n\nfunction onMouseDown(e) {\n var ev = e.domEvent;\n var alt = ev.altKey;\n var shift = ev.shiftKey;\n var ctrl = ev.ctrlKey;\n var accel = e.getAccelKey();\n var button = e.getButton();\n \n if (ctrl && useragent.isMac)\n button = ev.button;\n\n if (e.editor.inMultiSelectMode && button == 2) {\n e.editor.textInput.onContextMenu(e.domEvent);\n return;\n }\n \n if (!ctrl && !alt && !accel) {\n if (button === 0 && e.editor.inMultiSelectMode)\n e.editor.exitMultiSelectMode();\n return;\n }\n \n if (button !== 0)\n return;\n\n var editor = e.editor;\n var selection = editor.selection;\n var isMultiSelect = editor.inMultiSelectMode;\n var pos = e.getDocumentPosition();\n var cursor = selection.getCursor();\n var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n\n var mouseX = e.x, mouseY = e.y;\n var onMouseSelection = function(e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n };\n \n var session = editor.session;\n var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var screenCursor = screenAnchor;\n \n var selectionMode;\n if (editor.$mouseHandler.$enableJumpToDef) {\n if (ctrl && alt || accel && alt)\n selectionMode = shift ? \"block\" : \"add\";\n else if (alt && editor.$blockSelectEnabled)\n selectionMode = \"block\";\n } else {\n if (accel && !alt) {\n selectionMode = \"add\";\n if (!isMultiSelect && shift)\n return;\n } else if (alt && editor.$blockSelectEnabled) {\n selectionMode = \"block\";\n }\n }\n \n if (selectionMode && useragent.isMac && ev.ctrlKey) {\n editor.$mouseHandler.cancelContextMenu();\n }\n\n if (selectionMode == \"add\") {\n if (!isMultiSelect && inSelection)\n return; // dragging\n\n if (!isMultiSelect) {\n var range = selection.toOrientedRange();\n editor.addSelectionMarker(range);\n }\n\n var oldRange = selection.rangeList.rangeAtPoint(pos);\n \n \n editor.$blockScrolling++;\n editor.inVirtualSelectionMode = true;\n \n if (shift) {\n oldRange = null;\n range = selection.ranges[0] || range;\n editor.removeSelectionMarker(range);\n }\n editor.once(\"mouseup\", function() {\n var tmpSel = selection.toOrientedRange();\n\n if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n selection.substractPoint(tmpSel.cursor);\n else {\n if (shift) {\n selection.substractPoint(range.cursor);\n } else if (range) {\n editor.removeSelectionMarker(range);\n selection.addRange(range);\n }\n selection.addRange(tmpSel);\n }\n editor.$blockScrolling--;\n editor.inVirtualSelectionMode = false;\n });\n\n } else if (selectionMode == \"block\") {\n e.stop();\n editor.inVirtualSelectionMode = true; \n var initialRange;\n var rectSel = [];\n var blockSelect = function() {\n var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX);\n\n if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n return;\n screenCursor = newCursor;\n \n editor.$blockScrolling++;\n editor.selection.moveToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n\n editor.removeSelectionMarkers(rectSel);\n rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n rectSel.forEach(editor.addSelectionMarker, editor);\n editor.updateSelectionMarkers();\n editor.$blockScrolling--;\n };\n editor.$blockScrolling++;\n if (isMultiSelect && !accel) {\n selection.toSingleRange();\n } else if (!isMultiSelect && accel) {\n initialRange = selection.toOrientedRange();\n editor.addSelectionMarker(initialRange);\n }\n \n if (shift)\n screenAnchor = session.documentToScreenPosition(selection.lead); \n else\n selection.moveToPosition(pos);\n editor.$blockScrolling--;\n \n screenCursor = {row: -1, column: -1};\n\n var onMouseSelectionEnd = function(e) {\n clearInterval(timerId);\n editor.removeSelectionMarkers(rectSel);\n if (!rectSel.length)\n rectSel = [selection.toOrientedRange()];\n editor.$blockScrolling++;\n if (initialRange) {\n editor.removeSelectionMarker(initialRange);\n selection.toSingleRange(initialRange);\n }\n for (var i = 0; i < rectSel.length; i++)\n selection.addRange(rectSel[i]);\n editor.inVirtualSelectionMode = false;\n editor.$mouseHandler.$clickSelection = null;\n editor.$blockScrolling--;\n };\n\n var onSelectionInterval = blockSelect;\n\n event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n var timerId = setInterval(function() {onSelectionInterval();}, 20);\n\n return e.preventDefault();\n }\n}\n\n\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(acequire, exports, module) {\nexports.defaultCommands = [{\n name: \"addCursorAbove\",\n exec: function(editor) { editor.selectMoreLines(-1); },\n bindKey: {win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorBelow\",\n exec: function(editor) { editor.selectMoreLines(1); },\n bindKey: {win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorAboveSkipCurrent\",\n exec: function(editor) { editor.selectMoreLines(-1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorBelowSkipCurrent\",\n exec: function(editor) { editor.selectMoreLines(1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectMoreBefore\",\n exec: function(editor) { editor.selectMore(-1); },\n bindKey: {win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectMoreAfter\",\n exec: function(editor) { editor.selectMore(1); },\n bindKey: {win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectNextBefore\",\n exec: function(editor) { editor.selectMore(-1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectNextAfter\",\n exec: function(editor) { editor.selectMore(1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"splitIntoLines\",\n exec: function(editor) { editor.multiSelect.splitIntoLines(); },\n bindKey: {win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\"},\n readOnly: true\n}, {\n name: \"alignCursors\",\n exec: function(editor) { editor.alignCursors(); },\n bindKey: {win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\"},\n scrollIntoView: \"cursor\"\n}, {\n name: \"findAll\",\n exec: function(editor) { editor.findAll(); },\n bindKey: {win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}];\nexports.multiSelectCommands = [{\n name: \"singleSelection\",\n bindKey: \"esc\",\n exec: function(editor) { editor.exitMultiSelectMode(); },\n scrollIntoView: \"cursor\",\n readOnly: true,\n isAvailable: function(editor) {return editor && editor.inMultiSelectMode;}\n}];\n\nvar HashHandler = acequire(\"../keyboard/hash_handler\").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.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\",\"ace/config\"], function(acequire, exports, module) {\n\nvar RangeList = acequire(\"./range_list\").RangeList;\nvar Range = acequire(\"./range\").Range;\nvar Selection = acequire(\"./selection\").Selection;\nvar onMouseDown = acequire(\"./mouse/multi_select_handler\").onMouseDown;\nvar event = acequire(\"./lib/event\");\nvar lang = acequire(\"./lib/lang\");\nvar commands = acequire(\"./commands/multi_select_commands\");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = acequire(\"./search\").Search;\nvar search = new Search();\n\nfunction find(session, needle, dir) {\n search.$options.wrap = true;\n search.$options.needle = needle;\n search.$options.backwards = dir == -1;\n return search.find(session);\n}\nvar EditSession = acequire(\"./edit_session\").EditSession;\n(function() {\n this.getSelectionMarkers = function() {\n return this.$selectionMarkers;\n };\n}).call(EditSession.prototype);\n(function() {\n this.ranges = null;\n this.rangeList = null;\n this.addRange = function(range, $blockChangeEvents) {\n if (!range)\n return;\n\n if (!this.inMultiSelectMode && this.rangeCount === 0) {\n var oldRange = this.toOrientedRange();\n this.rangeList.add(oldRange);\n this.rangeList.add(range);\n if (this.rangeList.ranges.length != 2) {\n this.rangeList.removeAll();\n return $blockChangeEvents || this.fromOrientedRange(range);\n }\n this.rangeList.removeAll();\n this.rangeList.add(oldRange);\n this.$onAddRange(oldRange);\n }\n\n if (!range.cursor)\n range.cursor = range.end;\n\n var removed = this.rangeList.add(range);\n\n this.$onAddRange(range);\n\n if (removed.length)\n this.$onRemoveRange(removed);\n\n if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n this._signal(\"multiSelect\");\n this.inMultiSelectMode = true;\n this.session.$undoSelect = false;\n this.rangeList.attach(this.session);\n }\n\n return $blockChangeEvents || this.fromOrientedRange(range);\n };\n\n this.toSingleRange = function(range) {\n range = range || this.ranges[0];\n var removed = this.rangeList.removeAll();\n if (removed.length)\n this.$onRemoveRange(removed);\n\n range && this.fromOrientedRange(range);\n };\n this.substractPoint = function(pos) {\n var removed = this.rangeList.substractPoint(pos);\n if (removed) {\n this.$onRemoveRange(removed);\n return removed[0];\n }\n };\n this.mergeOverlappingRanges = function() {\n var removed = this.rangeList.merge();\n if (removed.length)\n this.$onRemoveRange(removed);\n else if(this.ranges[0])\n this.fromOrientedRange(this.ranges[0]);\n };\n\n this.$onAddRange = function(range) {\n this.rangeCount = this.rangeList.ranges.length;\n this.ranges.unshift(range);\n this._signal(\"addRange\", {range: range});\n };\n\n this.$onRemoveRange = function(removed) {\n this.rangeCount = this.rangeList.ranges.length;\n if (this.rangeCount == 1 && this.inMultiSelectMode) {\n var lastRange = this.rangeList.ranges.pop();\n removed.push(lastRange);\n this.rangeCount = 0;\n }\n\n for (var i = removed.length; i--; ) {\n var index = this.ranges.indexOf(removed[i]);\n this.ranges.splice(index, 1);\n }\n\n this._signal(\"removeRange\", {ranges: removed});\n\n if (this.rangeCount === 0 && this.inMultiSelectMode) {\n this.inMultiSelectMode = false;\n this._signal(\"singleSelect\");\n this.session.$undoSelect = true;\n this.rangeList.detach(this.session);\n }\n\n lastRange = lastRange || this.ranges[0];\n if (lastRange && !lastRange.isEqual(this.getRange()))\n this.fromOrientedRange(lastRange);\n };\n this.$initRangeList = function() {\n if (this.rangeList)\n return;\n\n this.rangeList = new RangeList();\n this.ranges = [];\n this.rangeCount = 0;\n };\n this.getAllRanges = function() {\n return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n };\n\n this.splitIntoLines = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n } else {\n var range = this.getRange();\n var isBackwards = this.isBackwards();\n var startRow = range.start.row;\n var endRow = range.end.row;\n if (startRow == endRow) {\n if (isBackwards)\n var start = range.end, end = range.start;\n else\n var start = range.start, end = range.end;\n \n this.addRange(Range.fromPoints(end, end));\n this.addRange(Range.fromPoints(start, start));\n return;\n }\n\n var rectSel = [];\n var r = this.getLineRange(startRow, true);\n r.start.column = range.start.column;\n rectSel.push(r);\n\n for (var i = startRow + 1; i < endRow; i++)\n rectSel.push(this.getLineRange(i, true));\n\n r = this.getLineRange(endRow, true);\n r.end.column = range.end.column;\n rectSel.push(r);\n\n rectSel.forEach(this.addRange, this);\n }\n };\n this.toggleBlockSelection = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n } else {\n var cursor = this.session.documentToScreenPosition(this.selectionLead);\n var anchor = this.session.documentToScreenPosition(this.selectionAnchor);\n\n var rectSel = this.rectangularRangeBlock(cursor, anchor);\n rectSel.forEach(this.addRange, this);\n }\n };\n this.rectangularRangeBlock = function(screenCursor, screenAnchor, includeEmptyLines) {\n var rectSel = [];\n\n var xBackwards = screenCursor.column < screenAnchor.column;\n if (xBackwards) {\n var startColumn = screenCursor.column;\n var endColumn = screenAnchor.column;\n var startOffsetX = screenCursor.offsetX;\n var endOffsetX = screenAnchor.offsetX;\n } else {\n var startColumn = screenAnchor.column;\n var endColumn = screenCursor.column;\n var startOffsetX = screenAnchor.offsetX;\n var endOffsetX = screenCursor.offsetX;\n }\n\n var yBackwards = screenCursor.row < screenAnchor.row;\n if (yBackwards) {\n var startRow = screenCursor.row;\n var endRow = screenAnchor.row;\n } else {\n var startRow = screenAnchor.row;\n var endRow = screenCursor.row;\n }\n\n if (startColumn < 0)\n startColumn = 0;\n if (startRow < 0)\n startRow = 0;\n\n if (startRow == endRow)\n includeEmptyLines = true;\n\n for (var row = startRow; row <= endRow; row++) {\n var range = Range.fromPoints(\n this.session.screenToDocumentPosition(row, startColumn, startOffsetX),\n this.session.screenToDocumentPosition(row, endColumn, endOffsetX)\n );\n if (range.isEmpty()) {\n if (docEnd && isSamePoint(range.end, docEnd))\n break;\n var docEnd = range.end;\n }\n range.cursor = xBackwards ? range.start : range.end;\n rectSel.push(range);\n }\n\n if (yBackwards)\n rectSel.reverse();\n\n if (!includeEmptyLines) {\n var end = rectSel.length - 1;\n while (rectSel[end].isEmpty() && end > 0)\n end--;\n if (end > 0) {\n var start = 0;\n while (rectSel[start].isEmpty())\n start++;\n }\n for (var i = end; i >= start; i--) {\n if (rectSel[i].isEmpty())\n rectSel.splice(i, 1);\n }\n }\n\n return rectSel;\n };\n}).call(Selection.prototype);\nvar Editor = acequire(\"./editor\").Editor;\n(function() {\n this.updateSelectionMarkers = function() {\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.addSelectionMarker = function(orientedRange) {\n if (!orientedRange.cursor)\n orientedRange.cursor = orientedRange.end;\n\n var style = this.getSelectionStyle();\n orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\n\n this.session.$selectionMarkers.push(orientedRange);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n return orientedRange;\n };\n this.removeSelectionMarker = function(range) {\n if (!range.marker)\n return;\n this.session.removeMarker(range.marker);\n var index = this.session.$selectionMarkers.indexOf(range);\n if (index != -1)\n this.session.$selectionMarkers.splice(index, 1);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n };\n\n this.removeSelectionMarkers = function(ranges) {\n var markerList = this.session.$selectionMarkers;\n for (var i = ranges.length; i--; ) {\n var range = ranges[i];\n if (!range.marker)\n continue;\n this.session.removeMarker(range.marker);\n var index = markerList.indexOf(range);\n if (index != -1)\n markerList.splice(index, 1);\n }\n this.session.selectionMarkerCount = markerList.length;\n };\n\n this.$onAddRange = function(e) {\n this.addSelectionMarker(e.range);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onRemoveRange = function(e) {\n this.removeSelectionMarkers(e.ranges);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onMultiSelect = function(e) {\n if (this.inMultiSelectMode)\n return;\n this.inMultiSelectMode = true;\n\n this.setStyle(\"ace_multiselect\");\n this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\n\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onSingleSelect = function(e) {\n if (this.session.multiSelect.inVirtualMode)\n return;\n this.inMultiSelectMode = false;\n\n this.unsetStyle(\"ace_multiselect\");\n this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n\n this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n this._emit(\"changeSelection\");\n };\n\n this.$onMultiSelectExec = function(e) {\n var command = e.command;\n var editor = e.editor;\n if (!editor.multiSelect)\n return;\n if (!command.multiSelectAction) {\n var result = command.exec(editor, e.args || {});\n editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n editor.multiSelect.mergeOverlappingRanges();\n } else if (command.multiSelectAction == \"forEach\") {\n result = editor.forEachSelection(command, e.args);\n } else if (command.multiSelectAction == \"forEachLine\") {\n result = editor.forEachSelection(command, e.args, true);\n } else if (command.multiSelectAction == \"single\") {\n editor.exitMultiSelectMode();\n result = command.exec(editor, e.args || {});\n } else {\n result = command.multiSelectAction(editor, e.args || {});\n }\n return result;\n }; \n this.forEachSelection = function(cmd, args, options) {\n if (this.inVirtualSelectionMode)\n return;\n var keepOrder = options && options.keepOrder;\n var $byLines = options == true || options && options.$byLines;\n var session = this.session;\n var selection = this.selection;\n var rangeList = selection.rangeList;\n var ranges = (keepOrder ? selection : rangeList).ranges;\n var result;\n \n if (!ranges.length)\n return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n \n var reg = selection._eventRegistry;\n selection._eventRegistry = {};\n\n var tmpSel = new Selection(session);\n this.inVirtualSelectionMode = true;\n for (var i = ranges.length; i--;) {\n if ($byLines) {\n while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n i--;\n }\n tmpSel.fromOrientedRange(ranges[i]);\n tmpSel.index = i;\n this.selection = session.selection = tmpSel;\n var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n if (!result && cmdResult !== undefined)\n result = cmdResult;\n tmpSel.toOrientedRange(ranges[i]);\n }\n tmpSel.detach();\n\n this.selection = session.selection = selection;\n this.inVirtualSelectionMode = false;\n selection._eventRegistry = reg;\n selection.mergeOverlappingRanges();\n \n var anim = this.renderer.$scrollAnimation;\n this.onCursorChange();\n this.onSelectionChange();\n if (anim && anim.from == anim.to)\n this.renderer.animateScrolling(anim.from);\n \n return result;\n };\n this.exitMultiSelectMode = function() {\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n return;\n this.multiSelect.toSingleRange();\n };\n\n this.getSelectedText = function() {\n var text = \"\";\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var ranges = this.multiSelect.rangeList.ranges;\n var buf = [];\n for (var i = 0; i < ranges.length; i++) {\n buf.push(this.session.getTextRange(ranges[i]));\n }\n var nl = this.session.getDocument().getNewLineCharacter();\n text = buf.join(nl);\n if (text.length == (buf.length - 1) * nl.length)\n text = \"\";\n } else if (!this.selection.isEmpty()) {\n text = this.session.getTextRange(this.getSelectionRange());\n }\n return text;\n };\n \n this.$checkMultiselectChange = function(e, anchor) {\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var range = this.multiSelect.ranges[0];\n if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n return;\n var pos = anchor == this.multiSelect.anchor\n ? range.cursor == range.start ? range.end : range.start\n : range.cursor;\n if (pos.row != anchor.row \n || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n }\n };\n this.findAll = function(needle, options, additive) {\n options = options || {};\n options.needle = needle || options.needle;\n if (options.needle == undefined) {\n var range = this.selection.isEmpty()\n ? this.selection.getWordRange()\n : this.selection.getRange();\n options.needle = this.session.getTextRange(range);\n } \n this.$search.set(options);\n \n var ranges = this.$search.findAll(this.session);\n if (!ranges.length)\n return 0;\n\n this.$blockScrolling += 1;\n var selection = this.multiSelect;\n\n if (!additive)\n selection.toSingleRange(ranges[0]);\n\n for (var i = ranges.length; i--; )\n selection.addRange(ranges[i], true);\n if (range && selection.rangeList.rangeAtPoint(range.start))\n selection.addRange(range, true);\n \n this.$blockScrolling -= 1;\n\n return ranges.length;\n };\n this.selectMoreLines = function(dir, skip) {\n var range = this.selection.toOrientedRange();\n var isBackwards = range.cursor == range.end;\n\n var screenLead = this.session.documentToScreenPosition(range.cursor);\n if (this.selection.$desiredColumn)\n screenLead.column = this.selection.$desiredColumn;\n\n var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n\n if (!range.isEmpty()) {\n var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n } else {\n var anchor = lead;\n }\n\n if (isBackwards) {\n var newRange = Range.fromPoints(lead, anchor);\n newRange.cursor = newRange.start;\n } else {\n var newRange = Range.fromPoints(anchor, lead);\n newRange.cursor = newRange.end;\n }\n\n newRange.desiredColumn = screenLead.column;\n if (!this.selection.inMultiSelectMode) {\n this.selection.addRange(range);\n } else {\n if (skip)\n var toRemove = range.cursor;\n }\n\n this.selection.addRange(newRange);\n if (toRemove)\n this.selection.substractPoint(toRemove);\n };\n this.transposeSelections = function(dir) {\n var session = this.session;\n var sel = session.multiSelect;\n var all = sel.ranges;\n\n for (var i = all.length; i--; ) {\n var range = all[i];\n if (range.isEmpty()) {\n var tmp = session.getWordRange(range.start.row, range.start.column);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n range.end.row = tmp.end.row;\n range.end.column = tmp.end.column;\n }\n }\n sel.mergeOverlappingRanges();\n\n var words = [];\n for (var i = all.length; i--; ) {\n var range = all[i];\n words.unshift(session.getTextRange(range));\n }\n\n if (dir < 0)\n words.unshift(words.pop());\n else\n words.push(words.shift());\n\n for (var i = all.length; i--; ) {\n var range = all[i];\n var tmp = range.clone();\n session.replace(range, words[i]);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n }\n };\n this.selectMore = function(dir, skip, stopAtFirst) {\n var session = this.session;\n var sel = session.multiSelect;\n\n var range = sel.toOrientedRange();\n if (range.isEmpty()) {\n range = session.getWordRange(range.start.row, range.start.column);\n range.cursor = dir == -1 ? range.start : range.end;\n this.multiSelect.addRange(range);\n if (stopAtFirst)\n return;\n }\n var needle = session.getTextRange(range);\n\n var newRange = find(session, needle, dir);\n if (newRange) {\n newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n this.$blockScrolling += 1;\n this.session.unfold(newRange);\n this.multiSelect.addRange(newRange);\n this.$blockScrolling -= 1;\n this.renderer.scrollCursorIntoView(null, 0.5);\n }\n if (skip)\n this.multiSelect.substractPoint(range.cursor);\n };\n this.alignCursors = function() {\n var session = this.session;\n var sel = session.multiSelect;\n var ranges = sel.ranges;\n var row = -1;\n var sameRowRanges = ranges.filter(function(r) {\n if (r.cursor.row == row)\n return true;\n row = r.cursor.row;\n });\n \n if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n var range = this.selection.getRange();\n var fr = range.start.row, lr = range.end.row;\n var guessRange = fr == lr;\n if (guessRange) {\n var max = this.session.getLength();\n var line;\n do {\n line = this.session.getLine(lr);\n } while (/[=:]/.test(line) && ++lr < max);\n do {\n line = this.session.getLine(fr);\n } while (/[=:]/.test(line) && --fr > 0);\n \n if (fr < 0) fr = 0;\n if (lr >= max) lr = max - 1;\n }\n var lines = this.session.removeFullLines(fr, lr);\n lines = this.$reAlignText(lines, guessRange);\n this.session.insert({row: fr, column: 0}, lines.join(\"\\n\") + \"\\n\");\n if (!guessRange) {\n range.start.column = 0;\n range.end.column = lines[lines.length - 1].length;\n }\n this.selection.setRange(range);\n } else {\n sameRowRanges.forEach(function(r) {\n sel.substractPoint(r.cursor);\n });\n\n var maxCol = 0;\n var minSpace = Infinity;\n var spaceOffsets = ranges.map(function(r) {\n var p = r.cursor;\n var line = session.getLine(p.row);\n var spaceOffset = line.substr(p.column).search(/\\S/g);\n if (spaceOffset == -1)\n spaceOffset = 0;\n\n if (p.column > maxCol)\n maxCol = p.column;\n if (spaceOffset < minSpace)\n minSpace = spaceOffset;\n return spaceOffset;\n });\n ranges.forEach(function(r, i) {\n var p = r.cursor;\n var l = maxCol - p.column;\n var d = spaceOffsets[i] - minSpace;\n if (l > d)\n session.insert(p, lang.stringRepeat(\" \", l - d));\n else\n session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n\n r.start.column = r.end.column = maxCol;\n r.start.row = r.end.row = p.row;\n r.cursor = r.end;\n });\n sel.fromOrientedRange(ranges[0]);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n }\n };\n\n this.$reAlignText = function(lines, forceLeft) {\n var isLeftAligned = true, isRightAligned = true;\n var startW, textW, endW;\n\n return lines.map(function(line) {\n var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n if (!m)\n return [line];\n\n if (startW == null) {\n startW = m[1].length;\n textW = m[2].length;\n endW = m[3].length;\n return m;\n }\n\n if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n isRightAligned = false;\n if (startW != m[1].length)\n isLeftAligned = false;\n\n if (startW > m[1].length)\n startW = m[1].length;\n if (textW < m[2].length)\n textW = m[2].length;\n if (endW > m[3].length)\n endW = m[3].length;\n\n return m;\n }).map(forceLeft ? alignLeft :\n isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n\n function spaces(n) {\n return lang.stringRepeat(\" \", n);\n }\n\n function alignLeft(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(textW - m[2].length + endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function alignRight(m) {\n return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n + spaces(endW, \" \")\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function unAlign(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n };\n}).call(Editor.prototype);\n\n\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function(e) {\n var session = e.session;\n if (session && !session.multiSelect) {\n session.$selectionMarkers = [];\n session.selection.$initRangeList();\n session.multiSelect = session.selection;\n }\n this.multiSelect = session && session.multiSelect;\n\n var oldSession = e.oldSession;\n if (oldSession) {\n oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\n oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\n oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\n oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\n oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\n oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\n }\n\n if (session) {\n session.multiSelect.on(\"addRange\", this.$onAddRange);\n session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\n session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\n session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\n session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\n session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\n }\n\n if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n if (session.selection.inMultiSelectMode)\n this.$onMultiSelect();\n else\n this.$onSingleSelect();\n }\n};\nfunction MultiSelect(editor) {\n if (editor.$multiselectOnSessionChange)\n return;\n editor.$onAddRange = editor.$onAddRange.bind(editor);\n editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n\n editor.$multiselectOnSessionChange(editor);\n editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\n\n editor.on(\"mousedown\", onMouseDown);\n editor.commands.addCommands(commands.defaultCommands);\n\n addAltCursorListeners(editor);\n}\n\nfunction addAltCursorListeners(editor){\n var el = editor.textInput.getElement();\n var altCursor = false;\n event.addListener(el, \"keydown\", function(e) {\n var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n if (editor.$blockSelectEnabled && altDown) {\n if (!altCursor) {\n editor.renderer.setMouseCursor(\"crosshair\");\n altCursor = true;\n }\n } else if (altCursor) {\n reset();\n }\n });\n\n event.addListener(el, \"keyup\", reset);\n event.addListener(el, \"blur\", reset);\n function reset(e) {\n if (altCursor) {\n editor.renderer.setMouseCursor(\"\");\n altCursor = false;\n }\n }\n}\n\nexports.MultiSelect = MultiSelect;\n\n\nacequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\n enableMultiselect: {\n set: function(val) {\n MultiSelect(this);\n if (val) {\n this.on(\"changeSession\", this.$multiselectOnSessionChange);\n this.on(\"mousedown\", onMouseDown);\n } else {\n this.off(\"changeSession\", this.$multiselectOnSessionChange);\n this.off(\"mousedown\", onMouseDown);\n }\n },\n value: true\n },\n enableBlockSelect: {\n set: function(val) {\n this.$blockSelectEnabled = val;\n },\n value: true\n }\n});\n\n\n\n});\n\nace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\n\n(function() {\n\n this.foldingStartMarker = null;\n this.foldingStopMarker = null;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.foldingStartMarker.test(line))\n return \"start\";\n if (foldStyle == \"markbeginend\"\n && this.foldingStopMarker\n && this.foldingStopMarker.test(line))\n return \"end\";\n return \"\";\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n return null;\n };\n\n this.indentationBlock = function(session, row, column) {\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1)\n return;\n\n var startColumn = column || line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n var level = session.getLine(row).search(re);\n\n if (level == -1)\n continue;\n\n if (level <= startLevel)\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n\n this.openingBracketBlock = function(session, bracket, row, column, typeRe) {\n var start = {row: row, column: column + 1};\n var end = session.$findClosingBracket(bracket, start, typeRe);\n if (!end)\n return;\n\n var fw = session.foldWidgets[end.row];\n if (fw == null)\n fw = session.getFoldWidget(end.row);\n\n if (fw == \"start\" && end.row > start.row) {\n end.row --;\n end.column = session.getLine(end.row).length;\n }\n return Range.fromPoints(start, end);\n };\n\n this.closingBracketBlock = function(session, bracket, row, column, typeRe) {\n var end = {row: row, column: column};\n var start = session.$findOpeningBracket(bracket, end);\n\n if (!start)\n return;\n\n start.column++;\n end.column--;\n\n return Range.fromPoints(start, end);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(acequire, exports, module) {\n\"use strict\";\n\nexports.isDark = false;\nexports.cssClass = \"ace-tm\";\nexports.cssText = \".ace-tm .ace_gutter {\\\nbackground: #f0f0f0;\\\ncolor: #333;\\\n}\\\n.ace-tm .ace_print-margin {\\\nwidth: 1px;\\\nbackground: #e8e8e8;\\\n}\\\n.ace-tm .ace_fold {\\\nbackground-color: #6B72E6;\\\n}\\\n.ace-tm {\\\nbackground-color: #FFFFFF;\\\ncolor: black;\\\n}\\\n.ace-tm .ace_cursor {\\\ncolor: black;\\\n}\\\n.ace-tm .ace_invisible {\\\ncolor: rgb(191, 191, 191);\\\n}\\\n.ace-tm .ace_storage,\\\n.ace-tm .ace_keyword {\\\ncolor: blue;\\\n}\\\n.ace-tm .ace_constant {\\\ncolor: rgb(197, 6, 11);\\\n}\\\n.ace-tm .ace_constant.ace_buildin {\\\ncolor: rgb(88, 72, 246);\\\n}\\\n.ace-tm .ace_constant.ace_language {\\\ncolor: rgb(88, 92, 246);\\\n}\\\n.ace-tm .ace_constant.ace_library {\\\ncolor: rgb(6, 150, 14);\\\n}\\\n.ace-tm .ace_invalid {\\\nbackground-color: rgba(255, 0, 0, 0.1);\\\ncolor: red;\\\n}\\\n.ace-tm .ace_support.ace_function {\\\ncolor: rgb(60, 76, 114);\\\n}\\\n.ace-tm .ace_support.ace_constant {\\\ncolor: rgb(6, 150, 14);\\\n}\\\n.ace-tm .ace_support.ace_type,\\\n.ace-tm .ace_support.ace_class {\\\ncolor: rgb(109, 121, 222);\\\n}\\\n.ace-tm .ace_keyword.ace_operator {\\\ncolor: rgb(104, 118, 135);\\\n}\\\n.ace-tm .ace_string {\\\ncolor: rgb(3, 106, 7);\\\n}\\\n.ace-tm .ace_comment {\\\ncolor: rgb(76, 136, 107);\\\n}\\\n.ace-tm .ace_comment.ace_doc {\\\ncolor: rgb(0, 102, 255);\\\n}\\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\\ncolor: rgb(128, 159, 191);\\\n}\\\n.ace-tm .ace_constant.ace_numeric {\\\ncolor: rgb(0, 0, 205);\\\n}\\\n.ace-tm .ace_variable {\\\ncolor: rgb(49, 132, 149);\\\n}\\\n.ace-tm .ace_xml-pe {\\\ncolor: rgb(104, 104, 91);\\\n}\\\n.ace-tm .ace_entity.ace_name.ace_function {\\\ncolor: #0000A2;\\\n}\\\n.ace-tm .ace_heading {\\\ncolor: rgb(12, 7, 255);\\\n}\\\n.ace-tm .ace_list {\\\ncolor:rgb(185, 6, 144);\\\n}\\\n.ace-tm .ace_meta.ace_tag {\\\ncolor:rgb(0, 22, 142);\\\n}\\\n.ace-tm .ace_string.ace_regex {\\\ncolor: rgb(255, 0, 0)\\\n}\\\n.ace-tm .ace_marker-layer .ace_selection {\\\nbackground: rgb(181, 213, 255);\\\n}\\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\\nbox-shadow: 0 0 3px 0px white;\\\n}\\\n.ace-tm .ace_marker-layer .ace_step {\\\nbackground: rgb(252, 255, 0);\\\n}\\\n.ace-tm .ace_marker-layer .ace_stack {\\\nbackground: rgb(164, 229, 101);\\\n}\\\n.ace-tm .ace_marker-layer .ace_bracket {\\\nmargin: -1px 0 0 -1px;\\\nborder: 1px solid rgb(192, 192, 192);\\\n}\\\n.ace-tm .ace_marker-layer .ace_active-line {\\\nbackground: rgba(0, 0, 0, 0.07);\\\n}\\\n.ace-tm .ace_gutter-active-line {\\\nbackground-color : #dcdcdc;\\\n}\\\n.ace-tm .ace_marker-layer .ace_selected-word {\\\nbackground: rgb(250, 250, 255);\\\nborder: 1px solid rgb(200, 200, 250);\\\n}\\\n.ace-tm .ace_indent-guide {\\\nbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\\n}\\\n\";\n\nvar dom = acequire(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass);\n});\n\nace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar dom = acequire(\"./lib/dom\");\nvar Range = acequire(\"./range\").Range;\n\n\nfunction LineWidgets(session) {\n this.session = session;\n this.session.widgetManager = this;\n this.session.getRowLength = this.getRowLength;\n this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n this.updateOnChange = this.updateOnChange.bind(this);\n this.renderWidgets = this.renderWidgets.bind(this);\n this.measureWidgets = this.measureWidgets.bind(this);\n this.session._changedWidgets = [];\n this.$onChangeEditor = this.$onChangeEditor.bind(this);\n \n this.session.on(\"change\", this.updateOnChange);\n this.session.on(\"changeFold\", this.updateOnFold);\n this.session.on(\"changeEditor\", this.$onChangeEditor);\n}\n\n(function() {\n this.getRowLength = function(row) {\n var h;\n if (this.lineWidgets)\n h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else \n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n } else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n\n this.$getWidgetScreenLength = function() {\n var screenRows = 0;\n this.lineWidgets.forEach(function(w){\n if (w && w.rowCount && !w.hidden)\n screenRows += w.rowCount;\n });\n return screenRows;\n }; \n \n this.$onChangeEditor = function(e) {\n this.attach(e.editor);\n };\n \n this.attach = function(editor) {\n if (editor && editor.widgetManager && editor.widgetManager != this)\n editor.widgetManager.detach();\n\n if (this.editor == editor)\n return;\n\n this.detach();\n this.editor = editor;\n \n if (editor) {\n editor.widgetManager = this;\n editor.renderer.on(\"beforeRender\", this.measureWidgets);\n editor.renderer.on(\"afterRender\", this.renderWidgets);\n }\n };\n this.detach = function(e) {\n var editor = this.editor;\n if (!editor)\n return;\n \n this.editor = null;\n editor.widgetManager = null;\n \n editor.renderer.off(\"beforeRender\", this.measureWidgets);\n editor.renderer.off(\"afterRender\", this.renderWidgets);\n var lineWidgets = this.session.lineWidgets;\n lineWidgets && lineWidgets.forEach(function(w) {\n if (w && w.el && w.el.parentNode) {\n w._inDocument = false;\n w.el.parentNode.removeChild(w.el);\n }\n });\n };\n\n this.updateOnFold = function(e, session) {\n var lineWidgets = session.lineWidgets;\n if (!lineWidgets || !e.action)\n return;\n var fold = e.data;\n var start = fold.start.row;\n var end = fold.end.row;\n var hide = e.action == \"add\";\n for (var i = start + 1; i < end; i++) {\n if (lineWidgets[i])\n lineWidgets[i].hidden = hide;\n }\n if (lineWidgets[end]) {\n if (hide) {\n if (!lineWidgets[start])\n lineWidgets[start] = lineWidgets[end];\n else\n lineWidgets[end].hidden = hide;\n } else {\n if (lineWidgets[start] == lineWidgets[end])\n lineWidgets[start] = undefined;\n lineWidgets[end].hidden = hide;\n }\n }\n };\n \n this.updateOnChange = function(delta) {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets) return;\n \n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n\n if (len === 0) {\n } else if (delta.action == 'remove') {\n var removed = lineWidgets.splice(startRow + 1, len);\n removed.forEach(function(w) {\n w && this.removeLineWidget(w);\n }, this);\n this.$updateRows();\n } else {\n var args = new Array(len);\n args.unshift(startRow, 0);\n lineWidgets.splice.apply(lineWidgets, args);\n this.$updateRows();\n }\n };\n \n this.$updateRows = function() {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets) return;\n var noWidgets = true;\n lineWidgets.forEach(function(w, i) {\n if (w) {\n noWidgets = false;\n w.row = i;\n while (w.$oldWidget) {\n w.$oldWidget.row = i;\n w = w.$oldWidget;\n }\n }\n });\n if (noWidgets)\n this.session.lineWidgets = null;\n };\n\n this.addLineWidget = function(w) {\n if (!this.session.lineWidgets)\n this.session.lineWidgets = new Array(this.session.getLength());\n \n var old = this.session.lineWidgets[w.row];\n if (old) {\n w.$oldWidget = old;\n if (old.el && old.el.parentNode) {\n old.el.parentNode.removeChild(old.el);\n old._inDocument = false;\n }\n }\n \n this.session.lineWidgets[w.row] = w;\n \n w.session = this.session;\n \n var renderer = this.editor.renderer;\n if (w.html && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.innerHTML = w.html;\n }\n if (w.el) {\n dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\n w.el.style.position = \"absolute\";\n w.el.style.zIndex = 5;\n renderer.container.appendChild(w.el);\n w._inDocument = true;\n }\n \n if (!w.coverGutter) {\n w.el.style.zIndex = 3;\n }\n if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n if (w.rowCount == null) {\n w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n }\n \n var fold = this.session.getFoldAt(w.row, 0);\n w.$fold = fold;\n if (fold) {\n var lineWidgets = this.session.lineWidgets;\n if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n lineWidgets[fold.start.row] = w;\n else\n w.hidden = true;\n }\n \n this.session._emit(\"changeFold\", {data:{start:{row: w.row}}});\n \n this.$updateRows();\n this.renderWidgets(null, renderer);\n this.onWidgetChanged(w);\n return w;\n };\n \n this.removeLineWidget = function(w) {\n w._inDocument = false;\n w.session = null;\n if (w.el && w.el.parentNode)\n w.el.parentNode.removeChild(w.el);\n if (w.editor && w.editor.destroy) try {\n w.editor.destroy();\n } catch(e){}\n if (this.session.lineWidgets) {\n var w1 = this.session.lineWidgets[w.row];\n if (w1 == w) {\n this.session.lineWidgets[w.row] = w.$oldWidget;\n if (w.$oldWidget)\n this.onWidgetChanged(w.$oldWidget);\n } else {\n while (w1) {\n if (w1.$oldWidget == w) {\n w1.$oldWidget = w.$oldWidget;\n break;\n }\n w1 = w1.$oldWidget;\n }\n }\n }\n this.session._emit(\"changeFold\", {data:{start:{row: w.row}}});\n this.$updateRows();\n };\n \n this.getWidgetsAtRow = function(row) {\n var lineWidgets = this.session.lineWidgets;\n var w = lineWidgets && lineWidgets[row];\n var list = [];\n while (w) {\n list.push(w);\n w = w.$oldWidget;\n }\n return list;\n };\n \n this.onWidgetChanged = function(w) {\n this.session._changedWidgets.push(w);\n this.editor && this.editor.renderer.updateFull();\n };\n \n this.measureWidgets = function(e, renderer) {\n var changedWidgets = this.session._changedWidgets;\n var config = renderer.layerConfig;\n \n if (!changedWidgets || !changedWidgets.length) return;\n var min = Infinity;\n for (var i = 0; i < changedWidgets.length; i++) {\n var w = changedWidgets[i];\n if (!w || !w.el) continue;\n if (w.session != this.session) continue;\n if (!w._inDocument) {\n if (this.session.lineWidgets[w.row] != w)\n continue;\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n \n w.h = w.el.offsetHeight;\n \n if (!w.fixedWidth) {\n w.w = w.el.offsetWidth;\n w.screenWidth = Math.ceil(w.w / config.characterWidth);\n }\n \n var rowCount = w.h / config.lineHeight;\n if (w.coverLine) {\n rowCount -= this.session.getRowLineCount(w.row);\n if (rowCount < 0)\n rowCount = 0;\n }\n if (w.rowCount != rowCount) {\n w.rowCount = rowCount;\n if (w.row < min)\n min = w.row;\n }\n }\n if (min != Infinity) {\n this.session._emit(\"changeFold\", {data:{start:{row: min}}});\n this.session.lineWidgetWidth = null;\n }\n this.session._changedWidgets = [];\n };\n \n this.renderWidgets = function(e, renderer) {\n var config = renderer.layerConfig;\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var first = Math.min(this.firstRow, config.firstRow);\n var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n \n while (first > 0 && !lineWidgets[first])\n first--;\n \n this.firstRow = config.firstRow;\n this.lastRow = config.lastRow;\n\n renderer.$cursorLayer.config = config;\n for (var i = first; i <= last; i++) {\n var w = lineWidgets[i];\n if (!w || !w.el) continue;\n if (w.hidden) {\n w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\n continue;\n }\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n var top = renderer.$cursorLayer.getPixelPosition({row: i, column:0}, true).top;\n if (!w.coverLine)\n top += config.lineHeight * this.session.getRowLineCount(w.row);\n w.el.style.top = top - config.offset + \"px\";\n \n var left = w.coverGutter ? 0 : renderer.gutterWidth;\n if (!w.fixedWidth)\n left -= renderer.scrollLeft;\n w.el.style.left = left + \"px\";\n \n if (w.fullWidth && w.screenWidth) {\n w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\n }\n \n if (w.fixedWidth) {\n w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\n } else {\n w.el.style.right = \"\";\n }\n }\n };\n \n}).call(LineWidgets.prototype);\n\n\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\nvar LineWidgets = acequire(\"../line_widgets\").LineWidgets;\nvar dom = acequire(\"../lib/dom\");\nvar Range = acequire(\"../range\").Range;\n\nfunction binarySearch(array, needle, comparator) {\n var first = 0;\n var last = array.length - 1;\n\n while (first <= last) {\n var mid = (first + last) >> 1;\n var c = comparator(needle, array[mid]);\n if (c > 0)\n first = mid + 1;\n else if (c < 0)\n last = mid - 1;\n else\n return mid;\n }\n return -(first + 1);\n}\n\nfunction findAnnotations(session, row, dir) {\n var annotations = session.getAnnotations().sort(Range.comparePoints);\n if (!annotations.length)\n return;\n \n var i = binarySearch(annotations, {row: row, column: -1}, Range.comparePoints);\n if (i < 0)\n i = -i - 1;\n \n if (i >= annotations.length)\n i = dir > 0 ? 0 : annotations.length - 1;\n else if (i === 0 && dir < 0)\n i = annotations.length - 1;\n \n var annotation = annotations[i];\n if (!annotation || !dir)\n return;\n\n if (annotation.row === row) {\n do {\n annotation = annotations[i += dir];\n } while (annotation && annotation.row === row);\n if (!annotation)\n return annotations.slice();\n }\n \n \n var matched = [];\n row = annotation.row;\n do {\n matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\n annotation = annotations[i += dir];\n } while (annotation && annotation.row == row);\n return matched.length && matched;\n}\n\nexports.showErrorMarker = function(editor, dir) {\n var session = editor.session;\n if (!session.widgetManager) {\n session.widgetManager = new LineWidgets(session);\n session.widgetManager.attach(editor);\n }\n \n var pos = editor.getCursorPosition();\n var row = pos.row;\n var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function(w) {\n return w.type == \"errorMarker\";\n })[0];\n if (oldWidget) {\n oldWidget.destroy();\n } else {\n row -= dir;\n }\n var annotations = findAnnotations(session, row, dir);\n var gutterAnno;\n if (annotations) {\n var annotation = annotations[0];\n pos.column = (annotation.pos && typeof annotation.column != \"number\"\n ? annotation.pos.sc\n : annotation.column) || 0;\n pos.row = annotation.row;\n gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n } else if (oldWidget) {\n return;\n } else {\n gutterAnno = {\n text: [\"Looks good!\"],\n className: \"ace_ok\"\n };\n }\n editor.session.unfold(pos.row);\n editor.selection.moveToPosition(pos);\n \n var w = {\n row: pos.row, \n fixedWidth: true,\n coverGutter: true,\n el: dom.createElement(\"div\"),\n type: \"errorMarker\"\n };\n var el = w.el.appendChild(dom.createElement(\"div\"));\n var arrow = w.el.appendChild(dom.createElement(\"div\"));\n arrow.className = \"error_widget_arrow \" + gutterAnno.className;\n \n var left = editor.renderer.$cursorLayer\n .getPixelPosition(pos).left;\n arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\n \n w.el.className = \"error_widget_wrapper\";\n el.className = \"error_widget \" + gutterAnno.className;\n el.innerHTML = gutterAnno.text.join(\"
\");\n \n el.appendChild(dom.createElement(\"div\"));\n \n var kb = function(_, hashId, keyString) {\n if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\n w.destroy();\n return {command: \"null\"};\n }\n };\n \n w.destroy = function() {\n if (editor.$mouseHandler.isMousePressed)\n return;\n editor.keyBinding.removeKeyboardHandler(kb);\n session.widgetManager.removeLineWidget(w);\n editor.off(\"changeSelection\", w.destroy);\n editor.off(\"changeSession\", w.destroy);\n editor.off(\"mouseup\", w.destroy);\n editor.off(\"change\", w.destroy);\n };\n \n editor.keyBinding.addKeyboardHandler(kb);\n editor.on(\"changeSelection\", w.destroy);\n editor.on(\"changeSession\", w.destroy);\n editor.on(\"mouseup\", w.destroy);\n editor.on(\"change\", w.destroy);\n \n editor.session.widgetManager.addLineWidget(w);\n \n w.el.onmousedown = editor.focus.bind(editor);\n \n editor.renderer.scrollCursorIntoView(null, 0.5, {bottom: w.el.offsetHeight});\n};\n\n\ndom.importCssString(\"\\\n .error_widget_wrapper {\\\n background: inherit;\\\n color: inherit;\\\n border:none\\\n }\\\n .error_widget {\\\n border-top: solid 2px;\\\n border-bottom: solid 2px;\\\n margin: 5px 0;\\\n padding: 10px 40px;\\\n white-space: pre-wrap;\\\n }\\\n .error_widget.ace_error, .error_widget_arrow.ace_error{\\\n border-color: #ff5a5a\\\n }\\\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\\n border-color: #F1D817\\\n }\\\n .error_widget.ace_info, .error_widget_arrow.ace_info{\\\n border-color: #5a5a5a\\\n }\\\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\\n border-color: #5aaa5a\\\n }\\\n .error_widget_arrow {\\\n position: absolute;\\\n border: solid 5px;\\\n border-top-color: transparent!important;\\\n border-right-color: transparent!important;\\\n border-left-color: transparent!important;\\\n top: -5px;\\\n }\\\n\", \"\");\n\n});\n\nace.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/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\"], function(acequire, exports, module) {\n\"use strict\";\n\nacequire(\"./lib/fixoldbrowsers\");\n\nvar dom = acequire(\"./lib/dom\");\nvar event = acequire(\"./lib/event\");\n\nvar Editor = acequire(\"./editor\").Editor;\nvar EditSession = acequire(\"./edit_session\").EditSession;\nvar UndoManager = acequire(\"./undomanager\").UndoManager;\nvar Renderer = acequire(\"./virtual_renderer\").VirtualRenderer;\nacequire(\"./worker/worker_client\");\nacequire(\"./keyboard/hash_handler\");\nacequire(\"./placeholder\");\nacequire(\"./multi_select\");\nacequire(\"./mode/folding/fold_mode\");\nacequire(\"./theme/textmate\");\nacequire(\"./ext/error_marker\");\n\nexports.config = acequire(\"./config\");\nexports.acequire = acequire;\n\nif (typeof define === \"function\")\n exports.define = define;\nexports.edit = function(el) {\n if (typeof el == \"string\") {\n var _id = el;\n el = document.getElementById(_id);\n if (!el)\n throw new Error(\"ace.edit can't find div #\" + _id);\n }\n\n if (el && el.env && el.env.editor instanceof Editor)\n return el.env.editor;\n\n var value = \"\";\n if (el && /input|textarea/i.test(el.tagName)) {\n var oldNode = el;\n value = oldNode.value;\n el = dom.createElement(\"pre\");\n oldNode.parentNode.replaceChild(el, oldNode);\n } else if (el) {\n value = dom.getInnerText(el);\n el.innerHTML = \"\";\n }\n\n var doc = exports.createEditSession(value);\n\n var editor = new Editor(new Renderer(el));\n editor.setSession(doc);\n\n var env = {\n document: doc,\n editor: editor,\n onResize: editor.resize.bind(editor, null)\n };\n if (oldNode) env.textarea = oldNode;\n event.addListener(window, \"resize\", env.onResize);\n editor.on(\"destroy\", function() {\n event.removeListener(window, \"resize\", env.onResize);\n env.editor.container.env = null; // prevent memory leak on old ie\n });\n editor.container.env = editor.env = env;\n return editor;\n};\nexports.createEditSession = function(text, mode) {\n var doc = new EditSession(text, mode);\n doc.setUndoManager(new UndoManager());\n return doc;\n};\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\nexports.version = \"1.2.9\";\n});\n (function() {\n ace.acequire([\"ace/ace\"], function(a) {\n if (a) {\n a.config.init(true);\n a.define = ace.define;\n }\n if (!window.ace)\n window.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n window.ace[key] = a[key];\n });\n })();\n \nmodule.exports = window.ace.acequire(\"ace/ace\");","'use strict'\n\nconst Base = require('./base.js')\nconst baseX = require('base-x')\nconst base16 = require('./base16')\nconst base32 = require('./base32')\nconst base64 = require('./base64')\n\n// name, code, implementation, alphabet\nconst constants = [\n ['base1', '1', '', '1'],\n ['base2', '0', baseX, '01'],\n ['base8', '7', baseX, '01234567'],\n ['base10', '9', baseX, '0123456789'],\n ['base16', 'f', base16, '0123456789abcdef'],\n ['base32', 'b', base32, 'abcdefghijklmnopqrstuvwxyz234567'],\n ['base32pad', 'c', base32, 'abcdefghijklmnopqrstuvwxyz234567='],\n ['base32hex', 'v', base32, '0123456789abcdefghijklmnopqrstuv'],\n ['base32hexpad', 't', base32, '0123456789abcdefghijklmnopqrstuv='],\n ['base32z', 'h', base32, 'ybndrfg8ejkmcpqxot1uwisza345h769'],\n ['base58flickr', 'Z', baseX, '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'],\n ['base58btc', 'z', baseX, '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'],\n ['base64', 'm', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'],\n ['base64pad', 'M', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='],\n ['base64url', 'u', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'],\n ['base64urlpad', 'U', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=']\n]\n\nconst names = constants.reduce((prev, tupple) => {\n prev[tupple[0]] = new Base(tupple[0], tupple[1], tupple[2], tupple[3])\n return prev\n}, {})\n\nconst codes = constants.reduce((prev, tupple) => {\n prev[tupple[1]] = names[tupple[0]]\n return prev\n}, {})\n\nmodule.exports = {\n names: names,\n codes: codes\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst toIterable = require('stream-to-it/source')\nconst configure = require('../lib/configure')\nconst toUrlSearchParams = require('../lib/to-url-search-params')\n\nmodule.exports = configure(api => {\n return async function * read (path, options = {}) {\n const res = await api.post('files/read', {\n timeout: options.timeout,\n signal: options.signal,\n searchParams: toUrlSearchParams({\n arg: path,\n count: options.count || options.length,\n ...options\n }),\n headers: options.headers\n })\n\n for await (const chunk of toIterable(res.body)) {\n yield Buffer.from(chunk)\n }\n }\n})\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","'use strict'\n\nconst configure = require('../lib/configure')\nconst toUrlSearchParams = require('../lib/to-url-search-params')\n\nmodule.exports = configure(api => {\n return async (options = {}) => {\n const res = await api.post('bootstrap/list', {\n timeout: options.timeout,\n signal: options.signal,\n searchParams: toUrlSearchParams(options),\n headers: options.headers\n })\n\n return res.json()\n }\n})\n","'use strict'\n\nconst multiaddr = require('multiaddr')\nconst configure = require('../lib/configure')\nconst toUrlSearchParams = require('../lib/to-url-search-params')\n\nmodule.exports = configure(api => {\n return async (options = {}) => {\n const res = await (await api.post('swarm/peers', {\n timeout: options.timeout,\n signal: options.signal,\n searchParams: toUrlSearchParams(options),\n headers: options.headers\n })).json()\n\n return (res.Peers || []).map(peer => {\n const info = {}\n try {\n info.addr = multiaddr(peer.Addr)\n info.peer = peer.Peer\n } catch (error) {\n info.error = error\n info.rawPeerInfo = peer\n }\n if (peer.Muxer) {\n info.muxer = peer.Muxer\n }\n if (peer.Latency) {\n info.latency = peer.Latency\n }\n if (peer.Streams) {\n info.streams = peer.Streams\n }\n if (peer.Direction != null) {\n info.direction = peer.Direction\n }\n return info\n })\n }\n})\n","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","var parse = require('./parse')\nvar stringify = require('./stringify')\n\nmodule.exports = parse\nmodule.exports.parse = parse\nmodule.exports.stringify = stringify\n","'use strict'\n\nconst { Buffer } = require('buffer')\n\nconst fromNumberTo32BitBuf = (number) => {\n const bytes = new Array(4)\n\n for (let i = 0; i < 4; i++) {\n bytes[i] = number & 0xff\n number = number >> 8\n }\n\n return Buffer.from(bytes)\n}\n\nmodule.exports = {\n fromNumberTo32BitBuf\n}\n","'use strict'\n/* eslint-env browser */\nconst Multiaddr = require('multiaddr')\nconst toUri = require('multiaddr-to-uri')\nconst { isBrowser, isWebWorker } = require('ipfs-utils/src/env')\nconst { URL } = require('iso-url')\nconst parseDuration = require('parse-duration').default\nconst log = require('debug')('ipfs-http-client:lib:error-handler')\nconst HTTP = require('ipfs-utils/src/http')\nconst merge = require('merge-options')\n\nconst isMultiaddr = (input) => {\n try {\n Multiaddr(input) // eslint-disable-line no-new\n return true\n } catch (e) {\n return false\n }\n}\n\nconst normalizeInput = (options = {}) => {\n if (isMultiaddr(options)) {\n options = { url: toUri(options) }\n } else if (typeof options === 'string') {\n options = { url: options }\n }\n\n const url = new URL(options.url)\n if (options.apiPath) {\n url.pathname = options.apiPath\n } else if (url.pathname === '/' || url.pathname === undefined) {\n url.pathname = 'api/v0'\n }\n if (!options.url) {\n if (isBrowser || isWebWorker) {\n url.protocol = options.protocol || location.protocol\n url.hostname = options.host || location.hostname\n url.port = options.port || location.port\n } else {\n url.hostname = options.host || 'localhost'\n url.port = options.port || '5001'\n url.protocol = options.protocol || 'http'\n }\n }\n options.url = url\n\n return options\n}\n\nconst errorHandler = async (response) => {\n let msg\n\n try {\n if ((response.headers.get('Content-Type') || '').startsWith('application/json')) {\n const data = await response.json()\n log(data)\n msg = data.Message || data.message\n } else {\n msg = await response.text()\n }\n } catch (err) {\n log('Failed to parse error response', err)\n // Failed to extract/parse error message from response\n msg = err.message\n }\n\n let error = new HTTP.HTTPError(response)\n\n // This is what go-ipfs returns where there's a timeout\n if (msg && msg.includes('context deadline exceeded')) {\n error = new HTTP.TimeoutError(response)\n }\n\n // If we managed to extract a message from the response, use it\n if (msg) {\n error.message = msg\n }\n\n throw error\n}\n\nconst KEBAB_REGEX = /[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g\nconst kebabCase = (str) => {\n return str.replace(KEBAB_REGEX, function (match) {\n return '-' + match.toLowerCase()\n })\n}\n\nconst parseTimeout = (value) => {\n return typeof value === 'string' ? parseDuration(value) : value\n}\n\n/**\n * @typedef {Object} ClientOptions\n * @prop {string} [host]\n * @prop {number} [port]\n * @prop {string} [protocol]\n * @prop {Headers|Record} [headers] - Request headers.\n * @prop {number|string} [timeout] - Amount of time until request should timeout in ms or humand readable. https://www.npmjs.com/package/parse-duration for valid string values.\n * @prop {string} [apiPath] - Path to the API.\n * @prop {URL|string} [url] - Full API URL.\n */\n\nclass Client extends HTTP {\n /**\n *\n * @param {ClientOptions|URL|Multiaddr|string} options\n */\n constructor (options = {}) {\n /** @type {ClientOptions} */\n const opts = normalizeInput(options)\n super({\n timeout: parseTimeout(opts.timeout) || 60000 * 20,\n headers: opts.headers,\n base: normalizeInput(opts.url).toString(),\n handleError: errorHandler,\n transformSearchParams: (search) => {\n const out = new URLSearchParams()\n\n // @ts-ignore https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams\n for (const [key, value] of search) {\n if (\n value !== 'undefined' &&\n value !== 'null' &&\n key !== 'signal'\n ) {\n out.append(kebabCase(key), value)\n }\n\n // server timeouts are strings\n if (key === 'timeout' && !isNaN(value)) {\n out.append(kebabCase(key), value)\n }\n }\n\n return out\n }\n })\n\n delete this.get\n delete this.put\n delete this.delete\n delete this.options\n\n const fetch = this.fetch\n\n this.fetch = (resource, options = {}) => {\n return fetch.call(this, resource, merge(options, {\n method: 'POST'\n }))\n }\n }\n}\n\nClient.errorHandler = errorHandler\n\nmodule.exports = Client\n","'use strict'\n\nconst toCamel = require('../lib/object-to-camel')\nconst configure = require('../lib/configure')\nconst toUrlSearchParams = require('../lib/to-url-search-params')\n\nmodule.exports = configure(api => {\n return async function * refsLocal (options = {}) {\n const res = await api.post('refs/local', {\n timeout: options.timeout,\n signal: options.signal,\n transform: toCamel,\n searchParams: toUrlSearchParams(options),\n headers: options.headers\n })\n\n yield * res.ndjson()\n }\n})\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var onfield = function (f, result) {\n var prefix = f.repeated ? 'repeated' : f.required ? 'required' : 'optional'\n if (f.type === 'map') prefix = 'map<' + f.map.from + ',' + f.map.to + '>'\n if (f.oneof) prefix = ''\n\n var opts = Object.keys(f.options || {}).map(function (key) {\n return key + ' = ' + f.options[key]\n }).join(',')\n\n if (opts) opts = ' [' + opts + ']'\n\n result.push((prefix ? prefix + ' ' : '') + (f.map === 'map' ? '' : f.type + ' ') + f.name + ' = ' + f.tag + opts + ';')\n return result\n}\n\nvar onmessage = function (m, result) {\n result.push('message ' + m.name + ' {')\n\n if (!m.options) m.options = {}\n onoption(m.options, result)\n\n if (!m.enums) m.enums = []\n m.enums.forEach(function (e) {\n result.push(onenum(e, []))\n })\n\n if (!m.messages) m.messages = []\n m.messages.forEach(function (m) {\n result.push(onmessage(m, []))\n })\n\n var oneofs = {}\n\n if (!m.fields) m.fields = []\n m.fields.forEach(function (f) {\n if (f.oneof) {\n if (!oneofs[f.oneof]) oneofs[f.oneof] = []\n oneofs[f.oneof].push(onfield(f, []))\n } else {\n result.push(onfield(f, []))\n }\n })\n\n Object.keys(oneofs).forEach(function (n) {\n oneofs[n].unshift('oneof ' + n + ' {')\n oneofs[n].push('}')\n result.push(oneofs[n])\n })\n\n result.push('}', '')\n return result\n}\n\nvar onenum = function (e, result) {\n result.push('enum ' + e.name + ' {')\n if (!e.options) e.options = {}\n var options = onoption(e.options, [])\n if (options.length > 1) {\n result.push(options.slice(0, -1))\n }\n Object.keys(e.values).map(function (v) {\n var val = onenumvalue(e.values[v])\n result.push([v + ' = ' + val + ';'])\n })\n result.push('}', '')\n return result\n}\n\nvar onenumvalue = function (v, result) {\n var opts = Object.keys(v.options || {}).map(function (key) {\n return key + ' = ' + v.options[key]\n }).join(',')\n\n if (opts) opts = ' [' + opts + ']'\n var val = v.value + opts\n return val\n}\n\nvar onoption = function (o, result) {\n var keys = Object.keys(o)\n keys.forEach(function (option) {\n var v = o[option]\n if (~option.indexOf('.')) option = '(' + option + ')'\n\n var type = typeof v\n\n if (type === 'object') {\n v = onoptionMap(v, [])\n if (v.length) result.push('option ' + option + ' = {', v, '};')\n } else {\n if (type === 'string' && option !== 'optimize_for') v = '\"' + v + '\"'\n result.push('option ' + option + ' = ' + v + ';')\n }\n })\n if (keys.length > 0) {\n result.push('')\n }\n\n return result\n}\n\nvar onoptionMap = function (o, result) {\n var keys = Object.keys(o)\n keys.forEach(function (k) {\n var v = o[k]\n\n var type = typeof v\n\n if (type === 'object') {\n if (Array.isArray(v)) {\n v.forEach(function (v) {\n v = onoptionMap(v, [])\n if (v.length) result.push(k + ' {', v, '}')\n })\n } else {\n v = onoptionMap(v, [])\n if (v.length) result.push(k + ' {', v, '}')\n }\n } else {\n if (type === 'string') v = '\"' + v + '\"'\n result.push(k + ': ' + v)\n }\n })\n\n return result\n}\n\nvar onservices = function (s, result) {\n result.push('service ' + s.name + ' {')\n\n if (!s.options) s.options = {}\n onoption(s.options, result)\n if (!s.methods) s.methods = []\n s.methods.forEach(function (m) {\n result.push(onrpc(m, []))\n })\n\n result.push('}', '')\n return result\n}\n\nvar onrpc = function (rpc, result) {\n var def = 'rpc ' + rpc.name + '('\n if (rpc.client_streaming) def += 'stream '\n def += rpc.input_type + ') returns ('\n if (rpc.server_streaming) def += 'stream '\n def += rpc.output_type + ')'\n\n if (!rpc.options) rpc.options = {}\n\n var options = onoption(rpc.options, [])\n if (options.length > 1) {\n result.push(def + ' {', options.slice(0, -1), '}')\n } else {\n result.push(def + ';')\n }\n\n return result\n}\n\nvar indent = function (lvl) {\n return function (line) {\n if (Array.isArray(line)) return line.map(indent(lvl + ' ')).join('\\n')\n return lvl + line\n }\n}\n\nmodule.exports = function (schema) {\n var result = []\n\n result.push('syntax = \"proto' + schema.syntax + '\";', '')\n\n if (schema.package) result.push('package ' + schema.package + ';', '')\n\n if (!schema.options) schema.options = {}\n\n onoption(schema.options, result)\n\n if (!schema.enums) schema.enums = []\n schema.enums.forEach(function (e) {\n onenum(e, result)\n })\n\n if (!schema.messages) schema.messages = []\n schema.messages.forEach(function (m) {\n onmessage(m, result)\n })\n\n if (schema.services) {\n schema.services.forEach(function (s) {\n onservices(s, result)\n })\n }\n return result.map(indent('')).join('\\n')\n}\n","'use strict'\n\nconst toCamel = require('../lib/object-to-camel')\nconst configure = require('../lib/configure')\nconst toUrlSearchParams = require('../lib/to-url-search-params')\n\nmodule.exports = configure(api => {\n return async (name, options = {}) => {\n const res = await api.post('key/rm', {\n timeout: options.timeout,\n signal: options.signal,\n searchParams: toUrlSearchParams({\n arg: name,\n ...options\n }),\n headers: options.headers\n })\n const data = await res.json()\n\n return toCamel(data.Keys[0])\n }\n})\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst CID = require('cids')\nconst configure = require('../lib/configure')\nconst toUrlSearchParams = require('../lib/to-url-search-params')\n\nmodule.exports = configure(api => {\n return async function data (cid, options = {}) {\n const res = await api.post('object/data', {\n timeout: options.timeout,\n signal: options.signal,\n searchParams: toUrlSearchParams({\n arg: `${Buffer.isBuffer(cid) ? new CID(cid) : cid}`,\n ...options\n }),\n headers: options.headers\n })\n const data = await res.arrayBuffer()\n\n return Buffer.from(data)\n }\n})\n","'use strict'\n/* eslint-env browser */\n\nmodule.exports = AbortController\n","'use strict'\n\nconst Block = require('ipld-block')\nconst CID = require('cids')\nconst { Buffer } = require('buffer')\nconst configure = require('../lib/configure')\nconst toUrlSearchParams = require('../lib/to-url-search-params')\n\nmodule.exports = configure(api => {\n return async (cid, options = {}) => {\n cid = new CID(cid)\n\n const res = await api.post('block/get', {\n timeout: options.timeout,\n signal: options.signal,\n searchParams: toUrlSearchParams({\n arg: cid.toString(),\n ...options\n }),\n headers: options.headers\n })\n\n return new Block(Buffer.from(await res.arrayBuffer()), cid)\n }\n})\n","'use strict'\n\nconst CID = require('cids')\nconst multiaddr = require('multiaddr')\nconst configure = require('../lib/configure')\nconst toUrlSearchParams = require('../lib/to-url-search-params')\nconst { Provider } = require('./response-types')\n\nmodule.exports = configure(api => {\n return async function * findProvs (cid, options = {}) {\n const res = await api.post('dht/findprovs', {\n timeout: options.timeout,\n signal: options.signal,\n searchParams: toUrlSearchParams({\n arg: `${new CID(cid)}`,\n ...options\n }),\n headers: options.headers\n })\n\n for await (const message of res.ndjson()) {\n if (message.Type === Provider && message.Responses) {\n for (const { ID, Addrs } of message.Responses) {\n yield {\n id: ID,\n addrs: (Addrs || []).map(a => multiaddr(a))\n }\n }\n }\n }\n }\n})\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst errcode = require('err-code')\nconst multihash = require('multihashes')\nconst crypto = require('./crypto')\n\n/**\n * Hash the given `buf` using the algorithm specified by `alg`.\n * @param {Buffer} buf - The value to hash.\n * @param {number|string} alg - The algorithm to use eg 'sha1'\n * @param {number} [length] - Optionally trim the result to this length.\n * @returns {Promise}\n */\nasync function Multihashing (buf, alg, length) {\n const digest = await Multihashing.digest(buf, alg, length)\n return multihash.encode(digest, alg, length)\n}\n\n/**\n * The `buffer` module for easy use in the browser.\n *\n * @type {Buffer}\n */\nMultihashing.Buffer = Buffer // for browser things\n\n/**\n * Expose multihash itself, to avoid silly double requires.\n */\nMultihashing.multihash = multihash\n\n/**\n * @param {Buffer} buf - The value to hash.\n * @param {number|string} alg - The algorithm to use eg 'sha1'\n * @param {number} [length] - Optionally trim the result to this length.\n * @returns {Promise}\n */\nMultihashing.digest = async (buf, alg, length) => {\n const hash = Multihashing.createHash(alg)\n const digest = await hash(buf)\n return length ? digest.slice(0, length) : digest\n}\n\n/**\n * Creates a function that hashes with the given algorithm\n *\n * @param {string|number} alg - The algorithm to use eg 'sha1'\n *\n * @returns {function} - The hash function corresponding to `alg`\n */\nMultihashing.createHash = function (alg) {\n if (!alg) {\n throw errcode(new Error('hash algorithm must be specified'), 'ERR_HASH_ALGORITHM_NOT_SPECIFIED')\n }\n\n alg = multihash.coerceCode(alg)\n if (!Multihashing.functions[alg]) {\n throw errcode(new Error(`multihash function '${alg}' not yet supported`), 'ERR_HASH_ALGORITHM_NOT_SUPPORTED')\n }\n\n return Multihashing.functions[alg]\n}\n\n/**\n * Mapping of multihash codes to their hashing functions.\n * @type {Object}\n */\nMultihashing.functions = {\n // identity\n 0x00: crypto.identity,\n // sha1\n 0x11: crypto.sha1,\n // sha2-256\n 0x12: crypto.sha2256,\n // sha2-512\n 0x13: crypto.sha2512,\n // sha3-512\n 0x14: crypto.sha3512,\n // sha3-384\n 0x15: crypto.sha3384,\n // sha3-256\n 0x16: crypto.sha3256,\n // sha3-224\n 0x17: crypto.sha3224,\n // shake-128\n 0x18: crypto.shake128,\n // shake-256\n 0x19: crypto.shake256,\n // keccak-224\n 0x1A: crypto.keccak224,\n // keccak-256\n 0x1B: crypto.keccak256,\n // keccak-384\n 0x1C: crypto.keccak384,\n // keccak-512\n 0x1D: crypto.keccak512,\n // murmur3-128\n 0x22: crypto.murmur3128,\n // murmur3-32\n 0x23: crypto.murmur332,\n // dbl-sha2-256\n 0x56: crypto.dblSha2256\n}\n\n// add blake functions\ncrypto.addBlake(Multihashing.functions)\n\nMultihashing.validate = async (buf, hash) => {\n const newHash = await Multihashing(buf, multihash.decode(hash).name)\n\n return Buffer.compare(hash, newHash) === 0\n}\n\nmodule.exports = Multihashing\n","'use strict'\n\nconst CID = require('cids')\nconst withIs = require('class-is')\nconst { Buffer } = require('buffer')\n\n// Link represents an IPFS Merkle DAG Link between Nodes.\nclass DAGLink {\n constructor (name, size, cid) {\n if (!cid) {\n throw new Error('A link requires a cid to point to')\n }\n\n // assert(size, 'A link requires a size')\n // note - links should include size, but this assert is disabled\n // for now to maintain consistency with go-ipfs pinset\n\n Object.defineProperties(this, {\n Name: { value: name || '', writable: false, enumerable: true },\n Tsize: { value: size, writable: false, enumerable: true },\n Hash: { value: new CID(cid), writable: false, enumerable: true },\n _nameBuf: { value: null, writable: true, enumerable: false }\n })\n }\n\n toString () {\n return `DAGLink <${this.Hash.toBaseEncodedString()} - name: \"${this.Name}\", size: ${this.Tsize}>`\n }\n\n toJSON () {\n if (!this._json) {\n this._json = Object.freeze({\n name: this.Name,\n size: this.Tsize,\n cid: this.Hash.toBaseEncodedString()\n })\n }\n\n return Object.assign({}, this._json)\n }\n\n // Memoize the Buffer representation of name\n // We need this to sort the links, otherwise\n // we will reallocate new buffers every time\n get nameAsBuffer () {\n if (this._nameBuf !== null) {\n return this._nameBuf\n }\n\n this._nameBuf = Buffer.from(this.Name)\n return this._nameBuf\n }\n}\n\nexports = module.exports = withIs(DAGLink, { className: 'DAGLink', symbolName: '@ipld/js-ipld-dag-pb/daglink' })\n","const { Buffer } = require('buffer')\nconst BufferList = require('bl/BufferList')\n\nvar ZERO_OFFSET = '0'.charCodeAt(0)\nvar USTAR_MAGIC = Buffer.from('ustar\\x00', 'binary')\nvar GNU_MAGIC = Buffer.from('ustar\\x20', 'binary')\nvar GNU_VER = Buffer.from('\\x20\\x00', 'binary')\nvar MAGIC_OFFSET = 257\nvar VERSION_OFFSET = 263\n\nvar clamp = function (index, len, defaultValue) {\n if (typeof index !== 'number') return defaultValue\n index = ~~index // Coerce to integer.\n if (index >= len) return len\n if (index >= 0) return index\n index += len\n if (index >= 0) return index\n return 0\n}\n\nvar toType = function (flag) {\n switch (flag) {\n case 0:\n return 'file'\n case 1:\n return 'link'\n case 2:\n return 'symlink'\n case 3:\n return 'character-device'\n case 4:\n return 'block-device'\n case 5:\n return 'directory'\n case 6:\n return 'fifo'\n case 7:\n return 'contiguous-file'\n case 72:\n return 'pax-header'\n case 55:\n return 'pax-global-header'\n case 27:\n return 'gnu-long-link-path'\n case 28:\n case 30:\n return 'gnu-long-path'\n }\n\n return null\n}\n\nvar indexOf = function (block, num, offset, end) {\n for (; offset < end; offset++) {\n if (block.get(offset) === num) return offset\n }\n return end\n}\n\nvar cksum = function (block) {\n var sum = 8 * 32\n for (var i = 0; i < 148; i++) sum += block.get(i)\n for (var j = 156; j < 512; j++) sum += block.get(j)\n return sum\n}\n\n/* Copied from the node-tar repo and modified to meet\n * tar-stream coding standard.\n *\n * Source: https://github.com/npm/node-tar/blob/51b6627a1f357d2eb433e7378e5f05e83b7aa6cd/lib/header.js#L349\n */\nfunction parse256 (buf) {\n // first byte MUST be either 80 or FF\n // 80 for positive, FF for 2's comp\n var positive\n if (buf.get(0) === 0x80) positive = true\n else if (buf.get(0) === 0xFF) positive = false\n else return null\n\n // build up a base-256 tuple from the least sig to the highest\n var zero = false\n var tuple = []\n for (var i = buf.length - 1; i > 0; i--) {\n var byte = buf.get(i)\n if (positive) tuple.push(byte)\n else if (zero && byte === 0) tuple.push(0)\n else if (zero) {\n zero = false\n tuple.push(0x100 - byte)\n } else tuple.push(0xFF - byte)\n }\n\n var sum = 0\n var l = tuple.length\n for (i = 0; i < l; i++) {\n sum += tuple[i] * Math.pow(256, i)\n }\n\n return positive ? sum : -1 * sum\n}\n\nvar decodeOct = function (val, offset, length) {\n val = val.shallowSlice(offset, offset + length)\n offset = 0\n\n // If prefixed with 0x80 then parse as a base-256 integer\n if (val.get(offset) & 0x80) {\n return parse256(val)\n } else {\n // Older versions of tar can prefix with spaces\n while (offset < val.length && val.get(offset) === 32) offset++\n var end = clamp(indexOf(val, 32, offset, val.length), val.length, val.length)\n while (offset < end && val.get(offset) === 0) offset++\n if (end === offset) return 0\n return parseInt(val.shallowSlice(offset, end).toString(), 8)\n }\n}\n\nvar decodeStr = function (val, offset, length, encoding) {\n return val.shallowSlice(offset, indexOf(val, 0, offset, offset + length)).toString(encoding)\n}\n\nexports.decodeLongPath = function (buf, encoding) {\n buf = BufferList.isBufferList(buf) ? buf : new BufferList(buf)\n return decodeStr(buf, 0, buf.length, encoding)\n}\n\nexports.decodePax = function (buf) {\n buf = BufferList.isBufferList(buf) ? buf : new BufferList(buf)\n var result = {}\n\n while (buf.length) {\n var i = 0\n while (i < buf.length && buf.get(i) !== 32) i++\n var len = parseInt(buf.shallowSlice(0, i).toString(), 10)\n if (!len) return result\n\n var b = buf.shallowSlice(i + 1, len - 1).toString()\n var keyIndex = b.indexOf('=')\n if (keyIndex === -1) return result\n result[b.slice(0, keyIndex)] = b.slice(keyIndex + 1)\n\n buf = buf.shallowSlice(len)\n }\n\n return result\n}\n\nexports.decode = function (buf, filenameEncoding) {\n buf = BufferList.isBufferList(buf) ? buf : new BufferList(buf)\n var typeflag = buf.get(156) === 0 ? 0 : buf.get(156) - ZERO_OFFSET\n\n var name = decodeStr(buf, 0, 100, filenameEncoding)\n var mode = decodeOct(buf, 100, 8)\n var uid = decodeOct(buf, 108, 8)\n var gid = decodeOct(buf, 116, 8)\n var size = decodeOct(buf, 124, 12)\n var mtime = decodeOct(buf, 136, 12)\n var type = toType(typeflag)\n var linkname = buf.get(157) === 0 ? null : decodeStr(buf, 157, 100, filenameEncoding)\n var uname = decodeStr(buf, 265, 32)\n var gname = decodeStr(buf, 297, 32)\n var devmajor = decodeOct(buf, 329, 8)\n var devminor = decodeOct(buf, 337, 8)\n\n var c = cksum(buf)\n\n // checksum is still initial value if header was null.\n if (c === 8 * 32) return null\n\n // valid checksum\n if (c !== decodeOct(buf, 148, 8)) throw new Error('Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?')\n\n if (USTAR_MAGIC.compare(buf.slice(MAGIC_OFFSET, MAGIC_OFFSET + 6)) === 0) {\n // ustar (posix) format.\n // prepend prefix, if present.\n if (buf.get(345)) name = decodeStr(buf, 345, 155, filenameEncoding) + '/' + name\n } else if (GNU_MAGIC.compare(buf.slice(MAGIC_OFFSET, MAGIC_OFFSET + 6)) === 0 &&\n GNU_VER.compare(buf.slice(VERSION_OFFSET, VERSION_OFFSET + 2)) === 0) {\n // 'gnu'/'oldgnu' format. Similar to ustar, but has support for incremental and\n // multi-volume tarballs.\n } else {\n throw new Error('Invalid tar header: unknown format.')\n }\n\n // to support old tar versions that use trailing / to indicate dirs\n if (typeflag === 0 && name && name[name.length - 1] === '/') typeflag = 5\n\n return {\n name: name,\n mode: mode,\n uid: uid,\n gid: gid,\n size: size,\n mtime: new Date(1000 * mtime),\n type: type,\n linkname: linkname,\n uname: uname,\n gname: gname,\n devmajor: devmajor,\n devminor: devminor\n }\n}\n","'use strict';\n\nmodule.exports = value => {\n\tif (Object.prototype.toString.call(value) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn prototype === null || prototype === Object.prototype;\n};\n","'use strict'\n\nconst withIs = require('class-is')\nconst { Buffer } = require('buffer')\nconst sortLinks = require('./sortLinks')\nconst DAGLink = require('../dag-link/dagLink')\nconst { serializeDAGNode } = require('../serialize.js')\nconst toDAGLink = require('./toDagLink')\nconst addLink = require('./addLink')\nconst rmLink = require('./rmLink')\n\nclass DAGNode {\n constructor (data, links = [], serializedSize = null) {\n if (!data) {\n data = Buffer.alloc(0)\n }\n if (typeof data === 'string') {\n data = Buffer.from(data)\n }\n if (!Buffer.isBuffer(data)) {\n throw new Error('Passed \\'data\\' is not a buffer or a string!')\n }\n\n if (serializedSize !== null && typeof serializedSize !== 'number') {\n throw new Error('Passed \\'serializedSize\\' must be a number!')\n }\n\n links = links.map((link) => {\n return DAGLink.isDAGLink(link)\n ? link\n : DAGLink.util.createDagLinkFromB58EncodedHash(link)\n })\n sortLinks(links)\n\n Object.defineProperties(this, {\n Data: { value: data, writable: false, enumerable: true },\n Links: { value: links, writable: false, enumerable: true },\n _serializedSize: { value: serializedSize, writable: true, enumerable: false },\n _size: { value: null, writable: true, enumerable: false }\n })\n }\n\n toJSON () {\n if (!this._json) {\n this._json = Object.freeze({\n data: this.Data,\n links: this.Links.map((l) => l.toJSON()),\n size: this.size\n })\n }\n\n return Object.assign({}, this._json)\n }\n\n toString () {\n return `DAGNode `\n }\n\n _invalidateCached () {\n this._serializedSize = null\n this._size = null\n }\n\n addLink (link) {\n this._invalidateCached()\n return addLink(this, link)\n }\n\n rmLink (link) {\n this._invalidateCached()\n return rmLink(this, link)\n }\n\n // @returns {Promise.}\n toDAGLink (options) {\n return toDAGLink(this, options)\n }\n\n serialize () {\n return serializeDAGNode(this)\n }\n\n get size () {\n if (this._size === null) {\n if (this._serializedSize === null) {\n this._serializedSize = this.serialize().length\n }\n this._size = this.Links.reduce((sum, l) => sum + l.Tsize, this._serializedSize)\n }\n\n return this._size\n }\n\n set size (size) {\n throw new Error(\"Can't set property: 'size' is immutable\")\n }\n}\n\nexports = module.exports = withIs(DAGNode, { className: 'DAGNode', symbolName: '@ipld/js-ipld-dag-pb/dagnode' })\n","'use strict'\n\nconst errCode = require('err-code')\nconst { Blob } = require('ipfs-utils/src/globalthis')\nconst itPeekable = require('it-peekable')\nconst browserStreamToIt = require('browser-readablestream-to-it')\n\nconst {\n isBytes,\n isBlob\n} = require('./utils')\n\nasync function toBlob (input) {\n // Bytes | String\n if (isBytes(input) || typeof input === 'string' || input instanceof String) {\n return new Blob([input])\n }\n\n // Blob | File\n if (isBlob(input)) {\n return input\n }\n\n // Browser stream\n if (typeof input.getReader === 'function') {\n input = browserStreamToIt(input)\n }\n\n // (Async)Iterator\n if (input[Symbol.iterator] || input[Symbol.asyncIterator]) {\n const peekable = itPeekable(input)\n const { value, done } = await peekable.peek()\n\n if (done) {\n // make sure empty iterators result in empty files\n return itToBlob(peekable)\n }\n\n peekable.push(value)\n\n // (Async)Iterable\n if (Number.isInteger(value)) {\n return itToBlob(peekable)\n }\n\n // (Async)Iterable\n if (isBytes(value) || typeof value === 'string' || value instanceof String) {\n return itToBlob(peekable)\n }\n }\n\n throw errCode(new Error(`Unexpected input: ${input}`), 'ERR_UNEXPECTED_INPUT')\n}\n\nasync function itToBlob (stream) {\n const parts = []\n\n for await (const chunk of stream) {\n parts.push(chunk)\n }\n\n return new Blob(parts)\n}\n\nmodule.exports = toBlob\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst isIp = require('is-ip')\n\nconst isIP = isIp\nconst isV4 = isIp.v4\nconst isV6 = isIp.v6\n\n// Copied from https://github.com/indutny/node-ip/blob/master/lib/ip.js#L7\nconst toBuffer = function (ip, buff, offset) {\n offset = ~~offset\n\n var result\n\n if (isV4(ip)) {\n result = buff || Buffer.alloc(offset + 4)\n ip.split(/\\./g).map(function (byte) {\n result[offset++] = parseInt(byte, 10) & 0xff\n })\n } else if (isV6(ip)) {\n var sections = ip.split(':', 8)\n\n var i\n for (i = 0; i < sections.length; i++) {\n var isv4 = isV4(sections[i])\n var v4Buffer\n\n if (isv4) {\n v4Buffer = toBuffer(sections[i])\n sections[i] = v4Buffer.slice(0, 2).toString('hex')\n }\n\n if (v4Buffer && ++i < 8) {\n sections.splice(i, 0, v4Buffer.slice(2, 4).toString('hex'))\n }\n }\n\n if (sections[0] === '') {\n while (sections.length < 8) sections.unshift('0')\n } else if (sections[sections.length - 1] === '') {\n while (sections.length < 8) sections.push('0')\n } else if (sections.length < 8) {\n for (i = 0; i < sections.length && sections[i] !== ''; i++);\n var argv = [i, '1']\n for (i = 9 - sections.length; i > 0; i--) {\n argv.push('0')\n }\n sections.splice.apply(sections, argv)\n }\n\n result = buff || Buffer.alloc(offset + 16)\n for (i = 0; i < sections.length; i++) {\n var word = parseInt(sections[i], 16)\n result[offset++] = (word >> 8) & 0xff\n result[offset++] = word & 0xff\n }\n }\n\n if (!result) {\n throw Error('Invalid ip address: ' + ip)\n }\n\n return result\n}\n\n// Copied from https://github.com/indutny/node-ip/blob/master/lib/ip.js#L63\nconst toString = function (buff, offset, length) {\n offset = ~~offset\n length = length || (buff.length - offset)\n\n var result = []\n var string\n if (length === 4) {\n // IPv4\n for (let i = 0; i < length; i++) {\n result.push(buff[offset + i])\n }\n string = result.join('.')\n } else if (length === 16) {\n // IPv6\n for (let i = 0; i < length; i += 2) {\n result.push(buff.readUInt16BE(offset + i).toString(16))\n }\n string = result.join(':')\n string = string.replace(/(^|:)0(:0)*:0(:|$)/, '$1::$3')\n string = string.replace(/:{3,4}/, '::')\n }\n\n return string\n}\n\nmodule.exports = {\n isIP,\n isV4,\n isV6,\n toBuffer,\n toString\n}\n","'use strict'\n\nconst toCamel = require('../lib/object-to-camel')\nconst configure = require('../lib/configure')\nconst toUrlSearchParams = require('../lib/to-url-search-params')\n\nmodule.exports = configure(api => {\n return async (name, pem, password, options = {}) => {\n if (typeof password !== 'string') {\n options = password || {}\n password = null\n }\n\n const res = await api.post('key/import', {\n timeout: options.timeout,\n signal: options.signal,\n searchParams: toUrlSearchParams({\n arg: name,\n pem,\n password,\n ...options\n }),\n headers: options.headers\n })\n const data = await res.json()\n\n return toCamel(data)\n }\n})\n","'use strict'\n\nconst CID = require('cids')\nconst multiaddr = require('multiaddr')\nconst toCamel = require('../lib/object-to-camel')\nconst configure = require('../lib/configure')\nconst toUrlSearchParams = require('../lib/to-url-search-params')\n\nmodule.exports = configure(api => {\n return async function * provide (cids, options = {}) {\n cids = Array.isArray(cids) ? cids : [cids]\n\n const res = await api.post('dht/provide', {\n timeout: options.timeout,\n signal: options.signal,\n searchParams: toUrlSearchParams({\n arg: cids.map(cid => new CID(cid).toString()),\n ...options\n }),\n headers: options.headers\n })\n\n for await (let message of res.ndjson()) {\n message = toCamel(message)\n message.id = new CID(message.id)\n if (message.responses) {\n message.responses = message.responses.map(({ ID, Addrs }) => ({\n id: ID,\n addrs: (Addrs || []).map(a => multiaddr(a))\n }))\n } else {\n message.responses = []\n }\n yield message\n }\n }\n})\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst blake = require('blakejs')\n\nconst minB = 0xb201\nconst minS = 0xb241\n\nconst blake2b = {\n init: blake.blake2bInit,\n update: blake.blake2bUpdate,\n digest: blake.blake2bFinal\n}\n\nconst blake2s = {\n init: blake.blake2sInit,\n update: blake.blake2sUpdate,\n digest: blake.blake2sFinal\n}\n\n// Note that although this function doesn't do any asynchronous work, we mark\n// the function as async because it must return a Promise to match the API\n// for other functions that do perform asynchronous work (see sha.browser.js)\n// eslint-disable-next-line\nconst makeB2Hash = (size, hf) => async (data) => {\n const ctx = hf.init(size, null)\n hf.update(ctx, data)\n return Buffer.from(hf.digest(ctx))\n}\n\nmodule.exports = (table) => {\n for (let i = 0; i < 64; i++) {\n table[minB + i] = makeB2Hash(i + 1, blake2b)\n }\n for (let i = 0; i < 32; i++) {\n table[minS + i] = makeB2Hash(i + 1, blake2s)\n }\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","// Blake2B in pure Javascript\n// Adapted from the reference implementation in RFC7693\n// Ported to Javascript by DC - https://github.com/dcposch\n\nvar util = require('./util')\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += v[b,b+1]\n// v should be a Uint32Array\nfunction ADD64AA (v, a, b) {\n var o0 = v[a] + v[b]\n var o1 = v[a + 1] + v[b + 1]\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += b\n// b0 is the low 32 bits of b, b1 represents the high 32 bits\nfunction ADD64AC (v, a, b0, b1) {\n var o0 = v[a] + b0\n if (b0 < 0) {\n o0 += 0x100000000\n }\n var o1 = v[a + 1] + b1\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// Little-endian byte access\nfunction B2B_GET32 (arr, i) {\n return (arr[i] ^\n (arr[i + 1] << 8) ^\n (arr[i + 2] << 16) ^\n (arr[i + 3] << 24))\n}\n\n// G Mixing function\n// The ROTRs are inlined for speed\nfunction B2B_G (a, b, c, d, ix, iy) {\n var x0 = m[ix]\n var x1 = m[ix + 1]\n var y0 = m[iy]\n var y1 = m[iy + 1]\n\n ADD64AA(v, a, b) // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\n ADD64AC(v, a, x0, x1) // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\n var xor0 = v[d] ^ v[a]\n var xor1 = v[d + 1] ^ v[a + 1]\n v[d] = xor1\n v[d + 1] = xor0\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor0 >>> 24) ^ (xor1 << 8)\n v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8)\n\n ADD64AA(v, a, b)\n ADD64AC(v, a, y0, y1)\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\n xor0 = v[d] ^ v[a]\n xor1 = v[d + 1] ^ v[a + 1]\n v[d] = (xor0 >>> 16) ^ (xor1 << 16)\n v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16)\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor1 >>> 31) ^ (xor0 << 1)\n v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1)\n}\n\n// Initialization Vector\nvar BLAKE2B_IV32 = new Uint32Array([\n 0xF3BCC908, 0x6A09E667, 0x84CAA73B, 0xBB67AE85,\n 0xFE94F82B, 0x3C6EF372, 0x5F1D36F1, 0xA54FF53A,\n 0xADE682D1, 0x510E527F, 0x2B3E6C1F, 0x9B05688C,\n 0xFB41BD6B, 0x1F83D9AB, 0x137E2179, 0x5BE0CD19\n])\n\nvar SIGMA8 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,\n 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,\n 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,\n 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3\n]\n\n// These are offsets into a uint64 buffer.\n// Multiply them all by 2 to make them offsets into a uint32 buffer,\n// because this is Javascript and we don't have uint64s\nvar SIGMA82 = new Uint8Array(SIGMA8.map(function (x) { return x * 2 }))\n\n// Compression function. 'last' flag indicates last block.\n// Note we're representing 16 uint64s as 32 uint32s\nvar v = new Uint32Array(32)\nvar m = new Uint32Array(32)\nfunction blake2bCompress (ctx, last) {\n var i = 0\n\n // init work variables\n for (i = 0; i < 16; i++) {\n v[i] = ctx.h[i]\n v[i + 16] = BLAKE2B_IV32[i]\n }\n\n // low 64 bits of offset\n v[24] = v[24] ^ ctx.t\n v[25] = v[25] ^ (ctx.t / 0x100000000)\n // high 64 bits not supported, offset may not be higher than 2**53-1\n\n // last block flag set ?\n if (last) {\n v[28] = ~v[28]\n v[29] = ~v[29]\n }\n\n // get little-endian words\n for (i = 0; i < 32; i++) {\n m[i] = B2B_GET32(ctx.b, 4 * i)\n }\n\n // twelve rounds of mixing\n // uncomment the DebugPrint calls to log the computation\n // and match the RFC sample documentation\n // util.debugPrint(' m[16]', m, 64)\n for (i = 0; i < 12; i++) {\n // util.debugPrint(' (i=' + (i < 10 ? ' ' : '') + i + ') v[16]', v, 64)\n B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1])\n B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3])\n B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5])\n B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7])\n B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9])\n B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11])\n B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13])\n B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15])\n }\n // util.debugPrint(' (i=12) v[16]', v, 64)\n\n for (i = 0; i < 16; i++) {\n ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16]\n }\n // util.debugPrint('h[8]', ctx.h, 64)\n}\n\n// Creates a BLAKE2b hashing context\n// Requires an output length between 1 and 64 bytes\n// Takes an optional Uint8Array key\nfunction blake2bInit (outlen, key) {\n if (outlen === 0 || outlen > 64) {\n throw new Error('Illegal output length, expected 0 < length <= 64')\n }\n if (key && key.length > 64) {\n throw new Error('Illegal key, expected Uint8Array with 0 < length <= 64')\n }\n\n // state, 'param block'\n var ctx = {\n b: new Uint8Array(128),\n h: new Uint32Array(16),\n t: 0, // input count\n c: 0, // pointer within buffer\n outlen: outlen // output length in bytes\n }\n\n // initialize hash state\n for (var i = 0; i < 16; i++) {\n ctx.h[i] = BLAKE2B_IV32[i]\n }\n var keylen = key ? key.length : 0\n ctx.h[0] ^= 0x01010000 ^ (keylen << 8) ^ outlen\n\n // key the hash, if applicable\n if (key) {\n blake2bUpdate(ctx, key)\n // at the end\n ctx.c = 128\n }\n\n return ctx\n}\n\n// Updates a BLAKE2b streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2bUpdate (ctx, input) {\n for (var i = 0; i < input.length; i++) {\n if (ctx.c === 128) { // buffer full ?\n ctx.t += ctx.c // add counters\n blake2bCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2b streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2bFinal (ctx) {\n ctx.t += ctx.c // mark last block offset\n\n while (ctx.c < 128) { // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2bCompress(ctx, true) // final block flag = 1\n\n // little endian convert and store\n var out = new Uint8Array(ctx.outlen)\n for (var i = 0; i < ctx.outlen; i++) {\n out[i] = ctx.h[i >> 2] >> (8 * (i & 3))\n }\n return out\n}\n\n// Computes the BLAKE2B hash of a string or byte array, and returns a Uint8Array\n//\n// Returns a n-byte Uint8Array\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer or Uint8Array\n// - key - optional key Uint8Array, up to 64 bytes\n// - outlen - optional output length in bytes, default 64\nfunction blake2b (input, key, outlen) {\n // preprocess inputs\n outlen = outlen || 64\n input = util.normalizeInput(input)\n\n // do the math\n var ctx = blake2bInit(outlen, key)\n blake2bUpdate(ctx, input)\n return blake2bFinal(ctx)\n}\n\n// Computes the BLAKE2B hash of a string or byte array\n//\n// Returns an n-byte hash in hex, all lowercase\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer, or Uint8Array\n// - key - optional key Uint8Array, up to 64 bytes\n// - outlen - optional output length in bytes, default 64\nfunction blake2bHex (input, key, outlen) {\n var output = blake2b(input, key, outlen)\n return util.toHex(output)\n}\n\nmodule.exports = {\n blake2b: blake2b,\n blake2bHex: blake2bHex,\n blake2bInit: blake2bInit,\n blake2bUpdate: blake2bUpdate,\n blake2bFinal: blake2bFinal\n}\n","'use strict'\n\nconst modeToString = require('./mode-to-string')\nconst mtimeToObject = require('./mtime-to-object')\n\nmodule.exports = ({ arg, searchParams, hashAlg, mtime, mode, ...options } = {}) => {\n if (searchParams) {\n options = {\n ...options,\n ...searchParams\n }\n }\n\n if (hashAlg) {\n options.hash = hashAlg\n }\n\n if (mtime != null) {\n mtime = mtimeToObject(mtime)\n\n options.mtime = mtime.secs\n options.mtimeNsecs = mtime.nsecs\n }\n\n if (mode != null) {\n options.mode = modeToString(mode)\n }\n\n if (options.timeout && !isNaN(options.timeout)) {\n // server API expects timeouts as strings\n options.timeout = `${options.timeout}ms`\n }\n\n if (arg === undefined || arg === null) {\n arg = []\n } else if (!Array.isArray(arg)) {\n arg = [arg]\n }\n\n const urlSearchParams = new URLSearchParams(options)\n\n arg.forEach(arg => urlSearchParams.append('arg', arg))\n\n return urlSearchParams\n}\n","'use strict'\n\nconst configure = require('../lib/configure')\nconst toUrlSearchParams = require('../lib/to-url-search-params')\n\nmodule.exports = configure(api => {\n return async (addrs, options = {}) => {\n addrs = Array.isArray(addrs) ? addrs : [addrs]\n\n const res = await api.post('swarm/disconnect', {\n timeout: options.timeout,\n signal: options.signal,\n searchParams: toUrlSearchParams({\n arg: addrs.map(addr => `${addr}`),\n ...options\n }),\n headers: options.headers\n })\n const { Strings } = await res.json()\n\n return Strings || []\n }\n})\n","'use strict';\n\nconst {\n URLWithLegacySupport,\n format,\n URLSearchParams,\n defaultBase\n} = require('./src/url');\nconst relative = require('./src/relative');\n\nmodule.exports = {\n URL: URLWithLegacySupport,\n URLSearchParams,\n format,\n relative,\n defaultBase\n};\n","'use strict'\n\nconst table = require('./base-table.json')\n\n// map for code -> print friendly name\nconst tableByCode = {}\n\nfor (const [name, code] of Object.entries(table)) {\n if (tableByCode[code] === undefined) tableByCode[code] = name\n}\n\nmodule.exports = Object.freeze(tableByCode)\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","'use strict'\n\nconst decode = (string, alphabet, bitsPerChar) => {\n // Build the character lookup table:\n const codes = {}\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i\n }\n\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]]\n if (value === undefined) {\n throw new SyntaxError('Invalid character ' + string[i])\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '='\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while ((out.length * bitsPerChar) & 7) {\n out += '='\n }\n }\n\n return out\n}\n\nmodule.exports = (bitsPerChar) => (alphabet) => {\n return {\n encode (input) {\n return encode(input, alphabet, bitsPerChar)\n },\n decode (input) {\n return decode(input, alphabet, bitsPerChar)\n }\n }\n}\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","'use strict'\nconst varint = require('varint')\nconst { Buffer } = require('buffer')\n\nmodule.exports = {\n numberToBuffer,\n bufferToNumber,\n varintBufferEncode,\n varintBufferDecode,\n varintEncode\n}\n\nfunction bufferToNumber (buf) {\n return parseInt(buf.toString('hex'), 16)\n}\n\nfunction numberToBuffer (num) {\n let hexString = num.toString(16)\n if (hexString.length % 2 === 1) {\n hexString = '0' + hexString\n }\n return Buffer.from(hexString, 'hex')\n}\n\nfunction varintBufferEncode (input) {\n return Buffer.from(varint.encode(bufferToNumber(input)))\n}\n\nfunction varintBufferDecode (input) {\n return numberToBuffer(varint.decode(input))\n}\n\nfunction varintEncode (num) {\n return Buffer.from(varint.encode(num))\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst CID = require('cids')\nconst multiaddr = require('multiaddr')\nconst configure = require('../lib/configure')\nconst toUrlSearchParams = require('../lib/to-url-search-params')\nconst { FinalPeer } = require('./response-types')\n\nmodule.exports = configure(api => {\n return async function findPeer (peerId, options = {}) {\n const res = await api.post('dht/findpeer', {\n timeout: options.timeout,\n signal: options.signal,\n searchParams: toUrlSearchParams({\n arg: `${Buffer.isBuffer(peerId) ? new CID(peerId) : peerId}`,\n ...options\n }),\n headers: options.headers\n })\n\n for await (const data of res.ndjson()) {\n if (data.Type === FinalPeer && data.Responses) {\n const { ID, Addrs } = data.Responses[0]\n return {\n id: ID,\n addrs: (Addrs || []).map(a => multiaddr(a))\n }\n }\n }\n\n throw new Error('not found')\n }\n})\n","'use strict'\nconst { Buffer } = require('buffer')\n\nmodule.exports = function base16 (alphabet) {\n return {\n encode (input) {\n if (typeof input === 'string') {\n return Buffer.from(input).toString('hex')\n }\n return input.toString('hex')\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base16 character')\n }\n }\n return Buffer.from(input, 'hex')\n }\n }\n}\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","'use strict'\n\nconst CID = require('cids')\nconst { DAGNode } = require('ipld-dag-pb')\nconst { Buffer } = require('buffer')\nconst multipartRequest = require('../lib/multipart-request')\nconst configure = require('../lib/configure')\nconst toUrlSearchParams = require('../lib/to-url-search-params')\nconst anySignal = require('any-signal')\nconst AbortController = require('abort-controller')\n\nmodule.exports = configure(api => {\n return async (obj, options = {}) => {\n let tmpObj = {\n Data: null,\n Links: []\n }\n\n if (Buffer.isBuffer(obj)) {\n if (!options.enc) {\n tmpObj = {\n Data: obj.toString(),\n Links: []\n }\n }\n } else if (DAGNode.isDAGNode(obj)) {\n tmpObj = {\n Data: obj.Data.toString(),\n Links: obj.Links.map(l => ({\n Name: l.Name,\n Hash: l.Hash.toString(),\n Size: l.Tsize\n }))\n }\n } else if (typeof obj === 'object') {\n tmpObj.Data = obj.Data.toString()\n tmpObj.Links = obj.Links\n } else {\n throw new Error('obj not recognized')\n }\n\n let buf\n if (Buffer.isBuffer(obj) && options.enc) {\n buf = obj\n } else {\n options.enc = 'json'\n buf = Buffer.from(JSON.stringify(tmpObj))\n }\n\n // allow aborting requests on body errors\n const controller = new AbortController()\n const signal = anySignal([controller.signal, options.signal])\n\n const res = await api.post('object/put', {\n timeout: options.timeout,\n signal,\n searchParams: toUrlSearchParams(options),\n ...(\n await multipartRequest(buf, controller, options.headers)\n )\n })\n\n const { Hash } = await res.json()\n\n return new CID(Hash)\n }\n})\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","'use strict';\n\nconst defaultBase = self.location ?\n self.location.protocol + '//' + self.location.host :\n '';\nconst URL = self.URL;\n\nclass URLWithLegacySupport {\n constructor(url = '', base = defaultBase) {\n this.super = new URL(url, base);\n this.path = this.pathname + this.search;\n this.auth =\n this.username && this.password ?\n this.username + ':' + this.password :\n null;\n\n this.query =\n this.search && this.search.startsWith('?') ?\n this.search.slice(1) :\n null;\n }\n\n get hash() {\n return this.super.hash;\n }\n get host() {\n return this.super.host;\n }\n get hostname() {\n return this.super.hostname;\n }\n get href() {\n return this.super.href;\n }\n get origin() {\n return this.super.origin;\n }\n get password() {\n return this.super.password;\n }\n get pathname() {\n return this.super.pathname;\n }\n get port() {\n return this.super.port;\n }\n get protocol() {\n return this.super.protocol;\n }\n get search() {\n return this.super.search;\n }\n get searchParams() {\n return this.super.searchParams;\n }\n get username() {\n return this.super.username;\n }\n\n set hash(hash) {\n this.super.hash = hash;\n }\n set host(host) {\n this.super.host = host;\n }\n set hostname(hostname) {\n this.super.hostname = hostname;\n }\n set href(href) {\n this.super.href = href;\n }\n set origin(origin) {\n this.super.origin = origin;\n }\n set password(password) {\n this.super.password = password;\n }\n set pathname(pathname) {\n this.super.pathname = pathname;\n }\n set port(port) {\n this.super.port = port;\n }\n set protocol(protocol) {\n this.super.protocol = protocol;\n }\n set search(search) {\n this.super.search = search;\n }\n set searchParams(searchParams) {\n this.super.searchParams = searchParams;\n }\n set username(username) {\n this.super.username = username;\n }\n\n createObjectURL(o) {\n return this.super.createObjectURL(o);\n }\n revokeObjectURL(o) {\n this.super.revokeObjectURL(o);\n }\n toJSON() {\n return this.super.toJSON();\n }\n toString() {\n return this.super.toString();\n }\n format() {\n return this.toString();\n }\n}\n\nfunction format(obj) {\n if (typeof obj === 'string') {\n const url = new URL(obj);\n\n return url.toString();\n }\n\n if (!(obj instanceof URL)) {\n const userPass =\n obj.username && obj.password ?\n `${obj.username}:${obj.password}@` :\n '';\n const auth = obj.auth ? obj.auth + '@' : '';\n const port = obj.port ? ':' + obj.port : '';\n const protocol = obj.protocol ? obj.protocol + '//' : '';\n const host = obj.host || '';\n const hostname = obj.hostname || '';\n const search = obj.search || (obj.query ? '?' + obj.query : '');\n const hash = obj.hash || '';\n const pathname = obj.pathname || '';\n const path = obj.path || pathname + search;\n\n return `${protocol}${userPass || auth}${host ||\n hostname + port}${path}${hash}`;\n }\n}\n\nmodule.exports = {\n URLWithLegacySupport,\n URLSearchParams: self.URLSearchParams,\n defaultBase,\n format\n};\n","'use strict'\n\nconst CID = require('cids')\nconst multiaddr = require('multiaddr')\nconst toCamel = require('../lib/object-to-camel')\nconst configure = require('../lib/configure')\nconst toUrlSearchParams = require('../lib/to-url-search-params')\nconst multipartRequest = require('../lib/multipart-request')\n\nmodule.exports = configure(api => {\n return async function * put (key, value, options = {}) {\n const res = await api.post('dht/put', {\n timeout: options.timeout,\n signal: options.signal,\n searchParams: toUrlSearchParams({\n arg: key,\n ...options\n }),\n ...(\n await multipartRequest(value, options.headers)\n )\n })\n\n for await (let message of res.ndjson()) {\n message = toCamel(message)\n message.id = new CID(message.id)\n if (message.responses) {\n message.responses = message.responses.map(({ ID, Addrs }) => ({\n id: ID,\n addrs: (Addrs || []).map(a => multiaddr(a))\n }))\n }\n yield message\n }\n }\n})\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","'use strict'\n\nconst codec = require('./codec')\nconst { Buffer } = require('buffer')\nconst protocols = require('./protocols-table')\nconst varint = require('varint')\nconst multibase = require('multibase')\nconst CID = require('cids')\nconst withIs = require('class-is')\nconst inspect = Symbol.for('nodejs.util.inspect.custom')\n\n/**\n * Creates a [multiaddr](https://github.com/multiformats/multiaddr) from\n * a Buffer, String or another Multiaddr instance\n * public key.\n * @class Multiaddr\n * @param {(String|Buffer|Multiaddr)} addr - If String or Buffer, needs to adhere\n * to the address format of a [multiaddr](https://github.com/multiformats/multiaddr#string-format)\n * @example\n * Multiaddr('/ip4/127.0.0.1/tcp/4001')\n * // \n */\nconst Multiaddr = withIs.proto(function (addr) {\n if (!(this instanceof Multiaddr)) {\n return new Multiaddr(addr)\n }\n\n // default\n if (addr == null) {\n addr = ''\n }\n\n if (addr instanceof Buffer) {\n /**\n * @type {Buffer} - The raw bytes representing this multiaddress\n */\n this.buffer = codec.fromBuffer(addr)\n } else if (typeof addr === 'string' || addr instanceof String) {\n if (addr.length > 0 && addr.charAt(0) !== '/') {\n throw new Error(`multiaddr \"${addr}\" must start with a \"/\"`)\n }\n this.buffer = codec.fromString(addr)\n } else if (addr.buffer && addr.protos && addr.protoCodes) { // Multiaddr\n this.buffer = codec.fromBuffer(addr.buffer) // validate + copy buffer\n } else {\n throw new Error('addr must be a string, Buffer, or another Multiaddr')\n }\n}, { className: 'Multiaddr', symbolName: '@multiformats/js-multiaddr/multiaddr' })\n\n/**\n * Returns Multiaddr as a String\n *\n * @returns {String}\n * @example\n * Multiaddr('/ip4/127.0.0.1/tcp/4001').toString()\n * // '/ip4/127.0.0.1/tcp/4001'\n */\nMultiaddr.prototype.toString = function toString () {\n return codec.bufferToString(this.buffer)\n}\n\n/**\n * Returns Multiaddr as a JSON encoded object\n *\n * @returns {String}\n * @example\n * JSON.stringify(Multiaddr('/ip4/127.0.0.1/tcp/4001'))\n * // '/ip4/127.0.0.1/tcp/4001'\n */\nMultiaddr.prototype.toJSON = Multiaddr.prototype.toString\n\n/**\n * Returns Multiaddr as a convinient options object to be used with net.createConnection\n *\n * @returns {{family: String, host: String, transport: String, port: Number}}\n * @example\n * Multiaddr('/ip4/127.0.0.1/tcp/4001').toOptions()\n * // { family: 'ipv4', host: '127.0.0.1', transport: 'tcp', port: 4001 }\n */\nMultiaddr.prototype.toOptions = function toOptions () {\n const opts = {}\n const parsed = this.toString().split('/')\n opts.family = parsed[1] === 'ip4' ? 'ipv4' : 'ipv6'\n opts.host = parsed[2]\n opts.transport = parsed[3]\n opts.port = parseInt(parsed[4])\n return opts\n}\n\n/**\n * Returns Multiaddr as a human-readable string.\n * For post Node.js v10.0.0.\n * https://nodejs.org/api/deprecations.html#deprecations_dep0079_custom_inspection_function_on_objects_via_inspect\n *\n * @returns {String}\n * @example\n * console.log(Multiaddr('/ip4/127.0.0.1/tcp/4001'))\n * // ''\n */\nMultiaddr.prototype[inspect] = function inspectCustom () {\n return ''\n}\n\n/**\n * Returns Multiaddr as a human-readable string.\n * Fallback for pre Node.js v10.0.0.\n * https://nodejs.org/api/deprecations.html#deprecations_dep0079_custom_inspection_function_on_objects_via_inspect\n *\n * @returns {String}\n * @example\n * Multiaddr('/ip4/127.0.0.1/tcp/4001').inspect()\n * // ''\n */\nMultiaddr.prototype.inspect = function inspect () {\n return ''\n}\n\n/**\n * Returns the protocols the Multiaddr is defined with, as an array of objects, in\n * left-to-right order. Each object contains the protocol code, protocol name,\n * and the size of its address space in bits.\n * [See list of protocols](https://github.com/multiformats/multiaddr/blob/master/protocols.csv)\n *\n * @returns {Array.} protocols - All the protocols the address is composed of\n * @returns {Number} protocols[].code\n * @returns {Number} protocols[].size\n * @returns {String} protocols[].name\n * @example\n * Multiaddr('/ip4/127.0.0.1/tcp/4001').protos()\n * // [ { code: 4, size: 32, name: 'ip4' },\n * // { code: 6, size: 16, name: 'tcp' } ]\n */\nMultiaddr.prototype.protos = function protos () {\n return this.protoCodes().map(code => Object.assign({}, protocols(code)))\n}\n\n/**\n * Returns the codes of the protocols in left-to-right order.\n * [See list of protocols](https://github.com/multiformats/multiaddr/blob/master/protocols.csv)\n *\n * @returns {Array.} protocol codes\n * @example\n * Multiaddr('/ip4/127.0.0.1/tcp/4001').protoCodes()\n * // [ 4, 6 ]\n */\nMultiaddr.prototype.protoCodes = function protoCodes () {\n const codes = []\n const buf = this.buffer\n let i = 0\n while (i < buf.length) {\n const code = varint.decode(buf, i)\n const n = varint.decode.bytes\n\n const p = protocols(code)\n const size = codec.sizeForAddr(p, buf.slice(i + n))\n\n i += (size + n)\n codes.push(code)\n }\n\n return codes\n}\n\n/**\n * Returns the names of the protocols in left-to-right order.\n * [See list of protocols](https://github.com/multiformats/multiaddr/blob/master/protocols.csv)\n *\n * @return {Array.} protocol names\n * @example\n * Multiaddr('/ip4/127.0.0.1/tcp/4001').protoNames()\n * // [ 'ip4', 'tcp' ]\n */\nMultiaddr.prototype.protoNames = function protoNames () {\n return this.protos().map(proto => proto.name)\n}\n\n/**\n * Returns a tuple of parts\n *\n * @return {Array.} tuples\n * @return {Number} tuples[].0 code of protocol\n * @return {Buffer} tuples[].1 contents of address\n * @example\n * Multiaddr(\"/ip4/127.0.0.1/tcp/4001\").tuples()\n * // [ [ 4, ], [ 6, ] ]\n */\nMultiaddr.prototype.tuples = function tuples () {\n return codec.bufferToTuples(this.buffer)\n}\n\n/**\n * Returns a tuple of string/number parts\n *\n * @return {Array.} tuples\n * @return {Number} tuples[].0 code of protocol\n * @return {(String|Number)} tuples[].1 contents of address\n * @example\n * Multiaddr(\"/ip4/127.0.0.1/tcp/4001\").stringTuples()\n * // [ [ 4, '127.0.0.1' ], [ 6, 4001 ] ]\n */\nMultiaddr.prototype.stringTuples = function stringTuples () {\n const t = codec.bufferToTuples(this.buffer)\n return codec.tuplesToStringTuples(t)\n}\n\n/**\n * Encapsulates a Multiaddr in another Multiaddr\n *\n * @param {Multiaddr} addr - Multiaddr to add into this Multiaddr\n * @return {Multiaddr}\n * @example\n * const mh1 = Multiaddr('/ip4/8.8.8.8/tcp/1080')\n * // \n *\n * const mh2 = Multiaddr('/ip4/127.0.0.1/tcp/4001')\n * // \n *\n * const mh3 = mh1.encapsulate(mh2)\n * // \n *\n * mh3.toString()\n * // '/ip4/8.8.8.8/tcp/1080/ip4/127.0.0.1/tcp/4001'\n */\nMultiaddr.prototype.encapsulate = function encapsulate (addr) {\n addr = Multiaddr(addr)\n return Multiaddr(this.toString() + addr.toString())\n}\n\n/**\n * Decapsulates a Multiaddr from another Multiaddr\n *\n * @param {Multiaddr} addr - Multiaddr to remove from this Multiaddr\n * @return {Multiaddr}\n * @example\n * const mh1 = Multiaddr('/ip4/8.8.8.8/tcp/1080')\n * // \n *\n * const mh2 = Multiaddr('/ip4/127.0.0.1/tcp/4001')\n * // \n *\n * const mh3 = mh1.encapsulate(mh2)\n * // \n *\n * mh3.decapsulate(mh2).toString()\n * // '/ip4/8.8.8.8/tcp/1080'\n */\nMultiaddr.prototype.decapsulate = function decapsulate (addr) {\n addr = addr.toString()\n const s = this.toString()\n const i = s.lastIndexOf(addr)\n if (i < 0) {\n throw new Error('Address ' + this + ' does not contain subaddress: ' + addr)\n }\n return Multiaddr(s.slice(0, i))\n}\n\n/**\n * A more reliable version of `decapsulate` if you are targeting a\n * specific code, such as 421 (the `p2p` protocol code). The last index of the code\n * will be removed from the `Multiaddr`, and a new instance will be returned.\n * If the code is not present, the original `Multiaddr` is returned.\n *\n * @param {Number} code The code of the protocol to decapsulate from this Multiaddr\n * @return {Multiaddr}\n * @example\n * const addr = Multiaddr('/ip4/0.0.0.0/tcp/8080/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC')\n * // \n *\n * addr.decapsulateCode(421).toString()\n * // '/ip4/0.0.0.0/tcp/8080'\n *\n * Multiaddr('/ip4/127.0.0.1/tcp/8080').decapsulateCode(421).toString()\n * // '/ip4/127.0.0.1/tcp/8080'\n */\nMultiaddr.prototype.decapsulateCode = function decapsulateCode (code) {\n const tuples = this.tuples()\n for (let i = tuples.length - 1; i >= 0; i--) {\n if (tuples[i][0] === code) {\n return Multiaddr(codec.tuplesToBuffer(tuples.slice(0, i)))\n }\n }\n return this\n}\n\n/**\n * Extract the peerId if the multiaddr contains one\n *\n * @return {String|null} peerId - The id of the peer or null if invalid or missing from the ma\n * @example\n * const mh1 = Multiaddr('/ip4/8.8.8.8/tcp/1080/ipfs/QmValidBase58string')\n * // \n *\n * // should return QmValidBase58string or null if the id is missing or invalid\n * const peerId = mh1.getPeerId()\n */\nMultiaddr.prototype.getPeerId = function getPeerId () {\n let b58str = null\n try {\n const tuples = this.stringTuples().filter((tuple) => {\n if (tuple[0] === protocols.names.ipfs.code) {\n return true\n }\n })\n\n // Get the last id\n b58str = tuples.pop()[1]\n // Get multihash, unwrap from CID if needed\n b58str = multibase.encode('base58btc', new CID(b58str).multihash).toString().slice(1)\n } catch (e) {\n b58str = null\n }\n\n return b58str\n}\n\n/**\n * Extract the path if the multiaddr contains one\n *\n * @return {String|null} path - The path of the multiaddr, or null if no path protocol is present\n * @example\n * const mh1 = Multiaddr('/ip4/8.8.8.8/tcp/1080/unix/tmp/p2p.sock')\n * // \n *\n * // should return utf8 string or null if the id is missing or invalid\n * const path = mh1.getPath()\n */\nMultiaddr.prototype.getPath = function getPath () {\n let path = null\n try {\n path = this.stringTuples().filter((tuple) => {\n const proto = protocols(tuple[0])\n if (proto.path) {\n return true\n }\n })[0][1]\n } catch (e) {\n path = null\n }\n\n return path\n}\n\n/**\n * Checks if two Multiaddrs are the same\n *\n * @param {Multiaddr} addr\n * @return {Bool}\n * @example\n * const mh1 = Multiaddr('/ip4/8.8.8.8/tcp/1080')\n * // \n *\n * const mh2 = Multiaddr('/ip4/127.0.0.1/tcp/4001')\n * // \n *\n * mh1.equals(mh1)\n * // true\n *\n * mh1.equals(mh2)\n * // false\n */\nMultiaddr.prototype.equals = function equals (addr) {\n return this.buffer.equals(addr.buffer)\n}\n\n/**\n * Gets a Multiaddrs node-friendly address object. Note that protocol information\n * is left out: in Node (and most network systems) the protocol is unknowable\n * given only the address.\n *\n * Has to be a ThinWaist Address, otherwise throws error\n *\n * @returns {{family: String, address: String, port: Number}}\n * @throws {Error} Throws error if Multiaddr is not a Thin Waist address\n * @example\n * Multiaddr('/ip4/127.0.0.1/tcp/4001').nodeAddress()\n * // {family: 'IPv4', address: '127.0.0.1', port: '4001'}\n */\nMultiaddr.prototype.nodeAddress = function nodeAddress () {\n const codes = this.protoCodes()\n const names = this.protoNames()\n const parts = this.toString().split('/').slice(1)\n\n if (parts.length < 4) {\n throw new Error('multiaddr must have a valid format: \"/{ip4, ip6, dns4, dns6}/{address}/{tcp, udp}/{port}\".')\n } else if (codes[0] !== 4 && codes[0] !== 41 && codes[0] !== 54 && codes[0] !== 55) {\n throw new Error(`no protocol with name: \"'${names[0]}'\". Must have a valid family name: \"{ip4, ip6, dns4, dns6}\".`)\n } else if (parts[2] !== 'tcp' && parts[2] !== 'udp') {\n throw new Error(`no protocol with name: \"'${names[1]}'\". Must have a valid transport protocol: \"{tcp, udp}\".`)\n }\n\n return {\n family: (codes[0] === 41 || codes[0] === 55) ? 6 : 4,\n address: parts[1], // ip addr\n port: parseInt(parts[3]) // tcp or udp port\n }\n}\n\n/**\n * Creates a Multiaddr from a node-friendly address object\n *\n * @param {{family: String, address: String, port: Number}} addr\n * @param {String} transport\n * @returns {Multiaddr} multiaddr\n * @throws {Error} Throws error if addr is not truthy\n * @throws {Error} Throws error if transport is not truthy\n * @example\n * Multiaddr.fromNodeAddress({address: '127.0.0.1', port: '4001'}, 'tcp')\n * // \n */\nMultiaddr.fromNodeAddress = function fromNodeAddress (addr, transport) {\n if (!addr) throw new Error('requires node address object')\n if (!transport) throw new Error('requires transport protocol')\n let ip\n switch (addr.family) {\n case 'IPv4':\n ip = 'ip4'\n break\n case 'IPv6':\n ip = 'ip6'\n break\n default:\n throw Error(`Invalid addr family. Got '${addr.family}' instead of 'IPv4' or 'IPv6'`)\n }\n return Multiaddr('/' + [ip, addr.address, transport, addr.port].join('/'))\n}\n\n// TODO find a better example, not sure about it's good enough\n/**\n * Returns if a Multiaddr is a Thin Waist address or not.\n *\n * Thin Waist is if a Multiaddr adheres to the standard combination of:\n *\n * `{IPv4, IPv6}/{TCP, UDP}`\n *\n * @param {Multiaddr} [addr] - Defaults to using `this` instance\n * @returns {Boolean} isThinWaistAddress\n * @example\n * const mh1 = Multiaddr('/ip4/127.0.0.1/tcp/4001')\n * // \n * const mh2 = Multiaddr('/ip4/192.168.2.1/tcp/5001')\n * // \n * const mh3 = mh1.encapsulate(mh2)\n * // \n * mh1.isThinWaistAddress()\n * // true\n * mh2.isThinWaistAddress()\n * // true\n * mh3.isThinWaistAddress()\n * // false\n */\nMultiaddr.prototype.isThinWaistAddress = function isThinWaistAddress (addr) {\n const protos = (addr || this).protos()\n\n if (protos.length !== 2) {\n return false\n }\n\n if (protos[0].code !== 4 && protos[0].code !== 41) {\n return false\n }\n if (protos[1].code !== 6 && protos[1].code !== 273) {\n return false\n }\n return true\n}\n\n/**\n * Object containing table, names and codes of all supported protocols.\n * To get the protocol values from a Multiaddr, you can use\n * [`.protos()`](#multiaddrprotos),\n * [`.protoCodes()`](#multiaddrprotocodes) or\n * [`.protoNames()`](#multiaddrprotonames)\n *\n * @instance\n * @returns {{table: Array, names: Object, codes: Object}}\n *\n */\nMultiaddr.protocols = protocols\n\n/**\n * Returns if something is a Multiaddr that is a name\n *\n * @param {Multiaddr} addr\n * @return {Bool} isName\n */\nMultiaddr.isName = function isName (addr) {\n if (!Multiaddr.isMultiaddr(addr)) {\n return false\n }\n\n // if a part of the multiaddr is resolvable, then return true\n return addr.protos().some((proto) => proto.resolvable)\n}\n\n/**\n * Returns an array of multiaddrs, by resolving the multiaddr that is a name\n *\n * @async\n * @param {Multiaddr} addr\n * @return {Multiaddr[]}\n */\nMultiaddr.resolve = function resolve (addr) {\n if (!Multiaddr.isMultiaddr(addr) || !Multiaddr.isName(addr)) {\n return Promise.reject(Error('not a valid name'))\n }\n\n /*\n * Needs more consideration from spec design:\n * - what to return\n * - how to achieve it in the browser?\n */\n return Promise.reject(new Error('not implemented yet'))\n}\n\nexports = module.exports = Multiaddr\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, next, step;\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES\n ? boundFunction(anObject(step = iterable[index])[0], step[1])\n : boundFunction(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n\niterate.stop = function (result) {\n return new Result(true, result);\n};\n","'use strict'\n\n/**\n * A CBOR tagged item, where the tag does not have semantics specified at the\n * moment, or those semantics threw an error during parsing. Typically this will\n * be an extension point you're not yet expecting.\n */\nclass Tagged {\n /**\n * Creates an instance of Tagged.\n *\n * @param {Number} tag - the number of the tag\n * @param {any} value - the value inside the tag\n * @param {Error} err - the error that was thrown parsing the tag, or null\n */\n constructor (tag, value, err) {\n this.tag = tag\n this.value = value\n this.err = err\n if (typeof this.tag !== 'number') {\n throw new Error('Invalid tag type (' + (typeof this.tag) + ')')\n }\n if ((this.tag < 0) || ((this.tag | 0) !== this.tag)) {\n throw new Error('Tag must be a positive integer: ' + this.tag)\n }\n }\n\n /**\n * Convert to a String\n *\n * @returns {String} string of the form '1(2)'\n */\n toString () {\n return `${this.tag}(${JSON.stringify(this.value)})`\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n * @returns {number}\n */\n encodeCBOR (gen) {\n gen._pushTag(this.tag)\n return gen.pushAny(this.value)\n }\n\n /**\n * If we have a converter for this type, do the conversion. Some converters\n * are built-in. Additional ones can be passed in. If you want to remove\n * a built-in converter, pass a converter in whose value is 'null' instead\n * of a function.\n *\n * @param {Object} converters - keys in the object are a tag number, the value\n * is a function that takes the decoded CBOR and returns a JavaScript value\n * of the appropriate type. Throw an exception in the function on errors.\n * @returns {any} - the converted item\n */\n convert (converters) {\n var er, f\n f = converters != null ? converters[this.tag] : undefined\n if (typeof f !== 'function') {\n f = Tagged['_tag' + this.tag]\n if (typeof f !== 'function') {\n return this\n }\n }\n try {\n return f.call(Tagged, this.value)\n } catch (error) {\n er = error\n this.err = er\n return this\n }\n }\n}\n\nmodule.exports = Tagged\n","/* eslint-disable require-await */\n'use strict'\n\nconst { Buffer } = require('buffer')\nconst multihash = require('multihashes')\n\nconst crypto = self.crypto || self.msCrypto\n\nconst digest = async (data, alg) => {\n if (typeof self === 'undefined' || (!self.crypto && !self.msCrypto)) {\n throw new Error(\n 'Please use a browser with webcrypto support and ensure the code has been delivered securely via HTTPS/TLS and run within a Secure Context'\n )\n }\n switch (alg) {\n case 'sha1':\n return Buffer.from(await crypto.subtle.digest({ name: 'SHA-1' }, data))\n case 'sha2-256':\n return Buffer.from(await crypto.subtle.digest({ name: 'SHA-256' }, data))\n case 'sha2-512':\n return Buffer.from(await crypto.subtle.digest({ name: 'SHA-512' }, data))\n case 'dbl-sha2-256': {\n const d = await crypto.subtle.digest({ name: 'SHA-256' }, data)\n return Buffer.from(await crypto.subtle.digest({ name: 'SHA-256' }, d))\n }\n default:\n throw new Error(`${alg} is not a supported algorithm`)\n }\n}\n\nmodule.exports = {\n factory: (alg) => async (data) => {\n return digest(data, alg)\n },\n digest,\n multihashing: async (buf, alg, length) => {\n const h = await digest(buf, alg, length)\n return multihash.encode(h, alg, length)\n }\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst sort = require('stable')\n\nconst linkSort = (a, b) => {\n return Buffer.compare(a.nameAsBuffer, b.nameAsBuffer)\n}\n\n/**\n * Sorts links in place (mutating given array)\n * @param {Array} links\n * @returns {void}\n */\nconst sortLinks = (links) => {\n sort.inplace(links, linkSort)\n}\n\nmodule.exports = sortLinks\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","/* jshint -W086: true */\n// +----------------------------------------------------------------------+\n// | murmurHash3js.js v3.0.1 // https://github.com/pid/murmurHash3js\n// | A javascript implementation of MurmurHash3's x86 hashing algorithms. |\n// |----------------------------------------------------------------------|\n// | Copyright (c) 2012-2015 Karan Lyons |\n// | https://github.com/karanlyons/murmurHash3.js/blob/c1778f75792abef7bdd74bc85d2d4e1a3d25cfe9/murmurHash3.js |\n// | Freely distributable under the MIT license. |\n// +----------------------------------------------------------------------+\n\n;(function (root, undefined) {\n 'use strict';\n\n // Create a local object that'll be exported or referenced globally.\n var library = {\n 'version': '3.0.0',\n 'x86': {},\n 'x64': {},\n 'inputValidation': true\n };\n\n // PRIVATE FUNCTIONS\n // -----------------\n\n function _validBytes(bytes) {\n // check the input is an array or a typed array\n if (!Array.isArray(bytes) && !ArrayBuffer.isView(bytes)) {\n return false;\n }\n\n // check all bytes are actually bytes\n for (var i = 0; i < bytes.length; i++) {\n if (!Number.isInteger(bytes[i]) || bytes[i] < 0 || bytes[i] > 255) {\n return false;\n }\n }\n return true;\n }\n\n function _x86Multiply(m, n) {\n //\n // Given two 32bit ints, returns the two multiplied together as a\n // 32bit int.\n //\n\n return ((m & 0xffff) * n) + ((((m >>> 16) * n) & 0xffff) << 16);\n }\n\n function _x86Rotl(m, n) {\n //\n // Given a 32bit int and an int representing a number of bit positions,\n // returns the 32bit int rotated left by that number of positions.\n //\n\n return (m << n) | (m >>> (32 - n));\n }\n\n function _x86Fmix(h) {\n //\n // Given a block, returns murmurHash3's final x86 mix of that block.\n //\n\n h ^= h >>> 16;\n h = _x86Multiply(h, 0x85ebca6b);\n h ^= h >>> 13;\n h = _x86Multiply(h, 0xc2b2ae35);\n h ^= h >>> 16;\n\n return h;\n }\n\n function _x64Add(m, n) {\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // added together as a 64bit int (as an array of two 32bit ints).\n //\n\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\n var o = [0, 0, 0, 0];\n\n o[3] += m[3] + n[3];\n o[2] += o[3] >>> 16;\n o[3] &= 0xffff;\n\n o[2] += m[2] + n[2];\n o[1] += o[2] >>> 16;\n o[2] &= 0xffff;\n\n o[1] += m[1] + n[1];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[0] += m[0] + n[0];\n o[0] &= 0xffff;\n\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\n }\n\n function _x64Multiply(m, n) {\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // multiplied together as a 64bit int (as an array of two 32bit ints).\n //\n\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\n var o = [0, 0, 0, 0];\n\n o[3] += m[3] * n[3];\n o[2] += o[3] >>> 16;\n o[3] &= 0xffff;\n\n o[2] += m[2] * n[3];\n o[1] += o[2] >>> 16;\n o[2] &= 0xffff;\n\n o[2] += m[3] * n[2];\n o[1] += o[2] >>> 16;\n o[2] &= 0xffff;\n\n o[1] += m[1] * n[3];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[1] += m[2] * n[2];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[1] += m[3] * n[1];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[0] += (m[0] * n[3]) + (m[1] * n[2]) + (m[2] * n[1]) + (m[3] * n[0]);\n o[0] &= 0xffff;\n\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\n }\n\n function _x64Rotl(m, n) {\n //\n // Given a 64bit int (as an array of two 32bit ints) and an int\n // representing a number of bit positions, returns the 64bit int (as an\n // array of two 32bit ints) rotated left by that number of positions.\n //\n\n n %= 64;\n\n if (n === 32) {\n return [m[1], m[0]];\n } else if (n < 32) {\n return [(m[0] << n) | (m[1] >>> (32 - n)), (m[1] << n) | (m[0] >>> (32 - n))];\n } else {\n n -= 32;\n return [(m[1] << n) | (m[0] >>> (32 - n)), (m[0] << n) | (m[1] >>> (32 - n))];\n }\n }\n\n function _x64LeftShift(m, n) {\n //\n // Given a 64bit int (as an array of two 32bit ints) and an int\n // representing a number of bit positions, returns the 64bit int (as an\n // array of two 32bit ints) shifted left by that number of positions.\n //\n\n n %= 64;\n\n if (n === 0) {\n return m;\n } else if (n < 32) {\n return [(m[0] << n) | (m[1] >>> (32 - n)), m[1] << n];\n } else {\n return [m[1] << (n - 32), 0];\n }\n }\n\n function _x64Xor(m, n) {\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // xored together as a 64bit int (as an array of two 32bit ints).\n //\n\n return [m[0] ^ n[0], m[1] ^ n[1]];\n }\n\n function _x64Fmix(h) {\n //\n // Given a block, returns murmurHash3's final x64 mix of that block.\n // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the\n // only place where we need to right shift 64bit ints.)\n //\n\n h = _x64Xor(h, [0, h[0] >>> 1]);\n h = _x64Multiply(h, [0xff51afd7, 0xed558ccd]);\n h = _x64Xor(h, [0, h[0] >>> 1]);\n h = _x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53]);\n h = _x64Xor(h, [0, h[0] >>> 1]);\n\n return h;\n }\n\n // PUBLIC FUNCTIONS\n // ----------------\n\n library.x86.hash32 = function (bytes, seed) {\n //\n // Given a string and an optional seed as an int, returns a 32 bit hash\n // using the x86 flavor of MurmurHash3, as an unsigned int.\n //\n if (library.inputValidation && !_validBytes(bytes)) {\n return undefined;\n }\n seed = seed || 0;\n\n var remainder = bytes.length % 4;\n var blocks = bytes.length - remainder;\n\n var h1 = seed;\n\n var k1 = 0;\n\n var c1 = 0xcc9e2d51;\n var c2 = 0x1b873593;\n\n for (var i = 0; i < blocks; i = i + 4) {\n k1 = (bytes[i]) | (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24);\n\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n\n h1 ^= k1;\n h1 = _x86Rotl(h1, 13);\n h1 = _x86Multiply(h1, 5) + 0xe6546b64;\n }\n\n k1 = 0;\n\n switch (remainder) {\n case 3:\n k1 ^= bytes[i + 2] << 16;\n\n case 2:\n k1 ^= bytes[i + 1] << 8;\n\n case 1:\n k1 ^= bytes[i];\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n h1 ^= k1;\n }\n\n h1 ^= bytes.length;\n h1 = _x86Fmix(h1);\n\n return h1 >>> 0;\n };\n\n library.x86.hash128 = function (bytes, seed) {\n //\n // Given a string and an optional seed as an int, returns a 128 bit\n // hash using the x86 flavor of MurmurHash3, as an unsigned hex.\n //\n if (library.inputValidation && !_validBytes(bytes)) {\n return undefined;\n }\n\n seed = seed || 0;\n var remainder = bytes.length % 16;\n var blocks = bytes.length - remainder;\n\n var h1 = seed;\n var h2 = seed;\n var h3 = seed;\n var h4 = seed;\n\n var k1 = 0;\n var k2 = 0;\n var k3 = 0;\n var k4 = 0;\n\n var c1 = 0x239b961b;\n var c2 = 0xab0e9789;\n var c3 = 0x38b34ae5;\n var c4 = 0xa1e38b93;\n\n for (var i = 0; i < blocks; i = i + 16) {\n k1 = (bytes[i]) | (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24);\n k2 = (bytes[i + 4]) | (bytes[i + 5] << 8) | (bytes[i + 6] << 16) | (bytes[i + 7] << 24);\n k3 = (bytes[i + 8]) | (bytes[i + 9] << 8) | (bytes[i + 10] << 16) | (bytes[i + 11] << 24);\n k4 = (bytes[i + 12]) | (bytes[i + 13] << 8) | (bytes[i + 14] << 16) | (bytes[i + 15] << 24);\n\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n h1 ^= k1;\n\n h1 = _x86Rotl(h1, 19);\n h1 += h2;\n h1 = _x86Multiply(h1, 5) + 0x561ccd1b;\n\n k2 = _x86Multiply(k2, c2);\n k2 = _x86Rotl(k2, 16);\n k2 = _x86Multiply(k2, c3);\n h2 ^= k2;\n\n h2 = _x86Rotl(h2, 17);\n h2 += h3;\n h2 = _x86Multiply(h2, 5) + 0x0bcaa747;\n\n k3 = _x86Multiply(k3, c3);\n k3 = _x86Rotl(k3, 17);\n k3 = _x86Multiply(k3, c4);\n h3 ^= k3;\n\n h3 = _x86Rotl(h3, 15);\n h3 += h4;\n h3 = _x86Multiply(h3, 5) + 0x96cd1c35;\n\n k4 = _x86Multiply(k4, c4);\n k4 = _x86Rotl(k4, 18);\n k4 = _x86Multiply(k4, c1);\n h4 ^= k4;\n\n h4 = _x86Rotl(h4, 13);\n h4 += h1;\n h4 = _x86Multiply(h4, 5) + 0x32ac3b17;\n }\n\n k1 = 0;\n k2 = 0;\n k3 = 0;\n k4 = 0;\n\n switch (remainder) {\n case 15:\n k4 ^= bytes[i + 14] << 16;\n\n case 14:\n k4 ^= bytes[i + 13] << 8;\n\n case 13:\n k4 ^= bytes[i + 12];\n k4 = _x86Multiply(k4, c4);\n k4 = _x86Rotl(k4, 18);\n k4 = _x86Multiply(k4, c1);\n h4 ^= k4;\n\n case 12:\n k3 ^= bytes[i + 11] << 24;\n\n case 11:\n k3 ^= bytes[i + 10] << 16;\n\n case 10:\n k3 ^= bytes[i + 9] << 8;\n\n case 9:\n k3 ^= bytes[i + 8];\n k3 = _x86Multiply(k3, c3);\n k3 = _x86Rotl(k3, 17);\n k3 = _x86Multiply(k3, c4);\n h3 ^= k3;\n\n case 8:\n k2 ^= bytes[i + 7] << 24;\n\n case 7:\n k2 ^= bytes[i + 6] << 16;\n\n case 6:\n k2 ^= bytes[i + 5] << 8;\n\n case 5:\n k2 ^= bytes[i + 4];\n k2 = _x86Multiply(k2, c2);\n k2 = _x86Rotl(k2, 16);\n k2 = _x86Multiply(k2, c3);\n h2 ^= k2;\n\n case 4:\n k1 ^= bytes[i + 3] << 24;\n\n case 3:\n k1 ^= bytes[i + 2] << 16;\n\n case 2:\n k1 ^= bytes[i + 1] << 8;\n\n case 1:\n k1 ^= bytes[i];\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n h1 ^= k1;\n }\n\n h1 ^= bytes.length;\n h2 ^= bytes.length;\n h3 ^= bytes.length;\n h4 ^= bytes.length;\n\n h1 += h2;\n h1 += h3;\n h1 += h4;\n h2 += h1;\n h3 += h1;\n h4 += h1;\n\n h1 = _x86Fmix(h1);\n h2 = _x86Fmix(h2);\n h3 = _x86Fmix(h3);\n h4 = _x86Fmix(h4);\n\n h1 += h2;\n h1 += h3;\n h1 += h4;\n h2 += h1;\n h3 += h1;\n h4 += h1;\n\n return (\"00000000\" + (h1 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h3 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h4 >>> 0).toString(16)).slice(-8);\n };\n\n library.x64.hash128 = function (bytes, seed) {\n //\n // Given a string and an optional seed as an int, returns a 128 bit\n // hash using the x64 flavor of MurmurHash3, as an unsigned hex.\n //\n if (library.inputValidation && !_validBytes(bytes)) {\n return undefined;\n }\n seed = seed || 0;\n\n var remainder = bytes.length % 16;\n var blocks = bytes.length - remainder;\n\n var h1 = [0, seed];\n var h2 = [0, seed];\n\n var k1 = [0, 0];\n var k2 = [0, 0];\n\n var c1 = [0x87c37b91, 0x114253d5];\n var c2 = [0x4cf5ad43, 0x2745937f];\n\n for (var i = 0; i < blocks; i = i + 16) {\n k1 = [(bytes[i + 4]) | (bytes[i + 5] << 8) | (bytes[i + 6] << 16) | (bytes[i + 7] << 24), (bytes[i]) |\n (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24)];\n k2 = [(bytes[i + 12]) | (bytes[i + 13] << 8) | (bytes[i + 14] << 16) | (bytes[i + 15] << 24), (bytes[i + 8]) |\n (bytes[i + 9] << 8) | (bytes[i + 10] << 16) | (bytes[i + 11] << 24)];\n\n k1 = _x64Multiply(k1, c1);\n k1 = _x64Rotl(k1, 31);\n k1 = _x64Multiply(k1, c2);\n h1 = _x64Xor(h1, k1);\n\n h1 = _x64Rotl(h1, 27);\n h1 = _x64Add(h1, h2);\n h1 = _x64Add(_x64Multiply(h1, [0, 5]), [0, 0x52dce729]);\n\n k2 = _x64Multiply(k2, c2);\n k2 = _x64Rotl(k2, 33);\n k2 = _x64Multiply(k2, c1);\n h2 = _x64Xor(h2, k2);\n\n h2 = _x64Rotl(h2, 31);\n h2 = _x64Add(h2, h1);\n h2 = _x64Add(_x64Multiply(h2, [0, 5]), [0, 0x38495ab5]);\n }\n\n k1 = [0, 0];\n k2 = [0, 0];\n\n switch (remainder) {\n case 15:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 14]], 48));\n\n case 14:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 13]], 40));\n\n case 13:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 12]], 32));\n\n case 12:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 11]], 24));\n\n case 11:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 10]], 16));\n\n case 10:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 9]], 8));\n\n case 9:\n k2 = _x64Xor(k2, [0, bytes[i + 8]]);\n k2 = _x64Multiply(k2, c2);\n k2 = _x64Rotl(k2, 33);\n k2 = _x64Multiply(k2, c1);\n h2 = _x64Xor(h2, k2);\n\n case 8:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 7]], 56));\n\n case 7:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 6]], 48));\n\n case 6:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 5]], 40));\n\n case 5:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 4]], 32));\n\n case 4:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 3]], 24));\n\n case 3:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 2]], 16));\n\n case 2:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 1]], 8));\n\n case 1:\n k1 = _x64Xor(k1, [0, bytes[i]]);\n k1 = _x64Multiply(k1, c1);\n k1 = _x64Rotl(k1, 31);\n k1 = _x64Multiply(k1, c2);\n h1 = _x64Xor(h1, k1);\n }\n\n h1 = _x64Xor(h1, [0, bytes.length]);\n h2 = _x64Xor(h2, [0, bytes.length]);\n\n h1 = _x64Add(h1, h2);\n h2 = _x64Add(h2, h1);\n\n h1 = _x64Fmix(h1);\n h2 = _x64Fmix(h2);\n\n h1 = _x64Add(h1, h2);\n h2 = _x64Add(h2, h1);\n\n return (\"00000000\" + (h1[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h1[1] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[1] >>> 0).toString(16)).slice(-8);\n };\n\n // INITIALIZATION\n // --------------\n\n // Export murmurHash3 for CommonJS, either as an AMD module or just as part\n // of the global object.\n if (typeof exports !== 'undefined') {\n\n if (typeof module !== 'undefined' && module.exports) {\n exports = module.exports = library;\n }\n\n exports.murmurHash3 = library;\n\n } else if (typeof define === 'function' && define.amd) {\n\n define([], function () {\n return library;\n });\n } else {\n\n // Use murmurHash3.noConflict to restore `murmurHash3` back to its\n // original value. Returns a reference to the library object, to allow\n // it to be used under a different name.\n library._murmurHash3 = root.murmurHash3;\n\n library.noConflict = function () {\n root.murmurHash3 = library._murmurHash3;\n library._murmurHash3 = undefined;\n library.noConflict = undefined;\n\n return library;\n };\n\n root.murmurHash3 = library;\n }\n})(this);\n","module.exports = readable => {\n // Node.js stream\n if (readable[Symbol.asyncIterator]) return readable\n\n // Browser ReadableStream\n if (readable.getReader) {\n return (async function * () {\n const reader = readable.getReader()\n\n try {\n while (true) {\n const { done, value } = await reader.read()\n if (done) return\n yield value\n }\n } finally {\n reader.releaseLock()\n }\n })()\n }\n\n throw new Error('unknown stream')\n}\n","'use strict'\n\nmodule.exports = (mode) => {\n if (mode === undefined || mode === null) {\n return undefined\n }\n\n if (typeof mode === 'string' || mode instanceof String) {\n return mode\n }\n\n return mode.toString(8).padStart(4, '0')\n}\n","module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","/* eslint-disable require-await */\n'use strict'\n\nconst { Buffer } = require('buffer')\nconst multihash = require('multihashes')\n\nconst crypto = self.crypto || self.msCrypto\n\nconst digest = async (data, alg) => {\n if (typeof self === 'undefined' || (!self.crypto && !self.msCrypto)) {\n throw new Error(\n 'Please use a browser with webcrypto support and ensure the code has been delivered securely via HTTPS/TLS and run within a Secure Context'\n )\n }\n switch (alg) {\n case 'sha1':\n return Buffer.from(await crypto.subtle.digest({ name: 'SHA-1' }, data))\n case 'sha2-256':\n return Buffer.from(await crypto.subtle.digest({ name: 'SHA-256' }, data))\n case 'sha2-512':\n return Buffer.from(await crypto.subtle.digest({ name: 'SHA-512' }, data))\n case 'dbl-sha2-256': {\n const d = await crypto.subtle.digest({ name: 'SHA-256' }, data)\n return Buffer.from(await crypto.subtle.digest({ name: 'SHA-256' }, d))\n }\n default:\n throw new Error(`${alg} is not a supported algorithm`)\n }\n}\n\nmodule.exports = {\n factory: (alg) => async (data) => {\n return digest(data, alg)\n },\n digest,\n multihashing: async (buf, alg, length) => {\n const h = await digest(buf, alg, length)\n return multihash.encode(h, alg, length)\n }\n}\n","'use strict'\n\nconst configure = require('../../lib/configure')\nconst toUrlSearchParams = require('../../lib/to-url-search-params')\n\nmodule.exports = configure(api => {\n return async (options = {}) => {\n const res = await api.post('name/pubsub/subs', {\n timeout: options.timeout,\n signal: options.signal,\n searchParams: toUrlSearchParams(options),\n headers: options.headers\n })\n const data = await res.json()\n\n return data.Strings || []\n }\n})\n","'use strict'\n/* eslint-env browser */\n\nconst { TimeoutError, AbortError } = require('./error')\n\n/**\n * @typedef {RequestInit & ExtraFetchOptions} FetchOptions\n * @typedef {Object} ExtraFetchOptions\n * @property {number} [timeout]\n * @property {URLSearchParams} [searchParams]\n * @property {function({total:number, loaded:number, lengthComputable:boolean}):void} [onUploadProgress]\n * @property {function({total:number, loaded:number, lengthComputable:boolean}):void} [onDownloadProgress]\n * @property {string} [overrideMimeType]\n * @returns {Promise}\n */\n\n/**\n * @param {string|URL} url\n * @param {FetchOptions} [options]\n * @returns {Promise}\n */\nconst fetch = (url, options = {}) => {\n const request = new XMLHttpRequest()\n request.open(options.method || 'GET', url.toString(), true)\n\n const { timeout } = options\n if (timeout > 0 && timeout < Infinity) {\n request.timeout = options.timeout\n }\n\n if (options.overrideMimeType != null) {\n request.overrideMimeType(options.overrideMimeType)\n }\n\n if (options.headers) {\n for (const [name, value] of options.headers.entries()) {\n request.setRequestHeader(name, value)\n }\n }\n\n if (options.signal) {\n options.signal.onabort = () => request.abort()\n }\n\n if (options.onDownloadProgress) {\n request.onprogress = options.onDownloadProgress\n }\n\n if (options.onUploadProgress) {\n request.upload.onprogress = options.onUploadProgress\n }\n\n return new Promise((resolve, reject) => {\n /**\n * @param {Event} event\n */\n const handleEvent = (event) => {\n switch (event.type) {\n case 'error': {\n resolve(Response.error())\n break\n }\n case 'load': {\n resolve(\n new ResponseWithURL(request.responseURL, request.response, {\n status: request.status,\n statusText: request.statusText,\n headers: parseHeaders(request.getAllResponseHeaders())\n })\n )\n break\n }\n case 'timeout': {\n reject(new TimeoutError())\n break\n }\n case 'abort': {\n reject(new AbortError())\n break\n }\n default: {\n break\n }\n }\n }\n request.onerror = handleEvent\n request.onload = handleEvent\n request.ontimeout = handleEvent\n request.onabort = handleEvent\n\n request.send(options.body)\n })\n}\nexports.fetch = fetch\nexports.Request = Request\nexports.Headers = Headers\n\n/**\n * @param {string} input\n * @returns {Headers}\n */\nconst parseHeaders = (input) => {\n const headers = new Headers()\n for (const line of input.trim().split(/[\\r\\n]+/)) {\n const index = line.indexOf(': ')\n if (index > 0) {\n headers.set(line.slice(0, index), line.slice(index + 1))\n }\n }\n\n return headers\n}\n\nclass ResponseWithURL extends Response {\n /**\n * @param {string} url\n * @param {string|Blob|ArrayBufferView|ArrayBuffer|FormData|ReadableStream} body\n * @param {ResponseInit} options\n */\n constructor (url, body, options) {\n super(body, options)\n Object.defineProperty(this, 'url', { value: url })\n }\n}\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","'use strict'\nconst isElectron = require('is-electron')\n\nconst IS_ENV_WITH_DOM = typeof window === 'object' && typeof document === 'object' && document.nodeType === 9\nconst IS_ELECTRON = isElectron()\nconst IS_BROWSER = IS_ENV_WITH_DOM && !IS_ELECTRON\nconst IS_ELECTRON_MAIN = IS_ELECTRON && !IS_ENV_WITH_DOM\nconst IS_ELECTRON_RENDERER = IS_ELECTRON && IS_ENV_WITH_DOM\nconst IS_NODE = typeof require === 'function' && typeof process !== 'undefined' && typeof process.release !== 'undefined' && process.release.name === 'node' && !IS_ELECTRON\n// eslint-disable-next-line no-undef\nconst IS_WEBWORKER = typeof importScripts === 'function' && typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope\nconst IS_TEST = typeof process !== 'undefined' && typeof process.env !== 'undefined' && process.env.NODE_ENV === 'test'\n\nmodule.exports = {\n isTest: IS_TEST,\n isElectron: IS_ELECTRON,\n isElectronMain: IS_ELECTRON_MAIN,\n isElectronRenderer: IS_ELECTRON_RENDERER,\n isNode: IS_NODE,\n /**\n * Detects browser main thread **NOT** web worker or service worker\n */\n isBrowser: IS_BROWSER,\n isWebWorker: IS_WEBWORKER,\n isEnvWithDom: IS_ENV_WITH_DOM\n}\n","/*!\n * Vue.js v2.6.12\n * (c) 2014-2020 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g.