{f.d(Fe,{Ho:()=>Kt,kI:()=>Ri,Bz:()=>ts});var I=f(13338),h=f(94901),te=f(94327),$=f(2106),x=f(10998),ie=f(16844),Q=f(37264),J=f(3902),z=f(57999),S=f(15365),_=f(28061),y=f(93702),C=f(12590),d=f(77922),w=f(52394),D=f(66055);class L{constructor(b,P,M,q){this.range=b,this.nestingLevel=P,this.nestingLevelOfEqualBracketType=M,this.isInvalid=q}}class k{constructor(b,P,M,q,p,F){this.range=b,this.openingBracketRange=P,this.closingBracketRange=M,this.nestingLevel=q,this.nestingLevelOfEqualBracketType=p,this.bracketPairNode=F}get openingBracketInfo(){return this.bracketPairNode.openingBracket.bracketInfo}}class j extends k{constructor(b,P,M,q,p,F,de){super(b,P,M,q,p,F),this.minVisibleColumnIndentation=de}}var N=f(22994),B=f(85702),T=f(34883),H=f(68302),Y=f(60756),ee=f(33206);class ce extends x.jG{constructor(b,P){if(super(),this.textModel=b,this.getLanguageConfiguration=P,this.didChangeEmitter=new $.vl,this.denseKeyProvider=new Y.Mg,this.brackets=new B.Z(this.denseKeyProvider,this.getLanguageConfiguration),this.onDidChange=this.didChangeEmitter.event,b.tokenization.backgroundTokenizationState===0){const M=this.brackets.getSingleLanguageBracketTokens(this.textModel.getLanguageId()),q=new ee._(this.textModel.getValue(),M);this.initialAstWithoutTokens=(0,H.T)(q,[],void 0,!0),this.astWithTokens=this.initialAstWithoutTokens}else b.tokenization.backgroundTokenizationState===2?(this.initialAstWithoutTokens=void 0,this.astWithTokens=this.parseDocumentFromTextBuffer([],void 0,!1)):b.tokenization.backgroundTokenizationState===1&&(this.initialAstWithoutTokens=this.parseDocumentFromTextBuffer([],void 0,!0),this.astWithTokens=this.initialAstWithoutTokens)}didLanguageChange(b){return this.brackets.didLanguageChange(b)}handleDidChangeBackgroundTokenizationState(){if(this.textModel.tokenization.backgroundTokenizationState===2){const b=this.initialAstWithoutTokens===void 0;this.initialAstWithoutTokens=void 0,b||this.didChangeEmitter.fire()}}handleDidChangeTokens({ranges:b}){const P=b.map(M=>new N.c((0,T.qe)(M.fromLineNumber-1,0),(0,T.qe)(M.toLineNumber,0),(0,T.qe)(M.toLineNumber-M.fromLineNumber+1,0)));this.astWithTokens=this.parseDocumentFromTextBuffer(P,this.astWithTokens,!1),this.initialAstWithoutTokens||this.didChangeEmitter.fire()}handleContentChanged(b){const P=b.changes.map(M=>{const q=_.Q.lift(M.range);return new N.c((0,T.VL)(q.getStartPosition()),(0,T.VL)(q.getEndPosition()),(0,T.rR)(M.text))}).reverse();this.astWithTokens=this.parseDocumentFromTextBuffer(P,this.astWithTokens,!1),this.initialAstWithoutTokens&&(this.initialAstWithoutTokens=this.parseDocumentFromTextBuffer(P,this.initialAstWithoutTokens,!1))}parseDocumentFromTextBuffer(b,P,M){const p=P,F=new ee.tk(this.textModel,this.brackets);return(0,H.T)(F,b,p,M)}getBracketsInRange(b){const P=(0,T.qe)(b.startLineNumber-1,b.startColumn-1),M=(0,T.qe)(b.endLineNumber-1,b.endColumn-1),q=new Array,p=this.initialAstWithoutTokens||this.astWithTokens;return fe(p,T.Vp,p.length,P,M,q,0,new Map),q}getBracketPairsInRange(b,P){const M=new Array,q=(0,T.VL)(b.getStartPosition()),p=(0,T.VL)(b.getEndPosition()),F=this.initialAstWithoutTokens||this.astWithTokens,de=new oe(M,P,this.textModel);return Z(F,T.Vp,F.length,q,p,de,0,new Map),M}getFirstBracketAfter(b){const P=this.initialAstWithoutTokens||this.astWithTokens;return ge(P,T.Vp,P.length,(0,T.VL)(b))}getFirstBracketBefore(b){const P=this.initialAstWithoutTokens||this.astWithTokens;return pe(P,T.Vp,P.length,(0,T.VL)(b))}}function pe(qe,b,P,M){if(qe.kind===4||qe.kind===2){const q=[];for(const p of qe.children)P=(0,T.QB)(b,p.length),q.push({nodeOffsetStart:b,nodeOffsetEnd:P}),b=P;for(let p=q.length-1;p>=0;p--){const{nodeOffsetStart:F,nodeOffsetEnd:de}=q[p];if((0,T.zG)(F,M)){const be=pe(qe.children[p],F,de,M);if(be)return be}}return null}else{if(qe.kind===3)return null;if(qe.kind===1){const q=(0,T.Qx)(b,P);return{bracketInfo:qe.bracketInfo,range:q}}}return null}function ge(qe,b,P,M){if(qe.kind===4||qe.kind===2){for(const q of qe.children){if(P=(0,T.QB)(b,q.length),(0,T.zG)(M,P)){const p=ge(q,b,P,M);if(p)return p}b=P}return null}else{if(qe.kind===3)return null;if(qe.kind===1){const q=(0,T.Qx)(b,P);return{bracketInfo:qe.bracketInfo,range:q}}}return null}function fe(qe,b,P,M,q,p,F,de){if(!(F>200)){if(qe.kind===4)for(const be of qe.children)P=(0,T.QB)(b,be.length),(0,T.vr)(b,q)&&(0,T.o0)(P,M)&&fe(be,b,P,M,q,p,F,de),b=P;else if(qe.kind===2){let be=0;if(de){let ye=de.get(qe.openingBracket.text);ye===void 0&&(ye=0),be=ye,ye++,de.set(qe.openingBracket.text,ye)}{const ye=qe.openingBracket;if(P=(0,T.QB)(b,ye.length),(0,T.vr)(b,q)&&(0,T.o0)(P,M)){const Me=(0,T.Qx)(b,P);p.push(new L(Me,F,be,!qe.closingBracket))}b=P}if(qe.child){const ye=qe.child;P=(0,T.QB)(b,ye.length),(0,T.vr)(b,q)&&(0,T.o0)(P,M)&&fe(ye,b,P,M,q,p,F+1,de),b=P}if(qe.closingBracket){const ye=qe.closingBracket;if(P=(0,T.QB)(b,ye.length),(0,T.vr)(b,q)&&(0,T.o0)(P,M)){const Me=(0,T.Qx)(b,P);p.push(new L(Me,F,be,!1))}b=P}de?.set(qe.openingBracket.text,be)}else if(qe.kind===3){const be=(0,T.Qx)(b,P);p.push(new L(be,F-1,0,!0))}else if(qe.kind===1){const be=(0,T.Qx)(b,P);p.push(new L(be,F-1,0,!1))}}}class oe{constructor(b,P,M){this.result=b,this.includeMinIndentation=P,this.textModel=M}}function Z(qe,b,P,M,q,p,F,de){var be;if(!(F>200))if(qe.kind===2){let ye=0;if(de){let $e=de.get(qe.openingBracket.text);$e===void 0&&($e=0),ye=$e,$e++,de.set(qe.openingBracket.text,$e)}const Me=(0,T.QB)(b,qe.openingBracket.length);let He=-1;if(p.includeMinIndentation&&(He=qe.computeMinIndentation(b,p.textModel)),p.result.push(new j((0,T.Qx)(b,P),(0,T.Qx)(b,Me),qe.closingBracket?(0,T.Qx)((0,T.QB)(Me,((be=qe.child)===null||be===void 0?void 0:be.length)||T.Vp),P):void 0,F,ye,qe,He)),b=Me,qe.child){const $e=qe.child;P=(0,T.QB)(b,$e.length),(0,T.vr)(b,q)&&(0,T.o0)(P,M)&&Z($e,b,P,M,q,p,F+1,de)}de?.set(qe.openingBracket.text,ye)}else{let ye=b;for(const Me of qe.children){const He=ye;ye=(0,T.QB)(ye,Me.length),(0,T.vr)(He,q)&&(0,T.vr)(M,ye)&&Z(Me,He,ye,M,q,p,F,de)}}}var le=f(19184),se=f(1804);class X extends x.jG{constructor(b,P){super(),this.textModel=b,this.languageConfigurationService=P,this.bracketPairsTree=this._register(new x.HE),this.onDidChangeEmitter=new $.vl,this.onDidChange=this.onDidChangeEmitter.event,this.bracketsRequested=!1,this._register(this.languageConfigurationService.onDidChange(M=>{var q;(!M.languageId||!((q=this.bracketPairsTree.value)===null||q===void 0)&&q.object.didLanguageChange(M.languageId))&&(this.bracketPairsTree.clear(),this.updateBracketPairsTree())}))}get canBuildAST(){return this.textModel.getValueLength()<=5e6}handleDidChangeOptions(b){this.bracketPairsTree.clear(),this.updateBracketPairsTree()}handleDidChangeLanguage(b){this.bracketPairsTree.clear(),this.updateBracketPairsTree()}handleDidChangeContent(b){var P;(P=this.bracketPairsTree.value)===null||P===void 0||P.object.handleContentChanged(b)}handleDidChangeBackgroundTokenizationState(){var b;(b=this.bracketPairsTree.value)===null||b===void 0||b.object.handleDidChangeBackgroundTokenizationState()}handleDidChangeTokens(b){var P;(P=this.bracketPairsTree.value)===null||P===void 0||P.object.handleDidChangeTokens(b)}updateBracketPairsTree(){if(this.bracketsRequested&&this.canBuildAST){if(!this.bracketPairsTree.value){const b=new x.Cm;this.bracketPairsTree.value=K(b.add(new ce(this.textModel,P=>this.languageConfigurationService.getLanguageConfiguration(P))),b),b.add(this.bracketPairsTree.value.object.onDidChange(P=>this.onDidChangeEmitter.fire(P))),this.onDidChangeEmitter.fire()}}else this.bracketPairsTree.value&&(this.bracketPairsTree.clear(),this.onDidChangeEmitter.fire())}getBracketPairsInRange(b){var P;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((P=this.bracketPairsTree.value)===null||P===void 0?void 0:P.object.getBracketPairsInRange(b,!1))||[]}getBracketPairsInRangeWithMinIndentation(b){var P;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((P=this.bracketPairsTree.value)===null||P===void 0?void 0:P.object.getBracketPairsInRange(b,!0))||[]}getBracketsInRange(b){var P;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((P=this.bracketPairsTree.value)===null||P===void 0?void 0:P.object.getBracketsInRange(b))||[]}findMatchingBracketUp(b,P,M){const q=this.textModel.validatePosition(P),p=this.textModel.getLanguageIdAtPosition(q.lineNumber,q.column);if(this.canBuildAST){const F=this.languageConfigurationService.getLanguageConfiguration(p).bracketsNew.getClosingBracketInfo(b);if(!F)return null;const de=(0,I.Uk)(this.getBracketPairsInRange(_.Q.fromPositions(P,P))||[],be=>F.closes(be.openingBracketInfo));return de?de.openingBracketRange:null}else{const F=b.toLowerCase(),de=this.languageConfigurationService.getLanguageConfiguration(p).brackets;if(!de)return null;const be=de.textIsBracket[F];return be?Ee(this._findMatchingBracketUp(be,q,he(M))):null}}matchBracket(b,P){if(this.canBuildAST){const M=(0,I.Jw)(this.getBracketPairsInRange(_.Q.fromPositions(b,b)).filter(q=>q.closingBracketRange!==void 0&&(q.openingBracketRange.containsPosition(b)||q.closingBracketRange.containsPosition(b))),(0,I.VE)(q=>q.openingBracketRange.containsPosition(b)?q.openingBracketRange:q.closingBracketRange,_.Q.compareRangesUsingStarts));return M?[M.openingBracketRange,M.closingBracketRange]:null}else{const M=he(P);return this._matchBracket(this.textModel.validatePosition(b),M)}}_establishBracketSearchOffsets(b,P,M,q){const p=P.getCount(),F=P.getLanguageId(q);let de=Math.max(0,b.column-1-M.maxBracketLength);for(let ye=q-1;ye>=0;ye--){const Me=P.getEndOffset(ye);if(Me<=de)break;if((0,le.Yo)(P.getStandardTokenType(ye))||P.getLanguageId(ye)!==F){de=Me;break}}let be=Math.min(P.getLineContent().length,b.column-1+M.maxBracketLength);for(let ye=q+1;ye=be)break;if((0,le.Yo)(P.getStandardTokenType(ye))||P.getLanguageId(ye)!==F){be=Me;break}}return{searchStartOffset:de,searchEndOffset:be}}_matchBracket(b,P){const M=b.lineNumber,q=this.textModel.tokenization.getLineTokens(M),p=this.textModel.getLineContent(M),F=q.findTokenIndexAtOffset(b.column-1);if(F<0)return null;const de=this.languageConfigurationService.getLanguageConfiguration(q.getLanguageId(F)).brackets;if(de&&!(0,le.Yo)(q.getStandardTokenType(F))){let{searchStartOffset:be,searchEndOffset:ye}=this._establishBracketSearchOffsets(b,q,de,F),Me=null;for(;;){const He=se.Fu.findNextBracketInRange(de.forwardRegex,M,p,be,ye);if(!He)break;if(He.startColumn<=b.column&&b.column<=He.endColumn){const $e=p.substring(He.startColumn-1,He.endColumn-1).toLowerCase(),gt=this._matchFoundBracket(He,de.textIsBracket[$e],de.textIsOpenBracket[$e],P);if(gt){if(gt instanceof ve)return null;Me=gt}}be=He.endColumn-1}if(Me)return Me}if(F>0&&q.getStartOffset(F)===b.column-1){const be=F-1,ye=this.languageConfigurationService.getLanguageConfiguration(q.getLanguageId(be)).brackets;if(ye&&!(0,le.Yo)(q.getStandardTokenType(be))){const{searchStartOffset:Me,searchEndOffset:He}=this._establishBracketSearchOffsets(b,q,ye,be),$e=se.Fu.findPrevBracketInRange(ye.reversedRegex,M,p,Me,He);if($e&&$e.startColumn<=b.column&&b.column<=$e.endColumn){const gt=p.substring($e.startColumn-1,$e.endColumn-1).toLowerCase(),wt=this._matchFoundBracket($e,ye.textIsBracket[gt],ye.textIsOpenBracket[gt],P);if(wt)return wt instanceof ve?null:wt}}}return null}_matchFoundBracket(b,P,M,q){if(!P)return null;const p=M?this._findMatchingBracketDown(P,b.getEndPosition(),q):this._findMatchingBracketUp(P,b.getStartPosition(),q);return p?p instanceof ve?p:[b,p]:null}_findMatchingBracketUp(b,P,M){const q=b.languageId,p=b.reversedRegex;let F=-1,de=0;const be=(ye,Me,He,$e)=>{for(;;){if(M&&++de%100===0&&!M())return ve.INSTANCE;const gt=se.Fu.findPrevBracketInRange(p,ye,Me,He,$e);if(!gt)break;const wt=Me.substring(gt.startColumn-1,gt.endColumn-1).toLowerCase();if(b.isOpen(wt)?F++:b.isClose(wt)&&F--,F===0)return gt;$e=gt.startColumn-1}return null};for(let ye=P.lineNumber;ye>=1;ye--){const Me=this.textModel.tokenization.getLineTokens(ye),He=Me.getCount(),$e=this.textModel.getLineContent(ye);let gt=He-1,wt=$e.length,It=$e.length;ye===P.lineNumber&&(gt=Me.findTokenIndexAtOffset(P.column-1),wt=P.column-1,It=P.column-1);let Pt=!0;for(;gt>=0;gt--){const Wt=Me.getLanguageId(gt)===q&&!(0,le.Yo)(Me.getStandardTokenType(gt));if(Wt)Pt?wt=Me.getStartOffset(gt):(wt=Me.getStartOffset(gt),It=Me.getEndOffset(gt));else if(Pt&&wt!==It){const Xt=be(ye,$e,wt,It);if(Xt)return Xt}Pt=Wt}if(Pt&&wt!==It){const Wt=be(ye,$e,wt,It);if(Wt)return Wt}}return null}_findMatchingBracketDown(b,P,M){const q=b.languageId,p=b.forwardRegex;let F=1,de=0;const be=(Me,He,$e,gt)=>{for(;;){if(M&&++de%100===0&&!M())return ve.INSTANCE;const wt=se.Fu.findNextBracketInRange(p,Me,He,$e,gt);if(!wt)break;const It=He.substring(wt.startColumn-1,wt.endColumn-1).toLowerCase();if(b.isOpen(It)?F++:b.isClose(It)&&F--,F===0)return wt;$e=wt.endColumn-1}return null},ye=this.textModel.getLineCount();for(let Me=P.lineNumber;Me<=ye;Me++){const He=this.textModel.tokenization.getLineTokens(Me),$e=He.getCount(),gt=this.textModel.getLineContent(Me);let wt=0,It=0,Pt=0;Me===P.lineNumber&&(wt=He.findTokenIndexAtOffset(P.column-1),It=P.column-1,Pt=P.column-1);let Wt=!0;for(;wt<$e;wt++){const Xt=He.getLanguageId(wt)===q&&!(0,le.Yo)(He.getStandardTokenType(wt));if(Xt)Wt||(It=He.getStartOffset(wt)),Pt=He.getEndOffset(wt);else if(Wt&&It!==Pt){const mi=be(Me,gt,It,Pt);if(mi)return mi}Wt=Xt}if(Wt&&It!==Pt){const Xt=be(Me,gt,It,Pt);if(Xt)return Xt}}return null}findPrevBracket(b){var P;const M=this.textModel.validatePosition(b);if(this.canBuildAST)return this.bracketsRequested=!0,this.updateBracketPairsTree(),((P=this.bracketPairsTree.value)===null||P===void 0?void 0:P.object.getFirstBracketBefore(M))||null;let q=null,p=null,F=null;for(let de=M.lineNumber;de>=1;de--){const be=this.textModel.tokenization.getLineTokens(de),ye=be.getCount(),Me=this.textModel.getLineContent(de);let He=ye-1,$e=Me.length,gt=Me.length;if(de===M.lineNumber){He=be.findTokenIndexAtOffset(M.column-1),$e=M.column-1,gt=M.column-1;const It=be.getLanguageId(He);q!==It&&(q=It,p=this.languageConfigurationService.getLanguageConfiguration(q).brackets,F=this.languageConfigurationService.getLanguageConfiguration(q).bracketsNew)}let wt=!0;for(;He>=0;He--){const It=be.getLanguageId(He);if(q!==It){if(p&&F&&wt&&$e!==gt){const Wt=se.Fu.findPrevBracketInRange(p.reversedRegex,de,Me,$e,gt);if(Wt)return this._toFoundBracket(F,Wt);wt=!1}q=It,p=this.languageConfigurationService.getLanguageConfiguration(q).brackets,F=this.languageConfigurationService.getLanguageConfiguration(q).bracketsNew}const Pt=!!p&&!(0,le.Yo)(be.getStandardTokenType(He));if(Pt)wt?$e=be.getStartOffset(He):($e=be.getStartOffset(He),gt=be.getEndOffset(He));else if(F&&p&&wt&&$e!==gt){const Wt=se.Fu.findPrevBracketInRange(p.reversedRegex,de,Me,$e,gt);if(Wt)return this._toFoundBracket(F,Wt)}wt=Pt}if(F&&p&&wt&&$e!==gt){const It=se.Fu.findPrevBracketInRange(p.reversedRegex,de,Me,$e,gt);if(It)return this._toFoundBracket(F,It)}}return null}findNextBracket(b){var P;const M=this.textModel.validatePosition(b);if(this.canBuildAST)return this.bracketsRequested=!0,this.updateBracketPairsTree(),((P=this.bracketPairsTree.value)===null||P===void 0?void 0:P.object.getFirstBracketAfter(M))||null;const q=this.textModel.getLineCount();let p=null,F=null,de=null;for(let be=M.lineNumber;be<=q;be++){const ye=this.textModel.tokenization.getLineTokens(be),Me=ye.getCount(),He=this.textModel.getLineContent(be);let $e=0,gt=0,wt=0;if(be===M.lineNumber){$e=ye.findTokenIndexAtOffset(M.column-1),gt=M.column-1,wt=M.column-1;const Pt=ye.getLanguageId($e);p!==Pt&&(p=Pt,F=this.languageConfigurationService.getLanguageConfiguration(p).brackets,de=this.languageConfigurationService.getLanguageConfiguration(p).bracketsNew)}let It=!0;for(;$eIt.closingBracketRange!==void 0&&It.range.strictContainsRange(gt));return wt?[wt.openingBracketRange,wt.closingBracketRange]:null}const q=he(P),p=this.textModel.getLineCount(),F=new Map;let de=[];const be=(gt,wt)=>{if(!F.has(gt)){const It=[];for(let Pt=0,Wt=wt?wt.brackets.length:0;Pt{for(;;){if(q&&++ye%100===0&&!q())return ve.INSTANCE;const Xt=se.Fu.findNextBracketInRange(gt.forwardRegex,wt,It,Pt,Wt);if(!Xt)break;const mi=It.substring(Xt.startColumn-1,Xt.endColumn-1).toLowerCase(),Ii=gt.textIsBracket[mi];if(Ii&&(Ii.isOpen(mi)?de[Ii.index]++:Ii.isClose(mi)&&de[Ii.index]--,de[Ii.index]===-1))return this._matchFoundBracket(Xt,Ii,!1,q);Pt=Xt.endColumn-1}return null};let He=null,$e=null;for(let gt=M.lineNumber;gt<=p;gt++){const wt=this.textModel.tokenization.getLineTokens(gt),It=wt.getCount(),Pt=this.textModel.getLineContent(gt);let Wt=0,Xt=0,mi=0;if(gt===M.lineNumber){Wt=wt.findTokenIndexAtOffset(M.column-1),Xt=M.column-1,mi=M.column-1;const Ji=wt.getLanguageId(Wt);He!==Ji&&(He=Ji,$e=this.languageConfigurationService.getLanguageConfiguration(He).brackets,be(He,$e))}let Ii=!0;for(;Wtb?.dispose()}}function he(qe){if(typeof qe>"u")return()=>!0;{const b=Date.now();return()=>Date.now()-b<=qe}}class ve{constructor(){this._searchCanceledBrand=void 0}}ve.INSTANCE=new ve;function Ee(qe){return qe instanceof ve?null:qe}var O=f(48295),ot=f(89044);class lt extends x.jG{constructor(b){super(),this.textModel=b,this.colorProvider=new We,this.onDidChangeEmitter=new $.vl,this.onDidChange=this.onDidChangeEmitter.event,this.colorizationOptions=b.getOptions().bracketPairColorizationOptions,this._register(b.bracketPairs.onDidChange(P=>{this.onDidChangeEmitter.fire()}))}handleDidChangeOptions(b){this.colorizationOptions=this.textModel.getOptions().bracketPairColorizationOptions}getDecorationsInRange(b,P,M){if(P===void 0)return[];if(!this.colorizationOptions.enabled)return[];const q=new Array,p=this.textModel.bracketPairs.getBracketsInRange(b);for(const F of p)q.push({id:`bracket${F.range.toString()}-${F.nestingLevel}`,options:{description:"BracketPairColorization",inlineClassName:this.colorProvider.getInlineClassName(F,this.colorizationOptions.independentColorPoolPerBracketType)},ownerId:0,range:F.range});return q}getAllDecorations(b,P){return b===void 0?[]:this.colorizationOptions.enabled?this.getDecorationsInRange(new _.Q(1,1,this.textModel.getLineCount(),1),b,P):[]}}class We{constructor(){this.unexpectedClosingBracketClassName="unexpected-closing-bracket"}getInlineClassName(b,P){return b.isInvalid?this.unexpectedClosingBracketClassName:this.getInlineClassNameOfLevel(P?b.nestingLevelOfEqualBracketType:b.nestingLevel)}getInlineClassNameOfLevel(b){return`bracket-highlighting-${b%30}`}}(0,ot.zy)((qe,b)=>{const P=[O.sN,O.lQ,O.ss,O.l5,O.sH,O.zp],M=new We;b.addRule(`.monaco-editor .${M.unexpectedClosingBracketClassName} { color: ${qe.getColor(O.s7)}; }`);const q=P.map(p=>qe.getColor(p)).filter(p=>!!p).filter(p=>!p.isTransparent());for(let p=0;p<30;p++){const F=q[p%q.length];b.addRule(`.monaco-editor .${M.getInlineClassNameOfLevel(p)} { color: ${F}; }`)}});var Ke=f(54296),De=f(52818);class Pe{constructor(){this.spacesDiff=0,this.looksLikeAlignment=!1}}function Ue(qe,b,P,M,q){q.spacesDiff=0,q.looksLikeAlignment=!1;let p;for(p=0;p0&&de>0||be>0&&ye>0)return;const Me=Math.abs(de-ye),He=Math.abs(F-be);if(Me===0){q.spacesDiff=He,He>0&&0<=be-1&&be-10?q++:Ii>1&&p++,Ue(F,de,Pt,mi,He),He.looksLikeAlignment&&!(P&&b===He.spacesDiff)))continue;const In=He.spacesDiff;In<=ye&&Me[In]++,F=Pt,de=mi}let $e=P;q!==p&&($e=q{const Pt=Me[It];Pt>wt&&(wt=Pt,gt=It)}),gt===4&&Me[4]>0&&Me[2]>0&&Me[2]>=Me[4]/2&&(gt=2)}return{insertSpaces:$e,tabSize:gt}}function et(qe){return(qe.metadata&1)>>>0}function rt(qe,b){qe.metadata=qe.metadata&254|b<<0}function Lt(qe){return(qe.metadata&2)>>>1===1}function Dt(qe,b){qe.metadata=qe.metadata&253|(b?1:0)<<1}function xt(qe){return(qe.metadata&4)>>>2===1}function Ie(qe,b){qe.metadata=qe.metadata&251|(b?1:0)<<2}function dt(qe){return(qe.metadata&24)>>>3}function ft(qe,b){qe.metadata=qe.metadata&231|b<<3}function Bt(qe){return(qe.metadata&32)>>>5===1}function jt(qe,b){qe.metadata=qe.metadata&223|(b?1:0)<<5}class pt{constructor(b,P,M){this.metadata=0,this.parent=this,this.left=this,this.right=this,rt(this,1),this.start=P,this.end=M,this.delta=0,this.maxEnd=M,this.id=b,this.ownerId=0,this.options=null,Ie(this,!1),ft(this,1),jt(this,!1),this.cachedVersionId=0,this.cachedAbsoluteStart=P,this.cachedAbsoluteEnd=M,this.range=null,Dt(this,!1)}reset(b,P,M,q){this.start=P,this.end=M,this.maxEnd=M,this.cachedVersionId=b,this.cachedAbsoluteStart=P,this.cachedAbsoluteEnd=M,this.range=q}setOptions(b){this.options=b;const P=this.options.className;Ie(this,P==="squiggly-error"||P==="squiggly-warning"||P==="squiggly-info"),ft(this,this.options.stickiness),jt(this,this.options.collapseOnReplaceEdit)}setCachedOffsets(b,P,M){this.cachedVersionId!==M&&(this.range=null),this.cachedVersionId=M,this.cachedAbsoluteStart=b,this.cachedAbsoluteEnd=P}detach(){this.parent=null,this.left=null,this.right=null}}const bt=new pt(null,0,0);bt.parent=bt,bt.left=bt,bt.right=bt,rt(bt,0);class zt{constructor(){this.root=bt,this.requestNormalizeDelta=!1}intervalSearch(b,P,M,q,p){return this.root===bt?[]:zi(this,b,P,M,q,p)}search(b,P,M){return this.root===bt?[]:Li(this,b,P,M)}collectNodesFromOwner(b){return ei(this,b)}collectNodesPostOrder(){return oi(this)}insert(b){Di(this,b),this._normalizeDeltaIfNecessary()}delete(b){ki(this,b),this._normalizeDeltaIfNecessary()}resolveNode(b,P){const M=b;let q=0;for(;b!==this.root;)b===b.parent.right&&(q+=b.parent.delta),b=b.parent;const p=M.start+q,F=M.end+q;M.setCachedOffsets(p,F,P)}acceptReplace(b,P,M,q){const p=_t(this,b,b+P);for(let F=0,de=p.length;FP||M===1?!1:M===2?!0:b}function Ze(qe,b,P,M,q){const p=dt(qe),F=p===0||p===2,de=p===1||p===2,be=P-b,ye=M,Me=Math.min(be,ye),He=qe.start;let $e=!1;const gt=qe.end;let wt=!1;b<=He&><=P&&Bt(qe)&&(qe.start=b,$e=!0,qe.end=b,wt=!0);{const Pt=q?1:be>0?2:0;!$e&&vi(He,F,b,Pt)&&($e=!0),!wt&&vi(gt,de,b,Pt)&&(wt=!0)}if(Me>0&&!q){const Pt=be>ye?2:0;!$e&&vi(He,F,b+Me,Pt)&&($e=!0),!wt&&vi(gt,de,b+Me,Pt)&&(wt=!0)}{const Pt=q?1:0;!$e&&vi(He,F,P,Pt)&&(qe.start=b+ye,$e=!0),!wt&&vi(gt,de,P,Pt)&&(qe.end=b+ye,wt=!0)}const It=ye-be;$e||(qe.start=Math.max(0,He+It)),wt||(qe.end=Math.max(0,gt+It)),qe.start>qe.end&&(qe.end=qe.start)}function _t(qe,b,P){let M=qe.root,q=0,p=0,F=0,de=0;const be=[];let ye=0;for(;M!==bt;){if(Lt(M)){Dt(M.left,!1),Dt(M.right,!1),M===M.parent.right&&(q-=M.parent.delta),M=M.parent;continue}if(!Lt(M.left)){if(p=q+M.maxEnd,pP){Dt(M,!0);continue}if(de=q+M.end,de>=b&&(M.setCachedOffsets(F,de,0),be[ye++]=M),Dt(M,!0),M.right!==bt&&!Lt(M.right)){q+=M.delta,M=M.right;continue}}return Dt(qe.root,!1),be}function At(qe,b,P,M){let q=qe.root,p=0,F=0,de=0;const be=M-(P-b);for(;q!==bt;){if(Lt(q)){Dt(q.left,!1),Dt(q.right,!1),q===q.parent.right&&(p-=q.parent.delta),Zt(q),q=q.parent;continue}if(!Lt(q.left)){if(F=p+q.maxEnd,FP){q.start+=be,q.end+=be,q.delta+=be,(q.delta<-1073741824||q.delta>1073741824)&&(qe.requestNormalizeDelta=!0),Dt(q,!0);continue}if(Dt(q,!0),q.right!==bt&&!Lt(q.right)){p+=q.delta,q=q.right;continue}}Dt(qe.root,!1)}function ei(qe,b){let P=qe.root;const M=[];let q=0;for(;P!==bt;){if(Lt(P)){Dt(P.left,!1),Dt(P.right,!1),P=P.parent;continue}if(P.left!==bt&&!Lt(P.left)){P=P.left;continue}if(P.ownerId===b&&(M[q++]=P),Dt(P,!0),P.right!==bt&&!Lt(P.right)){P=P.right;continue}}return Dt(qe.root,!1),M}function oi(qe){let b=qe.root;const P=[];let M=0;for(;b!==bt;){if(Lt(b)){Dt(b.left,!1),Dt(b.right,!1),b=b.parent;continue}if(b.left!==bt&&!Lt(b.left)){b=b.left;continue}if(b.right!==bt&&!Lt(b.right)){b=b.right;continue}P[M++]=b,Dt(b,!0)}return Dt(qe.root,!1),P}function Li(qe,b,P,M){let q=qe.root,p=0,F=0,de=0;const be=[];let ye=0;for(;q!==bt;){if(Lt(q)){Dt(q.left,!1),Dt(q.right,!1),q===q.parent.right&&(p-=q.parent.delta),q=q.parent;continue}if(q.left!==bt&&!Lt(q.left)){q=q.left;continue}F=p+q.start,de=p+q.end,q.setCachedOffsets(F,de,M);let Me=!0;if(b&&q.ownerId&&q.ownerId!==b&&(Me=!1),P&&xt(q)&&(Me=!1),Me&&(be[ye++]=q),Dt(q,!0),q.right!==bt&&!Lt(q.right)){p+=q.delta,q=q.right;continue}}return Dt(qe.root,!1),be}function zi(qe,b,P,M,q,p){let F=qe.root,de=0,be=0,ye=0,Me=0;const He=[];let $e=0;for(;F!==bt;){if(Lt(F)){Dt(F.left,!1),Dt(F.right,!1),F===F.parent.right&&(de-=F.parent.delta),F=F.parent;continue}if(!Lt(F.left)){if(be=de+F.maxEnd,beP){Dt(F,!0);continue}if(Me=de+F.end,Me>=b){F.setCachedOffsets(ye,Me,p);let gt=!0;M&&F.ownerId&&F.ownerId!==M&&(gt=!1),q&&xt(F)&&(gt=!1),gt&&(He[$e++]=F)}if(Dt(F,!0),F.right!==bt&&!Lt(F.right)){de+=F.delta,F=F.right;continue}}return Dt(qe.root,!1),He}function Di(qe,b){if(qe.root===bt)return b.parent=bt,b.left=bt,b.right=bt,rt(b,0),qe.root=b,qe.root;Te(qe,b),Ci(b.parent);let P=b;for(;P!==qe.root&&et(P.parent)===1;)if(P.parent===P.parent.parent.left){const M=P.parent.parent.right;et(M)===1?(rt(P.parent,0),rt(M,0),rt(P.parent.parent,1),P=P.parent.parent):(P===P.parent.right&&(P=P.parent,ct(qe,P)),rt(P.parent,0),rt(P.parent.parent,1),Oe(qe,P.parent.parent))}else{const M=P.parent.parent.left;et(M)===1?(rt(P.parent,0),rt(M,0),rt(P.parent.parent,1),P=P.parent.parent):(P===P.parent.left&&(P=P.parent,Oe(qe,P)),rt(P.parent,0),rt(P.parent.parent,1),ct(qe,P.parent.parent))}return rt(qe.root,0),b}function Te(qe,b){let P=0,M=qe.root;const q=b.start,p=b.end;for(;;)if(Ki(q,p,M.start+P,M.end+P)<0)if(M.left===bt){b.start-=P,b.end-=P,b.maxEnd-=P,M.left=b;break}else M=M.left;else if(M.right===bt){b.start-=P+M.delta,b.end-=P+M.delta,b.maxEnd-=P+M.delta,M.right=b;break}else P+=M.delta,M=M.right;b.parent=M,b.left=bt,b.right=bt,rt(b,1)}function ki(qe,b){let P,M;if(b.left===bt?(P=b.right,M=b,P.delta+=b.delta,(P.delta<-1073741824||P.delta>1073741824)&&(qe.requestNormalizeDelta=!0),P.start+=b.delta,P.end+=b.delta):b.right===bt?(P=b.left,M=b):(M=ze(b.right),P=M.right,P.start+=M.delta,P.end+=M.delta,P.delta+=M.delta,(P.delta<-1073741824||P.delta>1073741824)&&(qe.requestNormalizeDelta=!0),M.start+=b.delta,M.end+=b.delta,M.delta=b.delta,(M.delta<-1073741824||M.delta>1073741824)&&(qe.requestNormalizeDelta=!0)),M===qe.root){qe.root=P,rt(P,0),b.detach(),we(),Zt(P),qe.root.parent=bt;return}const q=et(M)===1;if(M===M.parent.left?M.parent.left=P:M.parent.right=P,M===b?P.parent=M.parent:(M.parent===b?P.parent=M:P.parent=M.parent,M.left=b.left,M.right=b.right,M.parent=b.parent,rt(M,et(b)),b===qe.root?qe.root=M:b===b.parent.left?b.parent.left=M:b.parent.right=M,M.left!==bt&&(M.left.parent=M),M.right!==bt&&(M.right.parent=M)),b.detach(),q){Ci(P.parent),M!==b&&(Ci(M),Ci(M.parent)),we();return}Ci(P),Ci(P.parent),M!==b&&(Ci(M),Ci(M.parent));let p;for(;P!==qe.root&&et(P)===0;)P===P.parent.left?(p=P.parent.right,et(p)===1&&(rt(p,0),rt(P.parent,1),ct(qe,P.parent),p=P.parent.right),et(p.left)===0&&et(p.right)===0?(rt(p,1),P=P.parent):(et(p.right)===0&&(rt(p.left,0),rt(p,1),Oe(qe,p),p=P.parent.right),rt(p,et(P.parent)),rt(P.parent,0),rt(p.right,0),ct(qe,P.parent),P=qe.root)):(p=P.parent.left,et(p)===1&&(rt(p,0),rt(P.parent,1),Oe(qe,P.parent),p=P.parent.left),et(p.left)===0&&et(p.right)===0?(rt(p,1),P=P.parent):(et(p.left)===0&&(rt(p.right,0),rt(p,1),ct(qe,p),p=P.parent.left),rt(p,et(P.parent)),rt(P.parent,0),rt(p.left,0),Oe(qe,P.parent),P=qe.root));rt(P,0),we()}function ze(qe){for(;qe.left!==bt;)qe=qe.left;return qe}function we(){bt.parent=bt,bt.delta=0,bt.start=0,bt.end=0}function ct(qe,b){const P=b.right;P.delta+=b.delta,(P.delta<-1073741824||P.delta>1073741824)&&(qe.requestNormalizeDelta=!0),P.start+=b.delta,P.end+=b.delta,b.right=P.left,P.left!==bt&&(P.left.parent=b),P.parent=b.parent,b.parent===bt?qe.root=P:b===b.parent.left?b.parent.left=P:b.parent.right=P,P.left=b,b.parent=P,Zt(b),Zt(P)}function Oe(qe,b){const P=b.left;b.delta-=P.delta,(b.delta<-1073741824||b.delta>1073741824)&&(qe.requestNormalizeDelta=!0),b.start-=P.delta,b.end-=P.delta,b.left=P.right,P.right!==bt&&(P.right.parent=b),P.parent=b.parent,b.parent===bt?qe.root=P:b===b.parent.right?b.parent.right=P:b.parent.left=P,P.right=b,b.parent=P,Zt(b),Zt(P)}function ut(qe){let b=qe.end;if(qe.left!==bt){const P=qe.left.maxEnd;P>b&&(b=P)}if(qe.right!==bt){const P=qe.right.maxEnd+qe.delta;P>b&&(b=P)}return b}function Zt(qe){qe.maxEnd=ut(qe)}function Ci(qe){for(;qe!==bt;){const b=ut(qe);if(qe.maxEnd===b)return;qe.maxEnd=b,qe=qe.parent}}function Ki(qe,b,P,M){return qe===P?b-M:qe-P}class Ln{constructor(b,P){this.piece=b,this.color=P,this.size_left=0,this.lf_left=0,this.parent=this,this.left=this,this.right=this}next(){if(this.right!==nt)return Ct(this.right);let b=this;for(;b.parent!==nt&&b.parent.left!==b;)b=b.parent;return b.parent===nt?nt:b.parent}prev(){if(this.left!==nt)return Qt(this.left);let b=this;for(;b.parent!==nt&&b.parent.right!==b;)b=b.parent;return b.parent===nt?nt:b.parent}detach(){this.parent=null,this.left=null,this.right=null}}const nt=new Ln(null,0);nt.parent=nt,nt.left=nt,nt.right=nt,nt.color=0;function Ct(qe){for(;qe.left!==nt;)qe=qe.left;return qe}function Qt(qe){for(;qe.right!==nt;)qe=qe.right;return qe}function Ot(qe){return qe===nt?0:qe.size_left+qe.piece.length+Ot(qe.right)}function at(qe){return qe===nt?0:qe.lf_left+qe.piece.lineFeedCnt+at(qe.right)}function Yi(){nt.parent=nt}function bi(qe,b){const P=b.right;P.size_left+=b.size_left+(b.piece?b.piece.length:0),P.lf_left+=b.lf_left+(b.piece?b.piece.lineFeedCnt:0),b.right=P.left,P.left!==nt&&(P.left.parent=b),P.parent=b.parent,b.parent===nt?qe.root=P:b.parent.left===b?b.parent.left=P:b.parent.right=P,P.left=b,b.parent=P}function St(qe,b){const P=b.left;b.left=P.right,P.right!==nt&&(P.right.parent=b),P.parent=b.parent,b.size_left-=P.size_left+(P.piece?P.piece.length:0),b.lf_left-=P.lf_left+(P.piece?P.piece.lineFeedCnt:0),b.parent===nt?qe.root=P:b===b.parent.right?b.parent.right=P:b.parent.left=P,P.right=b,b.parent=P}function bn(qe,b){let P,M;if(b.left===nt?(M=b,P=M.right):b.right===nt?(M=b,P=M.left):(M=Ct(b.right),P=M.right),M===qe.root){qe.root=P,P.color=0,b.detach(),Yi(),qe.root.parent=nt;return}const q=M.color===1;if(M===M.parent.left?M.parent.left=P:M.parent.right=P,M===b?(P.parent=M.parent,xe(qe,P)):(M.parent===b?P.parent=M:P.parent=M.parent,xe(qe,P),M.left=b.left,M.right=b.right,M.parent=b.parent,M.color=b.color,b===qe.root?qe.root=M:b===b.parent.left?b.parent.left=M:b.parent.right=M,M.left!==nt&&(M.left.parent=M),M.right!==nt&&(M.right.parent=M),M.size_left=b.size_left,M.lf_left=b.lf_left,xe(qe,M)),b.detach(),P.parent.left===P){const F=Ot(P),de=at(P);if(F!==P.parent.size_left||de!==P.parent.lf_left){const be=F-P.parent.size_left,ye=de-P.parent.lf_left;P.parent.size_left=F,P.parent.lf_left=de,ni(qe,P.parent,be,ye)}}if(xe(qe,P.parent),q){Yi();return}let p;for(;P!==qe.root&&P.color===0;)P===P.parent.left?(p=P.parent.right,p.color===1&&(p.color=0,P.parent.color=1,bi(qe,P.parent),p=P.parent.right),p.left.color===0&&p.right.color===0?(p.color=1,P=P.parent):(p.right.color===0&&(p.left.color=0,p.color=1,St(qe,p),p=P.parent.right),p.color=P.parent.color,P.parent.color=0,p.right.color=0,bi(qe,P.parent),P=qe.root)):(p=P.parent.left,p.color===1&&(p.color=0,P.parent.color=1,St(qe,P.parent),p=P.parent.left),p.left.color===0&&p.right.color===0?(p.color=1,P=P.parent):(p.left.color===0&&(p.right.color=0,p.color=1,bi(qe,p),p=P.parent.left),p.color=P.parent.color,P.parent.color=0,p.left.color=0,St(qe,P.parent),P=qe.root));P.color=0,Yi()}function sn(qe,b){for(xe(qe,b);b!==qe.root&&b.parent.color===1;)if(b.parent===b.parent.parent.left){const P=b.parent.parent.right;P.color===1?(b.parent.color=0,P.color=0,b.parent.parent.color=1,b=b.parent.parent):(b===b.parent.right&&(b=b.parent,bi(qe,b)),b.parent.color=0,b.parent.parent.color=1,St(qe,b.parent.parent))}else{const P=b.parent.parent.left;P.color===1?(b.parent.color=0,P.color=0,b.parent.parent.color=1,b=b.parent.parent):(b===b.parent.left&&(b=b.parent,St(qe,b)),b.parent.color=0,b.parent.parent.color=1,bi(qe,b.parent.parent))}qe.root.color=0}function ni(qe,b,P,M){for(;b!==qe.root&&b!==nt;)b.parent.left===b&&(b.parent.size_left+=P,b.parent.lf_left+=M),b=b.parent}function xe(qe,b){let P=0,M=0;if(b!==qe.root){for(;b!==qe.root&&b===b.parent.right;)b=b.parent;if(b!==qe.root)for(b=b.parent,P=Ot(b.left)-b.size_left,M=at(b.left)-b.lf_left,b.size_left+=P,b.lf_left+=M;b!==qe.root&&(P!==0||M!==0);)b.parent.left===b&&(b.parent.size_left+=P,b.parent.lf_left+=M),b=b.parent}}var Ce=f(104);const Ye=65535;function Rt(qe){let b;return qe[qe.length-1]<65536?b=new Uint16Array(qe.length):b=new Uint32Array(qe.length),b.set(qe,0),b}class Vt{constructor(b,P,M,q,p){this.lineStarts=b,this.cr=P,this.lf=M,this.crlf=q,this.isBasicASCII=p}}function Gt(qe,b=!0){const P=[0];let M=1;for(let q=0,p=qe.length;q126)&&(F=!1)}const de=new Vt(Rt(qe),M,q,p,F);return qe.length=0,de}class fi{constructor(b,P,M,q,p){this.bufferIndex=b,this.start=P,this.end=M,this.lineFeedCnt=q,this.length=p}}class di{constructor(b,P){this.buffer=b,this.lineStarts=P}}class Jt{constructor(b,P){this._pieces=[],this._tree=b,this._BOM=P,this._index=0,b.root!==nt&&b.iterate(b.root,M=>(M!==nt&&this._pieces.push(M.piece),!0))}read(){return this._pieces.length===0?this._index===0?(this._index++,this._BOM):null:this._index>this._pieces.length-1?null:this._index===0?this._BOM+this._tree.getPieceContent(this._pieces[this._index++]):this._tree.getPieceContent(this._pieces[this._index++])}}class ai{constructor(b){this._limit=b,this._cache=[]}get(b){for(let P=this._cache.length-1;P>=0;P--){const M=this._cache[P];if(M.nodeStartOffset<=b&&M.nodeStartOffset+M.node.piece.length>=b)return M}return null}get2(b){for(let P=this._cache.length-1;P>=0;P--){const M=this._cache[P];if(M.nodeStartLineNumber&&M.nodeStartLineNumber=b)return M}return null}set(b){this._cache.length>=this._limit&&this._cache.shift(),this._cache.push(b)}validate(b){let P=!1;const M=this._cache;for(let q=0;q=b){M[q]=null,P=!0;continue}}if(P){const q=[];for(const p of M)p!==null&&q.push(p);this._cache=q}}}class Ei{constructor(b,P,M){this.create(b,P,M)}create(b,P,M){this._buffers=[new di("",[0])],this._lastChangeBufferPos={line:0,column:0},this.root=nt,this._lineCnt=1,this._length=0,this._EOL=P,this._EOLLength=P.length,this._EOLNormalized=M;let q=null;for(let p=0,F=b.length;p0){b[p].lineStarts||(b[p].lineStarts=Gt(b[p].buffer));const de=new fi(p+1,{line:0,column:0},{line:b[p].lineStarts.length-1,column:b[p].buffer.length-b[p].lineStarts[b[p].lineStarts.length-1]},b[p].lineStarts.length-1,b[p].buffer.length);this._buffers.push(b[p]),q=this.rbInsertRight(q,de)}this._searchCache=new ai(1),this._lastVisitedLine={lineNumber:0,value:""},this.computeBufferMetadata()}normalizeEOL(b){const P=Ye,M=P-Math.floor(P/3),q=M*2;let p="",F=0;const de=[];if(this.iterate(this.root,be=>{const ye=this.getNodeContent(be),Me=ye.length;if(F<=M||F+Me0){const be=p.replace(/\r\n|\r|\n/g,b);de.push(new di(be,Gt(be)))}this.create(de,b,!0)}getEOL(){return this._EOL}setEOL(b){this._EOL=b,this._EOLLength=this._EOL.length,this.normalizeEOL(b)}createSnapshot(b){return new Jt(this,b)}getOffsetAt(b,P){let M=0,q=this.root;for(;q!==nt;)if(q.left!==nt&&q.lf_left+1>=b)q=q.left;else if(q.lf_left+q.piece.lineFeedCnt+1>=b){M+=q.size_left;const p=this.getAccumulatedValue(q,b-q.lf_left-2);return M+=p+P-1}else b-=q.lf_left+q.piece.lineFeedCnt,M+=q.size_left+q.piece.length,q=q.right;return M}getPositionAt(b){b=Math.floor(b),b=Math.max(0,b);let P=this.root,M=0;const q=b;for(;P!==nt;)if(P.size_left!==0&&P.size_left>=b)P=P.left;else if(P.size_left+P.piece.length>=b){const p=this.getIndexOf(P,b-P.size_left);if(M+=P.lf_left+p.index,p.index===0){const F=this.getOffsetAt(M+1,1),de=q-F;return new S.y(M+1,de+1)}return new S.y(M+1,p.remainder+1)}else if(b-=P.size_left+P.piece.length,M+=P.lf_left+P.piece.lineFeedCnt,P.right===nt){const p=this.getOffsetAt(M+1,1),F=q-b-p;return new S.y(M+1,F+1)}else P=P.right;return new S.y(1,1)}getValueInRange(b,P){if(b.startLineNumber===b.endLineNumber&&b.startColumn===b.endColumn)return"";const M=this.nodeAt2(b.startLineNumber,b.startColumn),q=this.nodeAt2(b.endLineNumber,b.endColumn),p=this.getValueInRange2(M,q);return P?P!==this._EOL||!this._EOLNormalized?p.replace(/\r\n|\r|\n/g,P):P===this.getEOL()&&this._EOLNormalized?p:p.replace(/\r\n|\r|\n/g,P):p}getValueInRange2(b,P){if(b.node===P.node){const de=b.node,be=this._buffers[de.piece.bufferIndex].buffer,ye=this.offsetInBuffer(de.piece.bufferIndex,de.piece.start);return be.substring(ye+b.remainder,ye+P.remainder)}let M=b.node;const q=this._buffers[M.piece.bufferIndex].buffer,p=this.offsetInBuffer(M.piece.bufferIndex,M.piece.start);let F=q.substring(p+b.remainder,p+M.piece.length);for(M=M.next();M!==nt;){const de=this._buffers[M.piece.bufferIndex].buffer,be=this.offsetInBuffer(M.piece.bufferIndex,M.piece.start);if(M===P.node){F+=de.substring(be,be+P.remainder);break}else F+=de.substr(be,M.piece.length);M=M.next()}return F}getLinesContent(){const b=[];let P=0,M="",q=!1;return this.iterate(this.root,p=>{if(p===nt)return!0;const F=p.piece;let de=F.length;if(de===0)return!0;const be=this._buffers[F.bufferIndex].buffer,ye=this._buffers[F.bufferIndex].lineStarts,Me=F.start.line,He=F.end.line;let $e=ye[Me]+F.start.column;if(q&&(be.charCodeAt($e)===10&&($e++,de--),b[P++]=M,M="",q=!1,de===0))return!0;if(Me===He)return!this._EOLNormalized&&be.charCodeAt($e+de-1)===13?(q=!0,M+=be.substr($e,de-1)):M+=be.substr($e,de),!0;M+=this._EOLNormalized?be.substring($e,Math.max($e,ye[Me+1]-this._EOLLength)):be.substring($e,ye[Me+1]).replace(/(\r\n|\r|\n)$/,""),b[P++]=M;for(let gt=Me+1;gtIi+wt,P.reset(0)):(Xt=$e.buffer,mi=Ii=>Ii,P.reset(wt));do if(Pt=P.next(Xt),Pt){if(mi(Pt.index)>=It)return Me;this.positionInBuffer(b,mi(Pt.index)-gt,Wt);const Ii=this.getLineFeedCnt(b.piece.bufferIndex,p,Wt),Ji=Wt.line===p.line?Wt.column-p.column+q:Wt.column+1,In=Ji+Pt[0].length;if(He[Me++]=(0,Ce.dr)(new _.Q(M+Ii,Ji,M+Ii,In),Pt,be),mi(Pt.index)+Pt[0].length>=It||Me>=ye)return Me}while(Pt);return Me}findMatchesLineByLine(b,P,M,q){const p=[];let F=0;const de=new Ce.W5(P.wordSeparators,P.regex);let be=this.nodeAt2(b.startLineNumber,b.startColumn);if(be===null)return[];const ye=this.nodeAt2(b.endLineNumber,b.endColumn);if(ye===null)return[];let Me=this.positionInBuffer(be.node,be.remainder);const He=this.positionInBuffer(ye.node,ye.remainder);if(be.node===ye.node)return this.findMatchesInNode(be.node,de,b.startLineNumber,b.startColumn,Me,He,P,M,q,F,p),p;let $e=b.startLineNumber,gt=be.node;for(;gt!==ye.node;){const It=this.getLineFeedCnt(gt.piece.bufferIndex,Me,gt.piece.end);if(It>=1){const Wt=this._buffers[gt.piece.bufferIndex].lineStarts,Xt=this.offsetInBuffer(gt.piece.bufferIndex,gt.piece.start),mi=Wt[Me.line+It],Ii=$e===b.startLineNumber?b.startColumn:1;if(F=this.findMatchesInNode(gt,de,$e,Ii,Me,this.positionInBuffer(gt,mi-Xt),P,M,q,F,p),F>=q)return p;$e+=It}const Pt=$e===b.startLineNumber?b.startColumn-1:0;if($e===b.endLineNumber){const Wt=this.getLineContent($e).substring(Pt,b.endColumn-1);return F=this._findMatchesInLine(P,de,Wt,b.endLineNumber,Pt,F,p,M,q),p}if(F=this._findMatchesInLine(P,de,this.getLineContent($e).substr(Pt),$e,Pt,F,p,M,q),F>=q)return p;$e++,be=this.nodeAt2($e,1),gt=be.node,Me=this.positionInBuffer(be.node,be.remainder)}if($e===b.endLineNumber){const It=$e===b.startLineNumber?b.startColumn-1:0,Pt=this.getLineContent($e).substring(It,b.endColumn-1);return F=this._findMatchesInLine(P,de,Pt,b.endLineNumber,It,F,p,M,q),p}const wt=$e===b.startLineNumber?b.startColumn:1;return F=this.findMatchesInNode(ye.node,de,$e,wt,Me,He,P,M,q,F,p),p}_findMatchesInLine(b,P,M,q,p,F,de,be,ye){const Me=b.wordSeparators;if(!be&&b.simpleSearch){const $e=b.simpleSearch,gt=$e.length,wt=M.length;let It=-gt;for(;(It=M.indexOf($e,It+gt))!==-1;)if((!Me||(0,Ce.wC)(Me,M,wt,It,gt))&&(de[F++]=new D.Dg(new _.Q(q,It+1+p,q,It+1+gt+p),null),F>=ye))return F;return F}let He;P.reset(0);do if(He=P.next(M),He&&(de[F++]=(0,Ce.dr)(new _.Q(q,He.index+1+p,q,He.index+1+He[0].length+p),He,be),F>=ye))return F;while(He);return F}insert(b,P,M=!1){if(this._EOLNormalized=this._EOLNormalized&&M,this._lastVisitedLine.lineNumber=0,this._lastVisitedLine.value="",this.root!==nt){const{node:q,remainder:p,nodeStartOffset:F}=this.nodeAt(b),de=q.piece,be=de.bufferIndex,ye=this.positionInBuffer(q,p);if(q.piece.bufferIndex===0&&de.end.line===this._lastChangeBufferPos.line&&de.end.column===this._lastChangeBufferPos.column&&F+de.length===b&&P.lengthb){const Me=[];let He=new fi(de.bufferIndex,ye,de.end,this.getLineFeedCnt(de.bufferIndex,ye,de.end),this.offsetInBuffer(be,de.end)-this.offsetInBuffer(be,ye));if(this.shouldCheckCRLF()&&this.endWithCR(P)&&this.nodeCharCodeAt(q,p)===10){const It={line:He.start.line+1,column:0};He=new fi(He.bufferIndex,It,He.end,this.getLineFeedCnt(He.bufferIndex,It,He.end),He.length-1),P+=`
`}if(this.shouldCheckCRLF()&&this.startWithLF(P))if(this.nodeCharCodeAt(q,p-1)===13){const It=this.positionInBuffer(q,p-1);this.deleteNodeTail(q,It),P="\r"+P,q.piece.length===0&&Me.push(q)}else this.deleteNodeTail(q,ye);else this.deleteNodeTail(q,ye);const $e=this.createNewPieces(P);He.length>0&&this.rbInsertRight(q,He);let gt=q;for(let wt=0;wt<$e.length;wt++)gt=this.rbInsertRight(gt,$e[wt]);this.deleteNodes(Me)}else this.insertContentToNodeRight(P,q)}else{const q=this.createNewPieces(P);let p=this.rbInsertLeft(null,q[0]);for(let F=1;F=0;F--)p=this.rbInsertLeft(p,q[F]);this.validateCRLFWithPrevNode(p),this.deleteNodes(M)}insertContentToNodeRight(b,P){this.adjustCarriageReturnFromNext(b,P)&&(b+=`
`);const M=this.createNewPieces(b),q=this.rbInsertRight(P,M[0]);let p=q;for(let F=1;F=$e)ye=He+1;else break;return M?(M.line=He,M.column=be-gt,null):{line:He,column:be-gt}}getLineFeedCnt(b,P,M){if(M.column===0)return M.line-P.line;const q=this._buffers[b].lineStarts;if(M.line===q.length-1)return M.line-P.line;const p=q[M.line+1],F=q[M.line]+M.column;if(p>F+1)return M.line-P.line;const de=F-1;return this._buffers[b].buffer.charCodeAt(de)===13?M.line-P.line+1:M.line-P.line}offsetInBuffer(b,P){return this._buffers[b].lineStarts[P.line]+P.column}deleteNodes(b){for(let P=0;PYe){const Me=[];for(;b.length>Ye;){const $e=b.charCodeAt(Ye-1);let gt;$e===13||$e>=55296&&$e<=56319?(gt=b.substring(0,Ye-1),b=b.substring(Ye-1)):(gt=b.substring(0,Ye),b=b.substring(Ye));const wt=Gt(gt);Me.push(new fi(this._buffers.length,{line:0,column:0},{line:wt.length-1,column:gt.length-wt[wt.length-1]},wt.length-1,gt.length)),this._buffers.push(new di(gt,wt))}const He=Gt(b);return Me.push(new fi(this._buffers.length,{line:0,column:0},{line:He.length-1,column:b.length-He[He.length-1]},He.length-1,b.length)),this._buffers.push(new di(b,He)),Me}let P=this._buffers[0].buffer.length;const M=Gt(b,!1);let q=this._lastChangeBufferPos;if(this._buffers[0].lineStarts[this._buffers[0].lineStarts.length-1]===P&&P!==0&&this.startWithLF(b)&&this.endWithCR(this._buffers[0].buffer)){this._lastChangeBufferPos={line:this._lastChangeBufferPos.line,column:this._lastChangeBufferPos.column+1},q=this._lastChangeBufferPos;for(let Me=0;Me=b-1)M=M.left;else if(M.lf_left+M.piece.lineFeedCnt>b-1){const be=this.getAccumulatedValue(M,b-M.lf_left-2),ye=this.getAccumulatedValue(M,b-M.lf_left-1),Me=this._buffers[M.piece.bufferIndex].buffer,He=this.offsetInBuffer(M.piece.bufferIndex,M.piece.start);return F+=M.size_left,this._searchCache.set({node:M,nodeStartOffset:F,nodeStartLineNumber:de-(b-1-M.lf_left)}),Me.substring(He+be,He+ye-P)}else if(M.lf_left+M.piece.lineFeedCnt===b-1){const be=this.getAccumulatedValue(M,b-M.lf_left-2),ye=this._buffers[M.piece.bufferIndex].buffer,Me=this.offsetInBuffer(M.piece.bufferIndex,M.piece.start);q=ye.substring(Me+be,Me+M.piece.length);break}else b-=M.lf_left+M.piece.lineFeedCnt,F+=M.size_left+M.piece.length,M=M.right}for(M=M.next();M!==nt;){const F=this._buffers[M.piece.bufferIndex].buffer;if(M.piece.lineFeedCnt>0){const de=this.getAccumulatedValue(M,0),be=this.offsetInBuffer(M.piece.bufferIndex,M.piece.start);return q+=F.substring(be,be+de-P),q}else{const de=this.offsetInBuffer(M.piece.bufferIndex,M.piece.start);q+=F.substr(de,M.piece.length)}M=M.next()}return q}computeBufferMetadata(){let b=this.root,P=1,M=0;for(;b!==nt;)P+=b.lf_left+b.piece.lineFeedCnt,M+=b.size_left+b.piece.length,b=b.right;this._lineCnt=P,this._length=M,this._searchCache.validate(this._length)}getIndexOf(b,P){const M=b.piece,q=this.positionInBuffer(b,P),p=q.line-M.start.line;if(this.offsetInBuffer(M.bufferIndex,M.end)-this.offsetInBuffer(M.bufferIndex,M.start)===P){const F=this.getLineFeedCnt(b.piece.bufferIndex,M.start,q);if(F!==p)return{index:F,remainder:0}}return{index:p,remainder:q.column}}getAccumulatedValue(b,P){if(P<0)return 0;const M=b.piece,q=this._buffers[M.bufferIndex].lineStarts,p=M.start.line+P+1;return p>M.end.line?q[M.end.line]+M.end.column-q[M.start.line]-M.start.column:q[p]-q[M.start.line]-M.start.column}deleteNodeTail(b,P){const M=b.piece,q=M.lineFeedCnt,p=this.offsetInBuffer(M.bufferIndex,M.end),F=P,de=this.offsetInBuffer(M.bufferIndex,F),be=this.getLineFeedCnt(M.bufferIndex,M.start,F),ye=be-q,Me=de-p,He=M.length+Me;b.piece=new fi(M.bufferIndex,M.start,F,be,He),ni(this,b,Me,ye)}deleteNodeHead(b,P){const M=b.piece,q=M.lineFeedCnt,p=this.offsetInBuffer(M.bufferIndex,M.start),F=P,de=this.getLineFeedCnt(M.bufferIndex,F,M.end),be=this.offsetInBuffer(M.bufferIndex,F),ye=de-q,Me=p-be,He=M.length+Me;b.piece=new fi(M.bufferIndex,F,M.end,de,He),ni(this,b,Me,ye)}shrinkNode(b,P,M){const q=b.piece,p=q.start,F=q.end,de=q.length,be=q.lineFeedCnt,ye=P,Me=this.getLineFeedCnt(q.bufferIndex,q.start,ye),He=this.offsetInBuffer(q.bufferIndex,P)-this.offsetInBuffer(q.bufferIndex,p);b.piece=new fi(q.bufferIndex,q.start,ye,Me,He),ni(this,b,He-de,Me-be);const $e=new fi(q.bufferIndex,M,F,this.getLineFeedCnt(q.bufferIndex,M,F),this.offsetInBuffer(q.bufferIndex,F)-this.offsetInBuffer(q.bufferIndex,M)),gt=this.rbInsertRight(b,$e);this.validateCRLFWithPrevNode(gt)}appendToNode(b,P){this.adjustCarriageReturnFromNext(P,b)&&(P+=`
`);const M=this.shouldCheckCRLF()&&this.startWithLF(P)&&this.endWithCR(b),q=this._buffers[0].buffer.length;this._buffers[0].buffer+=P;const p=Gt(P,!1);for(let gt=0;gtb)P=P.left;else if(P.size_left+P.piece.length>=b){q+=P.size_left;const p={node:P,remainder:b-P.size_left,nodeStartOffset:q};return this._searchCache.set(p),p}else b-=P.size_left+P.piece.length,q+=P.size_left+P.piece.length,P=P.right;return null}nodeAt2(b,P){let M=this.root,q=0;for(;M!==nt;)if(M.left!==nt&&M.lf_left>=b-1)M=M.left;else if(M.lf_left+M.piece.lineFeedCnt>b-1){const p=this.getAccumulatedValue(M,b-M.lf_left-2),F=this.getAccumulatedValue(M,b-M.lf_left-1);return q+=M.size_left,{node:M,remainder:Math.min(p+P-1,F),nodeStartOffset:q}}else if(M.lf_left+M.piece.lineFeedCnt===b-1){const p=this.getAccumulatedValue(M,b-M.lf_left-2);if(p+P-1<=M.piece.length)return{node:M,remainder:p+P-1,nodeStartOffset:q};P-=M.piece.length-p;break}else b-=M.lf_left+M.piece.lineFeedCnt,q+=M.size_left+M.piece.length,M=M.right;for(M=M.next();M!==nt;){if(M.piece.lineFeedCnt>0){const p=this.getAccumulatedValue(M,0),F=this.offsetOfNode(M);return{node:M,remainder:Math.min(P-1,p),nodeStartOffset:F}}else if(M.piece.length>=P-1){const p=this.offsetOfNode(M);return{node:M,remainder:P-1,nodeStartOffset:p}}else P-=M.piece.length;M=M.next()}return null}nodeCharCodeAt(b,P){if(b.piece.lineFeedCnt<1)return-1;const M=this._buffers[b.piece.bufferIndex],q=this.offsetInBuffer(b.piece.bufferIndex,b.piece.start)+P;return M.buffer.charCodeAt(q)}offsetOfNode(b){if(!b)return 0;let P=b.size_left;for(;b!==this.root;)b.parent.right===b&&(P+=b.parent.size_left+b.parent.piece.length),b=b.parent;return P}shouldCheckCRLF(){return!(this._EOLNormalized&&this._EOL===`
`)}startWithLF(b){if(typeof b=="string")return b.charCodeAt(0)===10;if(b===nt||b.piece.lineFeedCnt===0)return!1;const P=b.piece,M=this._buffers[P.bufferIndex].lineStarts,q=P.start.line,p=M[q]+P.start.column;return q===M.length-1||M[q+1]>p+1?!1:this._buffers[P.bufferIndex].buffer.charCodeAt(p)===10}endWithCR(b){return typeof b=="string"?b.charCodeAt(b.length-1)===13:b===nt||b.piece.lineFeedCnt===0?!1:this.nodeCharCodeAt(b,b.piece.length-1)===13}validateCRLFWithPrevNode(b){if(this.shouldCheckCRLF()&&this.startWithLF(b)){const P=b.prev();this.endWithCR(P)&&this.fixCRLF(P,b)}}validateCRLFWithNextNode(b){if(this.shouldCheckCRLF()&&this.endWithCR(b)){const P=b.next();this.startWithLF(P)&&this.fixCRLF(b,P)}}fixCRLF(b,P){const M=[],q=this._buffers[b.piece.bufferIndex].lineStarts;let p;b.piece.end.column===0?p={line:b.piece.end.line-1,column:q[b.piece.end.line]-q[b.piece.end.line-1]-1}:p={line:b.piece.end.line,column:b.piece.end.column-1};const F=b.piece.length-1,de=b.piece.lineFeedCnt-1;b.piece=new fi(b.piece.bufferIndex,b.piece.start,p,de,F),ni(this,b,-1,-1),b.piece.length===0&&M.push(b);const be={line:P.piece.start.line+1,column:0},ye=P.piece.length-1,Me=this.getLineFeedCnt(P.piece.bufferIndex,be,P.piece.end);P.piece=new fi(P.piece.bufferIndex,be,P.piece.end,Me,ye),ni(this,P,-1,-1),P.piece.length===0&&M.push(P);const He=this.createNewPieces(`\r
`);this.rbInsertRight(b,He[0]);for(let $e=0;$ePt.sortIndex-Wt.sortIndex)}this._mightContainRTL=q,this._mightContainUnusualLineTerminators=p,this._mightContainNonBasicASCII=F;const gt=this._doApplyEdits(be);let wt=null;if(P&&He.length>0){He.sort((It,Pt)=>Pt.lineNumber-It.lineNumber),wt=[];for(let It=0,Pt=He.length;It0&&He[It-1].lineNumber===Wt)continue;const Xt=He[It].oldContent,mi=this.getLineContent(Wt);mi.length===0||mi===Xt||ie.HG(mi)!==-1||wt.push(Wt)}}return this._onDidChangeContent.fire(),new D.F4($e,gt,wt)}_reduceOperations(b){return b.length<1e3?b:[this._toSingleEditOperation(b)]}_toSingleEditOperation(b){let P=!1;const M=b[0].range,q=b[b.length-1].range,p=new _.Q(M.startLineNumber,M.startColumn,q.endLineNumber,q.endColumn);let F=M.startLineNumber,de=M.startColumn;const be=[];for(let gt=0,wt=b.length;gt0&&be.push(It.text),F=Pt.endLineNumber,de=Pt.endColumn}const ye=be.join(""),[Me,He,$e]=(0,J.W)(ye);return{sortIndex:0,identifier:b[0].identifier,range:p,rangeOffset:this.getOffsetAt(p.startLineNumber,p.startColumn),rangeLength:this.getValueLengthInRange(p,0),text:ye,eolCount:Me,firstLineLength:He,lastLineLength:$e,forceMoveMarkers:P,isAutoWhitespaceEdit:!1}}_doApplyEdits(b){b.sort(Ai._sortOpsDescending);const P=[];for(let M=0;M0){const $e=be.eolCount+1;$e===1?He=new _.Q(ye,Me,ye,Me+be.firstLineLength):He=new _.Q(ye,Me,ye+$e-1,be.lastLineLength+1)}else He=new _.Q(ye,Me,ye,Me);M=He.endLineNumber,q=He.endColumn,P.push(He),p=be}return P}static _sortOpsAscending(b,P){const M=_.Q.compareRangesUsingEnds(b.range,P.range);return M===0?b.sortIndex-P.sortIndex:M}static _sortOpsDescending(b,P){const M=_.Q.compareRangesUsingEnds(b.range,P.range);return M===0?P.sortIndex-b.sortIndex:-M}}class Ni{constructor(b,P,M,q,p,F,de,be,ye){this._chunks=b,this._bom=P,this._cr=M,this._lf=q,this._crlf=p,this._containsRTL=F,this._containsUnusualLineTerminators=de,this._isBasicASCII=be,this._normalizeEOL=ye}_getEOL(b){const P=this._cr+this._lf+this._crlf,M=this._cr+this._crlf;return P===0?b===1?`
`:`\r
`:M>P/2?`\r
`:`
`}create(b){const P=this._getEOL(b),M=this._chunks;if(this._normalizeEOL&&(P===`\r
`&&(this._cr>0||this._lf>0)||P===`
`&&(this._cr>0||this._crlf>0)))for(let p=0,F=M.length;p=55296&&P<=56319?(this._acceptChunk1(b.substr(0,b.length-1),!1),this._hasPreviousChar=!0,this._previousChar=P):(this._acceptChunk1(b,!1),this._hasPreviousChar=!1,this._previousChar=P)}_acceptChunk1(b,P){!P&&b.length===0||(this._hasPreviousChar?this._acceptChunk2(String.fromCharCode(this._previousChar)+b):this._acceptChunk2(b))}_acceptChunk2(b){const P=ri(this._tmpLineStarts,b);this.chunks.push(new di(b,P.lineStarts)),this.cr+=P.cr,this.lf+=P.lf,this.crlf+=P.crlf,this.isBasicASCII&&(this.isBasicASCII=P.isBasicASCII),!this.isBasicASCII&&!this.containsRTL&&(this.containsRTL=ie.E_(b)),!this.isBasicASCII&&!this.containsUnusualLineTerminators&&(this.containsUnusualLineTerminators=ie.$X(b))}finish(b=!0){return this._finish(),new Ni(this.chunks,this.BOM,this.cr,this.lf,this.crlf,this.containsRTL,this.containsUnusualLineTerminators,this.isBasicASCII,b)}_finish(){if(this.chunks.length===0&&this._acceptChunk1("",!0),this._hasPreviousChar){this._hasPreviousChar=!1;const b=this.chunks[this.chunks.length-1];b.buffer+=String.fromCharCode(this._previousChar);const P=Gt(b.buffer);b.lineStarts=P,this._previousChar===13&&this.cr++}}}var Pi=f(18782),gn=f(32177),Gi=f(57445),Oi=f(44364),Fi=f(97036),Bi=f(23013);class rn{constructor(b,P){this._startLineNumber=b,this._tokens=P}get startLineNumber(){return this._startLineNumber}get endLineNumber(){return this._startLineNumber+this._tokens.length-1}getLineTokens(b){return this._tokens[b-this._startLineNumber]}appendLineTokens(b){this._tokens.push(b)}}class _i{constructor(){this._tokens=[]}add(b,P){if(this._tokens.length>0){const M=this._tokens[this._tokens.length-1];if(M.endLineNumber+1===b){M.appendLineTokens(P);return}}this._tokens.push(new rn(b,[P]))}finalize(){return this._tokens}}var jn=f(65958),Wn=f(63339);class xn{constructor(b){this._default=b,this._store=[]}get(b){return b=this._store.length;)this._store[this._store.length]=this._default;this._store[b]=P}delete(b,P){P===0||b>=this._store.length||this._store.splice(b,P)}insert(b,P){if(P===0||b>=this._store.length)return;const M=[];for(let q=0;q{const p=this._textModel.getLanguageId();q.changedLanguages.indexOf(p)!==-1&&(this._resetTokenizationState(),this._tokenizationPart.clearTokens())})),this._resetTokenizationState()}dispose(){this._isDisposed=!0,super.dispose()}handleDidChangeContent(b){if(b.isFlush){this._resetTokenizationState();return}if(this._tokenizationStateStore)for(let P=0,M=b.changes.length;P{this._isScheduled=!1,this._backgroundTokenizeWithDeadline(b)}))}_backgroundTokenizeWithDeadline(b){const P=Date.now()+b.timeRemaining(),M=()=>{this._isDisposed||!this._textModel.isAttachedToEditor()||!this._hasLinesToTokenize()||(this._backgroundTokenizeForAtLeast1ms(),Date.now()1||this._tokenizeOneInvalidLine(P)>=b)break;while(this._hasLinesToTokenize());this._tokenizationPart.setTokens(P.finalize(),this._isTokenizationComplete())}tokenizeViewport(b,P){const M=new _i;this._tokenizeViewport(M,b,P),this._tokenizationPart.setTokens(M.finalize(),this._isTokenizationComplete())}reset(){this._resetTokenizationState(),this._tokenizationPart.clearTokens()}forceTokenization(b){const P=new _i;this._updateTokensUntilLine(P,b),this._tokenizationPart.setTokens(P.finalize(),this._isTokenizationComplete())}getTokenTypeIfInsertingCharacter(b,P){if(!this._tokenizationStateStore)return 0;this.forceTokenization(b.lineNumber);const M=this._tokenizationStateStore.getBeginState(b.lineNumber-1);if(!M)return 0;const q=this._textModel.getLanguageId(),p=this._textModel.getLineContent(b.lineNumber),F=p.substring(0,b.column-1)+P+p.substring(b.column-1),de=Jn(this._languageIdCodec,q,this._tokenizationStateStore.tokenizationSupport,F,!0,M),be=new Gi.f(de.tokens,F,this._languageIdCodec);if(be.getCount()===0)return 0;const ye=be.findTokenIndexAtOffset(b.column-1);return be.getStandardTokenType(ye)}tokenizeLineWithEdit(b,P,M){const q=b.lineNumber,p=b.column;if(!this._tokenizationStateStore)return null;this.forceTokenization(q);const F=this._tokenizationStateStore.getBeginState(q-1);if(!F)return null;const de=this._textModel.getLineContent(q),be=de.substring(0,p-1)+M+de.substring(p-1+P),ye=this._textModel.getLanguageIdAtPosition(q,0),Me=Jn(this._languageIdCodec,ye,this._tokenizationStateStore.tokenizationSupport,be,!0,F);return new Gi.f(Me.tokens,be,this._languageIdCodec)}isCheapToTokenize(b){if(!this._tokenizationStateStore)return!0;const P=this._tokenizationStateStore.invalidLineStartIndex+1;return b>P?!1:b
=this._textModel.getLineCount():!1}_tokenizeOneInvalidLine(b){if(!this._tokenizationStateStore||!this._hasLinesToTokenize())return this._textModel.getLineCount()+1;const P=this._tokenizationStateStore.invalidLineStartIndex+1;return this._updateTokensUntilLine(b,P),P}_updateTokensUntilLine(b,P){if(!this._tokenizationStateStore)return;const M=this._textModel.getLanguageId(),q=this._textModel.getLineCount(),p=P-1;for(let F=this._tokenizationStateStore.invalidLineStartIndex;F<=p;F++){const de=this._textModel.getLineContent(F+1),be=this._tokenizationStateStore.getBeginState(F),ye=Jn(this._languageIdCodec,M,this._tokenizationStateStore.tokenizationSupport,de,!0,be);b.add(F+1,ye.tokens),this._tokenizationStateStore.setEndState(q,F,ye.endState),F=this._tokenizationStateStore.invalidLineStartIndex-1}}_tokenizeViewport(b,P,M){if(!this._tokenizationStateStore||M<=this._tokenizationStateStore.invalidLineStartIndex)return;if(P<=this._tokenizationStateStore.invalidLineStartIndex){this._updateTokensUntilLine(b,M);return}let q=this._textModel.getLineFirstNonWhitespaceColumn(P);const p=[];let F=null;for(let ye=P-1;q>1&&ye>=1;ye--){const Me=this._textModel.getLineFirstNonWhitespaceColumn(ye);if(Me!==0&&Me=0;ye--)be=Jn(this._languageIdCodec,de,this._tokenizationStateStore.tokenizationSupport,p[ye],!1,be).endState;for(let ye=P;ye<=M;ye++){const Me=this._textModel.getLineContent(ye),He=Jn(this._languageIdCodec,de,this._tokenizationStateStore.tokenizationSupport,Me,!0,be);b.add(ye,He.tokens),this._tokenizationStateStore.markMustBeTokenized(ye-1),be=He.endState}}}function Nn(qe,b){if(qe.isTooLargeForTokenization())return[null,null];const P=Oi.dG.get(b.getLanguageId());if(!P)return[null,null];let M;try{M=P.getInitialState()}catch(q){return(0,te.dz)(q),[null,null]}return[P,M]}function Jn(qe,b,P,M,q,p){let F=null;if(P)try{F=P.tokenizeEncoded(M,q,p.clone())}catch(de){(0,te.dz)(de)}return F||(F=(0,Fi.Lh)(qe.encodeLanguageId(b),p)),Gi.f.convertToEndOffset(F.tokens,M.length),F}const Ti=new Uint32Array(0).buffer;class es{static deleteBeginning(b,P){return b===null||b===Ti?b:es.delete(b,0,P)}static deleteEnding(b,P){if(b===null||b===Ti)return b;const M=xi(b),q=M[M.length-2];return es.delete(b,P,q)}static delete(b,P,M){if(b===null||b===Ti||P===M)return b;const q=xi(b),p=q.length>>>1;if(P===0&&q[q.length-2]===M)return Ti;const F=Gi.f.findIndexInTokensArray(q,P),de=F>0?q[F-1<<1]:0,be=q[F<<1];if(MMe&&(q[ye++]=wt,q[ye++]=q[(gt<<1)+1],Me=wt)}if(ye===q.length)return b;const $e=new Uint32Array(ye);return $e.set(q.subarray(0,ye),0),$e.buffer}static append(b,P){if(P===Ti)return b;if(b===Ti)return P;if(b===null)return b;if(P===null)return null;const M=xi(b),q=xi(P),p=q.length>>>1,F=new Uint32Array(M.length+q.length);F.set(M,0);let de=M.length;const be=M[M.length-2];for(let ye=0;ye>>1;let F=Gi.f.findIndexInTokensArray(q,P);F>0&&q[F-1<<1]===P&&F--;for(let de=F;de
1&&(p=os.x.getLanguageId(q[1])!==b),!p)return Ti}if(!q||q.length===0){const p=new Uint32Array(2);return p[0]=P,p[1]=cn(b),p.buffer}return q[q.length-2]=P,q.byteOffset===0&&q.byteLength===q.buffer.byteLength?q.buffer:q}_ensureLine(b){for(;b>=this._len;)this._lineTokens[this._len]=null,this._len++}_deleteLines(b,P){P!==0&&(b+P>this._len&&(P=this._len-b),this._lineTokens.splice(b,P),this._len-=P)}_insertLines(b,P){if(P===0)return;const M=[];for(let q=0;q
=this._len)return;if(b.startLineNumber===b.endLineNumber){if(b.startColumn===b.endColumn)return;this._lineTokens[P]=es.delete(this._lineTokens[P],b.startColumn-1,b.endColumn-1);return}this._lineTokens[P]=es.deleteEnding(this._lineTokens[P],b.startColumn-1);const M=b.endLineNumber-1;let q=null;M=this._len)){if(P===0){this._lineTokens[q]=es.insert(this._lineTokens[q],b.column-1,M);return}this._lineTokens[q]=es.deleteEnding(this._lineTokens[q],b.column-1),this._lineTokens[q]=es.insert(this._lineTokens[q],b.column-1,M),this._insertLines(b.lineNumber,P)}}}function cn(qe){return(qe<<0|0|0|32768|2<<24|1024)>>>0}class Wi{constructor(b){this._pieces=[],this._isComplete=!1,this._languageIdCodec=b}flush(){this._pieces=[],this._isComplete=!1}isEmpty(){return this._pieces.length===0}set(b,P){this._pieces=b||[],this._isComplete=P}setPartial(b,P){let M=b;if(P.length>0){const p=P[0].getRange(),F=P[P.length-1].getRange();if(!p||!F)return b;M=b.plusRange(p).plusRange(F)}let q=null;for(let p=0,F=this._pieces.length;pM.endLineNumber){q=q||{index:p};break}if(de.removeTokens(M),de.isEmpty()){this._pieces.splice(p,1),p--,F--;continue}if(de.endLineNumberM.endLineNumber){q=q||{index:p};continue}const[be,ye]=de.split(M);if(be.isEmpty()){q=q||{index:p};continue}ye.isEmpty()||(this._pieces.splice(p,1,be,ye),p++,F++,q=q||{index:p})}return q=q||{index:this._pieces.length},P.length>0&&(this._pieces=I.nK(this._pieces,q.index,P)),M}isComplete(){return this._isComplete}addSparseTokens(b,P){if(P.getLineContent().length===0)return P;const M=this._pieces;if(M.length===0)return P;const q=Wi._findFirstPieceWithLine(M,b),p=M[q].getLineTokens(b);if(!p)return P;const F=P.getCount(),de=p.getCount();let be=0;const ye=[];let Me=0,He=0;const $e=(gt,wt)=>{gt!==He&&(He=gt,ye[Me++]=gt,ye[Me++]=wt)};for(let gt=0;gt>>0,Xt=~Wt>>>0;for(;beP)q=p-1;else{for(;p>M&&b[p-1].startLineNumber<=P&&P<=b[p-1].endLineNumber;)p--;return p}}return M}acceptEdit(b,P,M,q,p){for(const F of this._pieces)F.acceptEdit(b,P,M,q,p)}}class vn extends gn._{constructor(b,P,M,q,p){super(),this._languageService=b,this._languageConfigurationService=P,this._textModel=M,this.bracketPairsTextModelPart=q,this._languageId=p,this._onDidChangeLanguage=this._register(new $.vl),this.onDidChangeLanguage=this._onDidChangeLanguage.event,this._onDidChangeLanguageConfiguration=this._register(new $.vl),this.onDidChangeLanguageConfiguration=this._onDidChangeLanguageConfiguration.event,this._onDidChangeTokens=this._register(new $.vl),this.onDidChangeTokens=this._onDidChangeTokens.event,this._backgroundTokenizationState=0,this._onBackgroundTokenizationStateChanged=this._register(new $.vl),this._tokens=new Zi(this._languageService.languageIdCodec),this._semanticTokens=new Wi(this._languageService.languageIdCodec),this._tokenization=new $i(M,this,this._languageService.languageIdCodec),this._languageRegistryListener=this._languageConfigurationService.onDidChange(F=>{F.affects(this._languageId)&&this._onDidChangeLanguageConfiguration.fire({})})}acceptEdit(b,P,M,q,p){this._tokens.acceptEdit(b,M,q),this._semanticTokens.acceptEdit(b,M,q,p,P.length>0?P.charCodeAt(0):0)}handleDidChangeAttached(){this._tokenization.handleDidChangeAttached()}flush(){this._tokens.flush(),this._semanticTokens.flush()}handleDidChangeContent(b){this._tokenization.handleDidChangeContent(b)}dispose(){this._languageRegistryListener.dispose(),this._tokenization.dispose(),super.dispose()}get backgroundTokenizationState(){return this._backgroundTokenizationState}handleTokenizationProgress(b){if(this._backgroundTokenizationState===2)return;const P=b?2:1;this._backgroundTokenizationState!==P&&(this._backgroundTokenizationState=P,this.bracketPairsTextModelPart.handleDidChangeBackgroundTokenizationState(),this._onBackgroundTokenizationStateChanged.fire())}setTokens(b,P=!1){if(b.length!==0){const M=[];for(let q=0,p=b.length;q