!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],t):t(CodeMirror)}((function(t){"use strict";var e,n,r=t.Pos;function i(t,e){for(var n=function(t){var e=t.flags;return null!=e?e:(t.ignoreCase?"i":"")+(t.global?"g":"")+(t.multiline?"m":"")}(t),r=n,i=0;if);a++){var u=t.getLine(s++);l=null==l?u:l+"\n"+u}c*=2,e.lastIndex=n.ch;var g=e.exec(l);if(g){var m=l.slice(0,g.index).split("\n"),v=g[0].split("\n"),d=n.line+m.length-1,p=m[m.length-1].length;return{from:r(d,p),to:r(d+v.length-1,1==v.length?p+v[0].length:v[v.length-1].length),match:g}}}}function c(t,e,n){for(var r,i=0;i<=t.length;){e.lastIndex=i;var o=e.exec(t);if(!o)break;var h=o.index+o[0].length;if(h>t.length-n)break;(!r||h>r.index+r[0].length)&&(r=o),i=o.index+1}return r}function s(t,e,n){e=i(e,"g");for(var o=n.line,h=n.ch,l=t.firstLine();o>=l;o--,h=-1){var s=t.getLine(o),f=c(s,e,h<0?0:s.length-h);if(f)return{from:r(o,f.index),to:r(o,f.index+f[0].length),match:f}}}function f(t,e,n){if(!o(e))return s(t,e,n);e=i(e,"gm");for(var h,l=1,f=t.getLine(n.line).length-n.ch,a=n.line,u=t.firstLine();a>=u;){for(var g=0;g=u;g++){var m=t.getLine(a--);h=null==h?m:m+"\n"+h}l*=2;var v=c(h,e,f);if(v){var d=h.slice(0,v.index).split("\n"),p=v[0].split("\n"),x=a+d.length,L=d[d.length-1].length;return{from:r(x,L),to:r(x+p.length-1,1==p.length?L+p[0].length:p[p.length-1].length),match:v}}}}function a(t,e,n,r){if(t.length==e.length)return n;for(var i=0,o=n+Math.max(0,t.length-e.length);;){if(i==o)return i;var h=i+o>>1,l=r(t.slice(0,h)).length;if(l==n)return h;l>n?o=h:i=h+1}}function u(t,i,o,h){if(!i.length)return null;var l=h?e:n,c=l(i).split(/\r|\n\r?/);t:for(var s=o.line,f=o.ch,u=t.lastLine()+1-c.length;s<=u;s++,f=0){var g=t.getLine(s).slice(f),m=l(g);if(1==c.length){var v=m.indexOf(c[0]);if(-1==v)continue t;o=a(g,m,v,l)+f;return{from:r(s,a(g,m,v,l)+f),to:r(s,a(g,m,v+c[0].length,l)+f)}}var d=m.length-c[0].length;if(m.slice(d)==c[0]){for(var p=1;p=u;s--,f=-1){var g=t.getLine(s);f>-1&&(g=g.slice(0,f));var m=l(g);if(1==c.length){var v=m.lastIndexOf(c[0]);if(-1==v)continue t;return{from:r(s,a(g,m,v,l)),to:r(s,a(g,m,v+c[0].length,l))}}var d=c[c.length-1];if(m.slice(0,d.length)==d){var p=1;for(o=s-c.length+1;p(this.doc.getLine(n.line)||"").length&&(n.ch=0,n.line++)),0!=t.cmpPos(n,this.doc.clipPos(n))))return this.atOccurrence=!1;var i=this.matches(e,n);if(this.afterEmptyMatch=i&&0==t.cmpPos(i.from,i.to),i)return this.pos=i,this.atOccurrence=!0,this.pos.match||!0;var o=r(e?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:o,to:o},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(e,n){if(this.atOccurrence){var i=t.splitLines(e);this.doc.replaceRange(i,this.pos.from,this.pos.to,n),this.pos.to=r(this.pos.from.line+i.length-1,i[i.length-1].length+(1==i.length?this.pos.from.ch:0))}}},t.defineExtension("getSearchCursor",(function(t,e,n){return new m(this.doc,t,e,n)})),t.defineDocExtension("getSearchCursor",(function(t,e,n){return new m(this,t,e,n)})),t.defineExtension("selectMatches",(function(e,n){for(var r=[],i=this.getSearchCursor(e,this.getCursor("from"),n);i.findNext()&&!(t.cmpPos(i.to(),this.getCursor("to"))>0);)r.push({anchor:i.from(),head:i.to()});r.length&&this.setSelections(r,0)}))}));