File: /www/server/panel/BTPanel/static/editor/worker-lua.js
'no use strict'
!(function (e) {
function t(e, t) {
var n = e,
r = ''
while (n) {
var i = t[n]
if (typeof i == 'string') return i + r
if (i) return i.location.replace(/\/*$/, '/') + (r || i.main || i.name)
if (i === !1) return ''
var s = n.lastIndexOf('/')
if (s === -1) break
;(r = n.substr(s) + r), (n = n.slice(0, s))
}
return e
}
if (typeof e.window != 'undefined' && e.document) return
if (e.require && e.define) return
e.console ||
((e.console = function () {
var e = Array.prototype.slice.call(arguments, 0)
postMessage({ type: 'log', data: e })
}),
(e.console.error = e.console.warn = e.console.log = e.console.trace = e.console)),
(e.window = e),
(e.ace = e),
(e.onerror = function (e, t, n, r, i) {
postMessage({
type: 'error',
data: { message: e, data: i.data, file: t, line: n, col: r, stack: i.stack },
})
}),
(e.normalizeModule = function (t, n) {
if (n.indexOf('!') !== -1) {
var r = n.split('!')
return e.normalizeModule(t, r[0]) + '!' + e.normalizeModule(t, r[1])
}
if (n.charAt(0) == '.') {
var i = t.split('/').slice(0, -1).join('/')
n = (i ? i + '/' : '') + n
while (n.indexOf('.') !== -1 && s != n) {
var s = n
n = n
.replace(/^\.\//, '')
.replace(/\/\.\//, '/')
.replace(/[^\/]+\/\.\.\//, '')
}
}
return n
}),
(e.require = function (r, i) {
i || ((i = r), (r = null))
if (!i.charAt) throw new Error('worker.js require() accepts only (parentId, id) as arguments')
i = e.normalizeModule(r, i)
var s = e.require.modules[i]
if (s)
return s.initialized || ((s.initialized = !0), (s.exports = s.factory().exports)), s.exports
if (!e.require.tlns) return console.log('unable to load ' + i)
var o = t(i, e.require.tlns)
return (
o.slice(-3) != '.js' && (o += '.js'),
(e.require.id = i),
(e.require.modules[i] = {}),
importScripts(o),
e.require(r, i)
)
}),
(e.require.modules = {}),
(e.require.tlns = {}),
(e.define = function (t, n, r) {
arguments.length == 2
? ((r = n), typeof t != 'string' && ((n = t), (t = e.require.id)))
: arguments.length == 1 && ((r = t), (n = []), (t = e.require.id))
if (typeof r != 'function') {
e.require.modules[t] = { exports: r, initialized: !0 }
return
}
n.length || (n = ['require', 'exports', 'module'])
var i = function (n) {
return e.require(t, n)
}
e.require.modules[t] = {
exports: {},
factory: function () {
var e = this,
t = r.apply(
this,
n.slice(0, r.length).map(function (t) {
switch (t) {
case 'require':
return i
case 'exports':
return e.exports
case 'module':
return e
default:
return i(t)
}
})
)
return t && (e.exports = t), e
},
}
}),
(e.define.amd = {}),
(require.tlns = {}),
(e.initBaseUrls = function (t) {
for (var n in t) require.tlns[n] = t[n]
}),
(e.initSender = function () {
var n = e.require('ace/lib/event_emitter').EventEmitter,
r = e.require('ace/lib/oop'),
i = function () {}
return (
function () {
r.implement(this, n),
(this.callback = function (e, t) {
postMessage({ type: 'call', id: t, data: e })
}),
(this.emit = function (e, t) {
postMessage({ type: 'event', name: e, data: t })
})
}.call(i.prototype),
new i()
)
})
var n = (e.main = null),
r = (e.sender = null)
e.onmessage = function (t) {
var i = t.data
if (i.event && r) r._signal(i.event, i.data)
else if (i.command)
if (n[i.command]) n[i.command].apply(n, i.args)
else {
if (!e[i.command]) throw new Error('Unknown command:' + i.command)
e[i.command].apply(e, i.args)
}
else if (i.init) {
e.initBaseUrls(i.tlns), (r = e.sender = e.initSender())
var s = require(i.module)[i.classname]
n = e.main = new s(r)
}
}
})(this),
ace.define('ace/lib/oop', [], function (e, t, n) {
'use strict'
;(t.inherits = function (e, t) {
;(e.super_ = t),
(e.prototype = Object.create(t.prototype, {
constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 },
}))
}),
(t.mixin = function (e, t) {
for (var n in t) e[n] = t[n]
return e
}),
(t.implement = function (e, n) {
t.mixin(e, n)
})
}),
ace.define('ace/range', [], function (e, t, n) {
'use strict'
var r = function (e, t) {
return e.row - t.row || e.column - t.column
},
i = function (e, t, n, r) {
;(this.start = { row: e, column: t }), (this.end = { row: n, column: r })
}
;(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 this.compare(e, t) == 0
}),
(this.compareRange = function (e) {
var t,
n = e.end,
r = e.start
return (
(t = this.compare(n.row, n.column)),
t == 1
? ((t = this.compare(r.row, r.column)), t == 1 ? 2 : t == 0 ? 1 : 0)
: t == -1
? -2
: ((t = this.compare(r.row, r.column)), t == -1 ? -1 : t == 1 ? 42 : 0)
)
}),
(this.comparePoint = function (e) {
return this.compare(e.row, e.column)
}),
(this.containsRange = function (e) {
return this.comparePoint(e.start) == 0 && this.comparePoint(e.end) == 0
}),
(this.intersects = function (e) {
var t = this.compareRange(e)
return t == -1 || t == 0 || t == 1
}),
(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) {
typeof e == 'object'
? ((this.start.column = e.column), (this.start.row = e.row))
: ((this.start.row = e), (this.start.column = t))
}),
(this.setEnd = function (e, t) {
typeof e == 'object'
? ((this.end.column = e.column), (this.end.row = e.row))
: ((this.end.row = e), (this.end.column = t))
}),
(this.inside = function (e, t) {
return this.compare(e, t) == 0 ? (this.isEnd(e, t) || this.isStart(e, t) ? !1 : !0) : !1
}),
(this.insideStart = function (e, t) {
return this.compare(e, t) == 0 ? (this.isEnd(e, t) ? !1 : !0) : !1
}),
(this.insideEnd = function (e, t) {
return this.compare(e, t) == 0 ? (this.isStart(e, t) ? !1 : !0) : !1
}),
(this.compare = function (e, t) {
return !this.isMultiLine() && e === this.start.row
? t < this.start.column
? -1
: t > this.end.column
? 1
: 0
: e < this.start.row
? -1
: e > this.end.row
? 1
: this.start.row === e
? t >= this.start.column
? 0
: -1
: this.end.row === e
? t <= this.end.column
? 0
: 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.row < e) var n = { row: e, column: 0 }
if (this.start.row > t) var r = { row: t + 1, column: 0 }
else if (this.start.row < e) var r = { row: e, column: 0 }
return i.fromPoints(r || this.start, n || this.end)
}),
(this.extend = function (e, t) {
var n = this.compare(e, t)
if (n == 0) return this
if (n == -1) var r = { row: e, column: t }
else var s = { row: e, column: t }
return i.fromPoints(r || this.start, s || this.end)
}),
(this.isEmpty = function () {
return this.start.row === this.end.row && this.start.column === this.end.column
}),
(this.isMultiLine = function () {
return this.start.row !== this.end.row
}),
(this.clone = function () {
return i.fromPoints(this.start, this.end)
}),
(this.collapseRows = function () {
return this.end.column == 0
? new i(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0)
: new i(this.start.row, 0, this.end.row, 0)
}),
(this.toScreenRange = function (e) {
var t = e.documentToScreenPosition(this.start),
n = e.documentToScreenPosition(this.end)
return new i(t.row, t.column, n.row, n.column)
}),
(this.moveBy = function (e, t) {
;(this.start.row += e),
(this.start.column += t),
(this.end.row += e),
(this.end.column += t)
})
}).call(i.prototype),
(i.fromPoints = function (e, t) {
return new i(e.row, e.column, t.row, t.column)
}),
(i.comparePoints = r),
(i.comparePoints = function (e, t) {
return e.row - t.row || e.column - t.column
}),
(t.Range = i)
}),
ace.define('ace/apply_delta', [], function (e, t, n) {
'use strict'
function r(e, t) {
throw (console.log('Invalid Delta:', e), 'Invalid Delta: ' + t)
}
function i(e, t) {
return t.row >= 0 && t.row < e.length && t.column >= 0 && t.column <= e[t.row].length
}
function s(e, t) {
t.action != 'insert' &&
t.action != 'remove' &&
r(t, "delta.action must be 'insert' or 'remove'"),
t.lines instanceof Array || r(t, 'delta.lines must be an Array'),
(!t.start || !t.end) && r(t, 'delta.start/end must be an present')
var n = t.start
i(e, t.start) || r(t, 'delta.start must be contained in document')
var s = t.end
t.action == 'remove' &&
!i(e, s) &&
r(t, "delta.end must contained in document for 'remove' actions")
var o = s.row - n.row,
u = s.column - (o == 0 ? n.column : 0)
;(o != t.lines.length - 1 || t.lines[o].length != u) &&
r(t, 'delta.range must match delta lines')
}
t.applyDelta = function (e, t, n) {
var r = t.start.row,
i = t.start.column,
s = e[r] || ''
switch (t.action) {
case 'insert':
var o = t.lines
if (o.length === 1) e[r] = s.substring(0, i) + t.lines[0] + s.substring(i)
else {
var u = [r, 1].concat(t.lines)
e.splice.apply(e, u),
(e[r] = s.substring(0, i) + e[r]),
(e[r + t.lines.length - 1] += s.substring(i))
}
break
case 'remove':
var a = t.end.column,
f = t.end.row
r === f
? (e[r] = s.substring(0, i) + s.substring(a))
: e.splice(r, f - r + 1, s.substring(0, i) + e[f].substring(a))
}
}
}),
ace.define('ace/lib/event_emitter', [], function (e, t, n) {
'use strict'
var r = {},
i = function () {
this.propagationStopped = !0
},
s = function () {
this.defaultPrevented = !0
}
;(r._emit = r._dispatchEvent =
function (e, t) {
this._eventRegistry || (this._eventRegistry = {}),
this._defaultHandlers || (this._defaultHandlers = {})
var n = this._eventRegistry[e] || [],
r = this._defaultHandlers[e]
if (!n.length && !r) return
if (typeof t != 'object' || !t) t = {}
t.type || (t.type = e),
t.stopPropagation || (t.stopPropagation = i),
t.preventDefault || (t.preventDefault = s),
(n = n.slice())
for (var o = 0; o < n.length; o++) {
n[o](t, this)
if (t.propagationStopped) break
}
if (r && !t.defaultPrevented) return r(t, this)
}),
(r._signal = function (e, t) {
var n = (this._eventRegistry || {})[e]
if (!n) return
n = n.slice()
for (var r = 0; r < n.length; r++) n[r](t, this)
}),
(r.once = function (e, t) {
var n = this
this.on(e, function r() {
n.off(e, r), t.apply(null, arguments)
})
if (!t)
return new Promise(function (e) {
t = e
})
}),
(r.setDefaultHandler = function (e, t) {
var n = this._defaultHandlers
n || (n = this._defaultHandlers = { _disabled_: {} })
if (n[e]) {
var r = n[e],
i = n._disabled_[e]
i || (n._disabled_[e] = i = []), i.push(r)
var s = i.indexOf(t)
s != -1 && i.splice(s, 1)
}
n[e] = t
}),
(r.removeDefaultHandler = function (e, t) {
var n = this._defaultHandlers
if (!n) return
var r = n._disabled_[e]
if (n[e] == t) r && this.setDefaultHandler(e, r.pop())
else if (r) {
var i = r.indexOf(t)
i != -1 && r.splice(i, 1)
}
}),
(r.on = r.addEventListener =
function (e, t, n) {
this._eventRegistry = this._eventRegistry || {}
var r = this._eventRegistry[e]
return (
r || (r = this._eventRegistry[e] = []),
r.indexOf(t) == -1 && r[n ? 'unshift' : 'push'](t),
t
)
}),
(r.off =
r.removeListener =
r.removeEventListener =
function (e, t) {
this._eventRegistry = this._eventRegistry || {}
var n = this._eventRegistry[e]
if (!n) return
var r = n.indexOf(t)
r !== -1 && n.splice(r, 1)
}),
(r.removeAllListeners = function (e) {
e || (this._eventRegistry = this._defaultHandlers = undefined),
this._eventRegistry && (this._eventRegistry[e] = undefined),
this._defaultHandlers && (this._defaultHandlers[e] = undefined)
}),
(t.EventEmitter = r)
}),
ace.define('ace/anchor', [], function (e, t, n) {
'use strict'
var r = e('./lib/oop'),
i = e('./lib/event_emitter').EventEmitter,
s = (t.Anchor = function (e, t, n) {
;(this.$onChange = this.onChange.bind(this)),
this.attach(e),
typeof n == 'undefined' ? this.setPosition(t.row, t.column) : this.setPosition(t, n)
})
;(function () {
function e(e, t, n) {
var r = n ? e.column <= t.column : e.column < t.column
return e.row < t.row || (e.row == t.row && r)
}
function t(t, n, r) {
var i = t.action == 'insert',
s = (i ? 1 : -1) * (t.end.row - t.start.row),
o = (i ? 1 : -1) * (t.end.column - t.start.column),
u = t.start,
a = i ? u : t.end
return e(n, u, r)
? { row: n.row, column: n.column }
: e(a, n, !r)
? { row: n.row + s, column: n.column + (n.row == a.row ? o : 0) }
: { row: u.row, column: u.column }
}
r.implement(this, i),
(this.getPosition = function () {
return this.$clipPositionToDocument(this.row, this.column)
}),
(this.getDocument = function () {
return this.document
}),
(this.$insertRight = !1),
(this.onChange = function (e) {
if (e.start.row == e.end.row && e.start.row != this.row) return
if (e.start.row > this.row) return
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 r
n ? (r = { row: e, column: t }) : (r = this.$clipPositionToDocument(e, t))
if (this.row == r.row && this.column == r.column) return
var i = { row: this.row, column: this.column }
;(this.row = r.row),
(this.column = r.column),
this._signal('change', { old: i, value: r })
}),
(this.detach = function () {
this.document.off('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', [], function (e, t, n) {
'use strict'
var r = e('./lib/oop'),
i = e('./apply_delta').applyDelta,
s = e('./lib/event_emitter').EventEmitter,
o = e('./range').Range,
u = e('./anchor').Anchor,
a = function (e) {
;(this.$lines = ['']),
e.length === 0
? (this.$lines = [''])
: Array.isArray(e)
? this.insertMergedLines({ row: 0, column: 0 }, e)
: this.insert({ row: 0, column: 0 }, e)
}
;(function () {
r.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 u(this, e, t)
}),
'aaa'.split(/a/).length === 0
? (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) {
if (this.$newLineMode === e) return
;(this.$newLineMode = e), this._signal('changeNewLineMode')
}),
(this.getNewLineMode = function () {
return this.$newLineMode
}),
(this.isNewLine = function (e) {
return e == '\r\n' || e == '\r' || e == '\n'
}),
(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),
r = this.pos(e.row, e.column + t.length)
return (
this.applyDelta({ start: n, end: r, action: 'insert', lines: [t] }, !0),
this.clonePos(r)
)
}),
(this.clippedPos = function (e, t) {
var n = this.getLength()
e === undefined ? (e = n) : e < 0 ? (e = 0) : e >= n && ((e = n - 1), (t = undefined))
var r = this.getLine(e)
return (
t == undefined && (t = r.length),
(t = Math.min(Math.max(t, 0), r.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
e < this.getLength()
? ((t = t.concat([''])), (n = 0))
: ((t = [''].concat(t)), e--, (n = this.$lines[e].length)),
this.insertMergedLines({ row: e, column: n }, t)
}),
(this.insertMergedLines = function (e, t) {
var n = this.clippedPos(e.row, e.column),
r = {
row: n.row + t.length - 1,
column: (t.length == 1 ? n.column : 0) + t[t.length - 1].length,
}
return this.applyDelta({ start: n, end: r, action: 'insert', lines: t }), this.clonePos(r)
}),
(this.remove = function (e) {
var t = this.clippedPos(e.start.row, e.start.column),
n = this.clippedPos(e.end.row, e.end.column)
return (
this.applyDelta({
start: t,
end: n,
action: 'remove',
lines: this.getLinesForRange({ start: t, end: n }),
}),
this.clonePos(t)
)
}),
(this.removeInLine = function (e, t, n) {
var r = this.clippedPos(e, t),
i = this.clippedPos(e, n)
return (
this.applyDelta(
{
start: r,
end: i,
action: 'remove',
lines: this.getLinesForRange({ start: r, end: i }),
},
!0
),
this.clonePos(r)
)
}),
(this.removeFullLines = function (e, t) {
;(e = Math.min(Math.max(0, e), this.getLength() - 1)),
(t = Math.min(Math.max(0, t), this.getLength() - 1))
var n = t == this.getLength() - 1 && e > 0,
r = t < this.getLength() - 1,
i = n ? e - 1 : e,
s = n ? this.getLine(i).length : 0,
u = r ? t + 1 : t,
a = r ? 0 : this.getLine(u).length,
f = new o(i, s, u, a),
l = this.$lines.slice(e, t + 1)
return (
this.applyDelta({
start: f.start,
end: f.end,
action: 'remove',
lines: this.getLinesForRange(f),
}),
l
)
}),
(this.removeNewLine = function (e) {
e < this.getLength() - 1 &&
e >= 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) {
e instanceof o || (e = o.fromPoints(e.start, e.end))
if (t.length === 0 && e.isEmpty()) return e.start
if (t == this.getTextRange(e)) return e.end
this.remove(e)
var n
return t ? (n = this.insert(e.start, t)) : (n = e.start), n
}),
(this.applyDeltas = function (e) {
for (var t = 0; t < e.length; t++) this.applyDelta(e[t])
}),
(this.revertDeltas = function (e) {
for (var t = e.length - 1; t >= 0; t--) this.revertDelta(e[t])
}),
(this.applyDelta = function (e, t) {
var n = e.action == 'insert'
if (n ? e.lines.length <= 1 && !e.lines[0] : !o.comparePoints(e.start, e.end)) return
n && e.lines.length > 2e4
? this.$splitAndapplyLargeDelta(e, 2e4)
: (i(this.$lines, e, t), this._signal('change', e))
}),
(this.$safeApplyDelta = function (e) {
var t = this.$lines.length
;((e.action == 'remove' && e.start.row < t && e.end.row < t) ||
(e.action == 'insert' && e.start.row <= t)) &&
this.applyDelta(e)
}),
(this.$splitAndapplyLargeDelta = function (e, t) {
var n = e.lines,
r = n.length - t + 1,
i = e.start.row,
s = e.start.column
for (var o = 0, u = 0; o < r; o = u) {
u += t - 1
var a = n.slice(o, u)
a.push(''),
this.applyDelta(
{
start: this.pos(i + o, s),
end: this.pos(i + u, (s = 0)),
action: e.action,
lines: a,
},
!0
)
}
;(e.lines = n.slice(o)),
(e.start.row = i + o),
(e.start.column = s),
this.applyDelta(e, !0)
}),
(this.revertDelta = function (e) {
this.$safeApplyDelta({
start: this.clonePos(e.start),
end: this.clonePos(e.end),
action: e.action == 'insert' ? 'remove' : 'insert',
lines: e.lines.slice(),
})
}),
(this.indexToPosition = function (e, t) {
var n = this.$lines || this.getAllLines(),
r = this.getNewLineCharacter().length
for (var i = t || 0, s = n.length; i < s; i++) {
e -= n[i].length + r
if (e < 0) return { row: i, column: e + n[i].length + r }
}
return { row: s - 1, column: e + n[s - 1].length + r }
}),
(this.positionToIndex = function (e, t) {
var n = this.$lines || this.getAllLines(),
r = this.getNewLineCharacter().length,
i = 0,
s = Math.min(e.row, n.length)
for (var o = t || 0; o < s; ++o) i += n[o].length + r
return i + e.column
})
}).call(a.prototype),
(t.Document = a)
}),
ace.define('ace/lib/lang', [], 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) {
t & 1 && (n += e)
if ((t >>= 1)) e += e
}
return n
})
var r = /^\s\s*/,
i = /\s\s*$/
;(t.stringTrimLeft = function (e) {
return e.replace(r, '')
}),
(t.stringTrimRight = function (e) {
return e.replace(i, '')
}),
(t.copyObject = function (e) {
var t = {}
for (var n in e) t[n] = e[n]
return t
}),
(t.copyArray = function (e) {
var t = []
for (var n = 0, r = e.length; n < r; n++)
e[n] && typeof e[n] == 'object' ? (t[n] = this.copyObject(e[n])) : (t[n] = e[n])
return t
}),
(t.deepCopy = function s(e) {
if (typeof e != 'object' || !e) return e
var t
if (Array.isArray(e)) {
t = []
for (var n = 0; n < e.length; n++) t[n] = s(e[n])
return t
}
if (Object.prototype.toString.call(e) !== '[object Object]') return e
t = {}
for (var n in e) t[n] = s(e[n])
return t
}),
(t.arrayToMap = function (e) {
var t = {}
for (var n = 0; n < e.length; n++) t[e[n]] = 1
return t
}),
(t.createMap = function (e) {
var t = Object.create(null)
for (var n in e) t[n] = e[n]
return t
}),
(t.arrayRemove = function (e, t) {
for (var n = 0; n <= e.length; n++) t === e[n] && e.splice(n, 1)
}),
(t.escapeRegExp = function (e) {
return e.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1')
}),
(t.escapeHTML = function (e) {
return ('' + e)
.replace(/&/g, '&')
.replace(/"/g, '"')
.replace(/'/g, ''')
.replace(/</g, '<')
}),
(t.getMatchOffsets = function (e, t) {
var n = []
return (
e.replace(t, function (e) {
n.push({ offset: arguments[arguments.length - 2], length: e.length })
}),
n
)
}),
(t.deferredCall = function (e) {
var t = null,
n = function () {
;(t = null), e()
},
r = function (e) {
return r.cancel(), (t = setTimeout(n, e || 0)), r
}
return (
(r.schedule = r),
(r.call = function () {
return this.cancel(), e(), r
}),
(r.cancel = function () {
return clearTimeout(t), (t = null), r
}),
(r.isPending = function () {
return t
}),
r
)
}),
(t.delayedCall = function (e, t) {
var n = null,
r = function () {
;(n = null), e()
},
i = function (e) {
n == null && (n = setTimeout(r, e || t))
}
return (
(i.delay = function (e) {
n && clearTimeout(n), (n = setTimeout(r, e || t))
}),
(i.schedule = i),
(i.call = function () {
this.cancel(), e()
}),
(i.cancel = function () {
n && clearTimeout(n), (n = null)
}),
(i.isPending = function () {
return n
}),
i
)
})
}),
ace.define('ace/worker/mirror', [], function (e, t, n) {
'use strict'
var r = e('../range').Range,
i = e('../document').Document,
s = e('../lib/lang'),
o = (t.Mirror = function (e) {
this.sender = e
var t = (this.doc = new i('')),
n = (this.deferredUpdate = s.delayedCall(this.onUpdate.bind(this))),
r = this
e.on('change', function (e) {
var i = e.data
if (i[0].start) t.applyDeltas(i)
else
for (var s = 0; s < i.length; s += 2) {
if (Array.isArray(i[s + 1]))
var o = { action: 'insert', start: i[s], lines: i[s + 1] }
else var o = { action: 'remove', start: i[s], end: i[s + 1] }
t.applyDelta(o, !0)
}
if (r.$timeout) return n.schedule(r.$timeout)
r.onUpdate()
})
})
;(function () {
;(this.$timeout = 500),
(this.setTimeout = function (e) {
this.$timeout = e
}),
(this.setValue = function (e) {
this.doc.setValue(e), this.deferredUpdate.schedule(this.$timeout)
}),
(this.getValue = function (e) {
this.sender.callback(this.doc.getValue(), e)
}),
(this.onUpdate = function () {}),
(this.isPending = function () {
return this.deferredUpdate.isPending()
})
}).call(o.prototype)
}),
ace.define('ace/mode/lua/luaparse', [], function (e, t, n) {
;(function (e, n, r) {
r(t)
})(this, 'luaparse', function (e) {
'use strict'
function m(e) {
if (mt) {
var t = vt.pop()
t.complete(), n.locations && (e.loc = t.loc), n.ranges && (e.range = t.range)
}
return e
}
function w(e, t, n) {
for (var r = 0, i = e.length; r < i; r++) if (e[r][t] === n) return r
return -1
}
function E(e) {
var t = g.call(arguments, 1)
return (
(e = e.replace(/%(\d)/g, function (e, n) {
return '' + t[n - 1] || ''
})),
e
)
}
function S() {
var e = g.call(arguments),
t = {},
n,
r
for (var i = 0, s = e.length; i < s; i++) {
n = e[i]
for (r in n) n.hasOwnProperty(r) && (t[r] = n[r])
}
return t
}
function x(e) {
var t = E.apply(null, g.call(arguments, 1)),
n,
r
throw (
('undefined' != typeof e.line
? ((r = e.range[0] - e.lineStart),
(n = new SyntaxError(E('[%1:%2] %3', e.line, r, t))),
(n.line = e.line),
(n.index = e.range[0]),
(n.column = r))
: ((r = C - D + 1),
(n = new SyntaxError(E('[%1:%2] %3', _, r, t))),
(n.index = C),
(n.line = _),
(n.column = r)),
n)
)
}
function T(e, t) {
x(t, d.expectedToken, e, t.value)
}
function N(e, t) {
'undefined' == typeof t && (t = A.value)
if ('undefined' != typeof e.type) {
var n
switch (e.type) {
case o:
n = 'string'
break
case u:
n = 'keyword'
break
case a:
n = 'identifier'
break
case f:
n = 'number'
break
case l:
n = 'symbol'
break
case c:
n = 'boolean'
break
case h:
return x(e, d.unexpected, 'symbol', 'nil', t)
}
return x(e, d.unexpected, n, e.value, t)
}
return x(e, d.unexpected, 'symbol', e, t)
}
function P() {
H()
while (45 === t.charCodeAt(C) && 45 === t.charCodeAt(C + 1)) X(), H()
if (C >= r) return { type: s, value: '<eof>', line: _, lineStart: D, range: [C, C] }
var e = t.charCodeAt(C),
n = t.charCodeAt(C + 1)
M = C
if (et(e)) return B()
switch (e) {
case 39:
case 34:
return I()
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
return R()
case 46:
if (Y(n)) return R()
if (46 === n) return 46 === t.charCodeAt(C + 2) ? F() : j('..')
return j('.')
case 61:
if (61 === n) return j('==')
return j('=')
case 62:
if (61 === n) return j('>=')
return j('>')
case 60:
if (61 === n) return j('<=')
return j('<')
case 126:
if (61 === n) return j('~=')
return j('~')
case 58:
if (58 === n) return j('::')
return j(':')
case 91:
if (91 === n || 61 === n) return q()
return j('[')
case 42:
case 47:
case 94:
case 37:
case 44:
case 123:
case 125:
case 93:
case 40:
case 41:
case 59:
case 35:
case 45:
case 43:
case 38:
case 124:
return j(t.charAt(C))
}
return N(t.charAt(C))
}
function H() {
while (C < r) {
var e = t.charCodeAt(C)
if (Q(e)) C++
else {
if (!G(e)) break
_++, (D = ++C)
}
}
}
function B() {
var e, n
while (tt(t.charCodeAt(++C)));
return (
(e = t.slice(M, C)),
nt(e)
? (n = u)
: 'true' === e || 'false' === e
? ((n = c), (e = 'true' === e))
: 'nil' === e
? ((n = h), (e = null))
: (n = a),
{ type: n, value: e, line: _, lineStart: D, range: [M, C] }
)
}
function j(e) {
return (C += e.length), { type: l, value: e, line: _, lineStart: D, range: [M, C] }
}
function F() {
return (C += 3), { type: p, value: '...', line: _, lineStart: D, range: [M, C] }
}
function I() {
var e = t.charCodeAt(C++),
n = C,
i = '',
s
while (C < r) {
s = t.charCodeAt(C++)
if (e === s) break
if (92 === s) (i += t.slice(n, C - 1) + W()), (n = C)
else if (C >= r || G(s))
(i += t.slice(n, C - 1)), x({}, d.unfinishedString, i + String.fromCharCode(s))
}
return (i += t.slice(n, C - 1)), { type: o, value: i, line: _, lineStart: D, range: [M, C] }
}
function q() {
var e = V()
return (
!1 === e && x(k, d.expected, '[', k.value),
{ type: o, value: e, line: _, lineStart: D, range: [M, C] }
)
}
function R() {
var e = t.charAt(C),
n = t.charAt(C + 1),
r = '0' === e && 'xX'.indexOf(n || null) >= 0 ? U() : z()
return { type: f, value: r, line: _, lineStart: D, range: [M, C] }
}
function U() {
var e = 0,
n = 1,
r = 1,
i,
s,
o,
u
;(u = C += 2), Z(t.charCodeAt(C)) || x({}, d.malformedNumber, t.slice(M, C))
while (Z(t.charCodeAt(C))) C++
i = parseInt(t.slice(u, C), 16)
if ('.' === t.charAt(C)) {
s = ++C
while (Z(t.charCodeAt(C))) C++
;(e = t.slice(s, C)), (e = s === C ? 0 : parseInt(e, 16) / Math.pow(16, C - s))
}
if ('pP'.indexOf(t.charAt(C) || null) >= 0) {
C++,
'+-'.indexOf(t.charAt(C) || null) >= 0 && (r = '+' === t.charAt(C++) ? 1 : -1),
(o = C),
Y(t.charCodeAt(C)) || x({}, d.malformedNumber, t.slice(M, C))
while (Y(t.charCodeAt(C))) C++
;(n = t.slice(o, C)), (n = Math.pow(2, n * r))
}
return (i + e) * n
}
function z() {
while (Y(t.charCodeAt(C))) C++
if ('.' === t.charAt(C)) {
C++
while (Y(t.charCodeAt(C))) C++
}
if ('eE'.indexOf(t.charAt(C) || null) >= 0) {
C++,
'+-'.indexOf(t.charAt(C) || null) >= 0 && C++,
Y(t.charCodeAt(C)) || x({}, d.malformedNumber, t.slice(M, C))
while (Y(t.charCodeAt(C))) C++
}
return parseFloat(t.slice(M, C))
}
function W() {
var e = C
switch (t.charAt(C)) {
case 'n':
return C++, '\n'
case 'r':
return C++, '\r'
case 't':
return C++, ' '
case 'v':
return C++, '\x0b'
case 'b':
return C++, '\b'
case 'f':
return C++, '\f'
case 'z':
return C++, H(), ''
case 'x':
if (Z(t.charCodeAt(C + 1)) && Z(t.charCodeAt(C + 2)))
return (C += 3), '\\' + t.slice(e, C)
return '\\' + t.charAt(C++)
default:
if (Y(t.charCodeAt(C))) {
while (Y(t.charCodeAt(++C)));
return '\\' + t.slice(e, C)
}
return t.charAt(C++)
}
}
function X() {
;(M = C), (C += 2)
var e = t.charAt(C),
i = '',
s = !1,
o = C,
u = D,
a = _
'[' === e && ((i = V()), !1 === i ? (i = e) : (s = !0))
if (!s) {
while (C < r) {
if (G(t.charCodeAt(C))) break
C++
}
n.comments && (i = t.slice(o, C))
}
if (n.comments) {
var f = v.comment(i, t.slice(M, C))
n.locations &&
(f.loc = { start: { line: a, column: M - u }, end: { line: _, column: C - D } }),
n.ranges && (f.range = [M, C]),
O.push(f)
}
}
function V() {
var e = 0,
n = '',
i = !1,
s,
o
C++
while ('=' === t.charAt(C + e)) e++
if ('[' !== t.charAt(C + e)) return !1
;(C += e + 1), G(t.charCodeAt(C)) && (_++, (D = C++)), (o = C)
while (C < r) {
;(s = t.charAt(C++)), G(s.charCodeAt(0)) && (_++, (D = C))
if (']' === s) {
i = !0
for (var u = 0; u < e; u++) '=' !== t.charAt(C + u) && (i = !1)
']' !== t.charAt(C + e) && (i = !1)
}
if (i) break
}
return (n += t.slice(o, C - 1)), (C += e + 1), n
}
function $() {
;(L = k), (k = A), (A = P())
}
function J(e) {
return e === k.value ? ($(), !0) : !1
}
function K(e) {
e === k.value ? $() : x(k, d.expected, e, k.value)
}
function Q(e) {
return 9 === e || 32 === e || 11 === e || 12 === e
}
function G(e) {
return 10 === e || 13 === e
}
function Y(e) {
return e >= 48 && e <= 57
}
function Z(e) {
return (e >= 48 && e <= 57) || (e >= 97 && e <= 102) || (e >= 65 && e <= 70)
}
function et(e) {
return (e >= 65 && e <= 90) || (e >= 97 && e <= 122) || 95 === e
}
function tt(e) {
return (e >= 65 && e <= 90) || (e >= 97 && e <= 122) || 95 === e || (e >= 48 && e <= 57)
}
function nt(e) {
switch (e.length) {
case 2:
return 'do' === e || 'if' === e || 'in' === e || 'or' === e
case 3:
return 'and' === e || 'end' === e || 'for' === e || 'not' === e
case 4:
return 'else' === e || 'goto' === e || 'then' === e
case 5:
return 'break' === e || 'local' === e || 'until' === e || 'while' === e
case 6:
return 'elseif' === e || 'repeat' === e || 'return' === e
case 8:
return 'function' === e
}
return !1
}
function rt(e) {
return l === e.type ? '#-~'.indexOf(e.value) >= 0 : u === e.type ? 'not' === e.value : !1
}
function it(e) {
switch (e.type) {
case 'CallExpression':
case 'TableCallExpression':
case 'StringCallExpression':
return !0
}
return !1
}
function st(e) {
if (s === e.type) return !0
if (u !== e.type) return !1
switch (e.value) {
case 'else':
case 'elseif':
case 'end':
case 'until':
return !0
default:
return !1
}
}
function ft() {
ot.push(Array.apply(null, ot[ut++]))
}
function lt() {
ot.pop(), ut--
}
function ct(e) {
if (-1 !== b(ot[ut], e)) return
ot[ut].push(e)
}
function ht(e) {
ct(e.name), pt(e, !0)
}
function pt(e, t) {
!t && -1 === w(at, 'name', e.name) && at.push(e), (e.isLocal = t)
}
function dt(e) {
return -1 !== b(ot[ut], e)
}
function gt() {
return new yt(k)
}
function yt(e) {
n.locations &&
(this.loc = {
start: { line: e.line, column: e.range[0] - e.lineStart },
end: { line: 0, column: 0 },
}),
n.ranges && (this.range = [e.range[0], 0])
}
function bt() {
mt && vt.push(gt())
}
function wt(e) {
mt && vt.push(e)
}
function Et() {
$(), bt()
var e = St()
return s !== k.type && N(k), mt && !e.length && (L = k), m(v.chunk(e))
}
function St(e) {
var t = [],
r
n.scope && ft()
while (!st(k)) {
if ('return' === k.value) {
t.push(xt())
break
}
;(r = xt()), r && t.push(r)
}
return n.scope && lt(), t
}
function xt() {
bt()
if (u === k.type)
switch (k.value) {
case 'local':
return $(), Dt()
case 'if':
return $(), Mt()
case 'return':
return $(), Ot()
case 'function':
$()
var e = jt()
return Bt(e)
case 'while':
return $(), Lt()
case 'for':
return $(), _t()
case 'repeat':
return $(), At()
case 'break':
return $(), Nt()
case 'do':
return $(), kt()
case 'goto':
return $(), Ct()
}
if (l === k.type && J('::')) return Tt()
mt && vt.pop()
if (J(';')) return
return Pt()
}
function Tt() {
var e = k.value,
t = Ht()
return n.scope && (ct('::' + e + '::'), pt(t, !0)), K('::'), m(v.labelStatement(t))
}
function Nt() {
return m(v.breakStatement())
}
function Ct() {
var e = k.value,
t = Ht()
return n.scope && (t.isLabel = dt('::' + e + '::')), m(v.gotoStatement(t))
}
function kt() {
var e = St()
return K('end'), m(v.doStatement(e))
}
function Lt() {
var e = qt()
K('do')
var t = St()
return K('end'), m(v.whileStatement(e, t))
}
function At() {
var e = St()
K('until')
var t = qt()
return m(v.repeatStatement(t, e))
}
function Ot() {
var e = []
if ('end' !== k.value) {
var t = It()
null != t && e.push(t)
while (J(',')) (t = qt()), e.push(t)
J(';')
}
return m(v.returnStatement(e))
}
function Mt() {
var e = [],
t,
n,
r
mt && ((r = vt[vt.length - 1]), vt.push(r)),
(t = qt()),
K('then'),
(n = St()),
e.push(m(v.ifClause(t, n))),
mt && (r = gt())
while (J('elseif'))
wt(r),
(t = qt()),
K('then'),
(n = St()),
e.push(m(v.elseifClause(t, n))),
mt && (r = gt())
return (
J('else') &&
(mt && ((r = new yt(L)), vt.push(r)), (n = St()), e.push(m(v.elseClause(n)))),
K('end'),
m(v.ifStatement(e))
)
}
function _t() {
var e = Ht(),
t
n.scope && ht(e)
if (J('=')) {
var r = qt()
K(',')
var i = qt(),
s = J(',') ? qt() : null
return K('do'), (t = St()), K('end'), m(v.forNumericStatement(e, r, i, s, t))
}
var o = [e]
while (J(',')) (e = Ht()), n.scope && ht(e), o.push(e)
K('in')
var u = []
do {
var a = qt()
u.push(a)
} while (J(','))
return K('do'), (t = St()), K('end'), m(v.forGenericStatement(o, u, t))
}
function Dt() {
var e
if (a === k.type) {
var t = [],
r = []
do (e = Ht()), t.push(e)
while (J(','))
if (J('='))
do {
var i = qt()
r.push(i)
} while (J(','))
if (n.scope) for (var s = 0, o = t.length; s < o; s++) ht(t[s])
return m(v.localStatement(t, r))
}
if (J('function')) return (e = Ht()), n.scope && ht(e), Bt(e, !0)
T('<name>', k)
}
function Pt() {
var e = k,
t,
n
mt && (n = gt()), (t = zt())
if (null == t) return N(k)
if (',='.indexOf(k.value) >= 0) {
var r = [t],
i = [],
s
while (J(',')) (s = zt()), null == s && T('<expression>', k), r.push(s)
K('=')
do (s = qt()), i.push(s)
while (J(','))
return wt(n), m(v.assignmentStatement(r, i))
}
return it(t) ? (wt(n), m(v.callStatement(t))) : N(e)
}
function Ht() {
bt()
var e = k.value
return a !== k.type && T('<name>', k), $(), m(v.identifier(e))
}
function Bt(e, t) {
var r = []
K('(')
if (!J(')'))
for (;;)
if (a === k.type) {
var i = Ht()
n.scope && ht(i), r.push(i)
if (J(',')) continue
if (J(')')) break
} else {
if (p === k.type) {
r.push(Xt()), K(')')
break
}
T("<name> or '...'", k)
}
var s = St()
return K('end'), (t = t || !1), m(v.functionStatement(e, r, t, s))
}
function jt() {
var e, t, r
mt && (r = gt()), (e = Ht()), n.scope && pt(e, !1)
while (J('.'))
wt(r), (t = Ht()), n.scope && pt(t, !1), (e = m(v.memberExpression(e, '.', t)))
return (
J(':') &&
(wt(r), (t = Ht()), n.scope && pt(t, !1), (e = m(v.memberExpression(e, ':', t)))),
e
)
}
function Ft() {
var e = [],
t,
n
for (;;) {
bt()
if (l === k.type && J('['))
(t = qt()), K(']'), K('='), (n = qt()), e.push(m(v.tableKey(t, n)))
else if (a === k.type)
(t = qt()),
J('=') ? ((n = qt()), e.push(m(v.tableKeyString(t, n)))) : e.push(m(v.tableValue(t)))
else {
if (null == (n = It())) {
vt.pop()
break
}
e.push(m(v.tableValue(n)))
}
if (',;'.indexOf(k.value) >= 0) {
$()
continue
}
if ('}' === k.value) break
}
return K('}'), m(v.tableConstructorExpression(e))
}
function It() {
var e = Ut(0)
return e
}
function qt() {
var e = It()
if (null != e) return e
T('<expression>', k)
}
function Rt(e) {
var t = e.charCodeAt(0),
n = e.length
if (1 === n)
switch (t) {
case 94:
return 10
case 42:
case 47:
case 37:
return 7
case 43:
case 45:
return 6
case 60:
case 62:
return 3
case 38:
case 124:
return 7
}
else if (2 === n)
switch (t) {
case 46:
return 5
case 60:
case 62:
case 61:
case 126:
return 3
case 111:
return 1
}
else if (97 === t && 'and' === e) return 2
return 0
}
function Ut(e) {
var t = k.value,
n,
r
mt && (r = gt())
if (rt(k)) {
bt(), $()
var i = Ut(8)
i == null && T('<expression>', k), (n = m(v.unaryExpression(t, i)))
}
null == n && ((n = Xt()), null == n && (n = zt()))
if (null == n) return null
var s
for (;;) {
;(t = k.value), (s = l === k.type || u === k.type ? Rt(t) : 0)
if (s === 0 || s <= e) break
;('^' === t || '..' === t) && s--, $()
var o = Ut(s)
null == o && T('<expression>', k), mt && vt.push(r), (n = m(v.binaryExpression(t, n, o)))
}
return n
}
function zt() {
var e, t, r, i
mt && (r = gt())
if (a === k.type) (t = k.value), (e = Ht()), n.scope && pt(e, (i = dt(t)))
else {
if (!J('(')) return null
;(e = qt()), K(')'), n.scope && (i = e.isLocal)
}
var s, u
for (;;)
if (l === k.type)
switch (k.value) {
case '[':
wt(r), $(), (s = qt()), (e = m(v.indexExpression(e, s))), K(']')
break
case '.':
wt(r), $(), (u = Ht()), n.scope && pt(u, i), (e = m(v.memberExpression(e, '.', u)))
break
case ':':
wt(r),
$(),
(u = Ht()),
n.scope && pt(u, i),
(e = m(v.memberExpression(e, ':', u))),
wt(r),
(e = Wt(e))
break
case '(':
case '{':
wt(r), (e = Wt(e))
break
default:
return e
}
else {
if (o !== k.type) break
wt(r), (e = Wt(e))
}
return e
}
function Wt(e) {
if (l === k.type)
switch (k.value) {
case '(':
$()
var t = [],
n = It()
null != n && t.push(n)
while (J(',')) (n = qt()), t.push(n)
return K(')'), m(v.callExpression(e, t))
case '{':
bt(), $()
var r = Ft()
return m(v.tableCallExpression(e, r))
}
else if (o === k.type) return m(v.stringCallExpression(e, Xt()))
T('function arguments', k)
}
function Xt() {
var e = o | f | c | h | p,
n = k.value,
r = k.type,
i
mt && (i = gt())
if (r & e) {
wt(i)
var s = t.slice(k.range[0], k.range[1])
return $(), m(v.literal(r, n, s))
}
if (u === r && 'function' === n) return wt(i), $(), Bt(null)
if (J('{')) return wt(i), Ft()
}
function Vt(s, o) {
return (
'undefined' == typeof o && 'object' == typeof s && ((o = s), (s = undefined)),
o || (o = {}),
(t = s || ''),
(n = S(i, o)),
(C = 0),
(_ = 1),
(D = 0),
(r = t.length),
(ot = [[]]),
(ut = 0),
(at = []),
(vt = []),
n.comments && (O = []),
n.wait ? e : Jt()
)
}
function $t(n) {
return (t += String(n)), (r = t.length), e
}
function Jt(e) {
'undefined' != typeof e && $t(e), (r = t.length), (mt = n.locations || n.ranges), (A = P())
var i = Et()
n.comments && (i.comments = O), n.scope && (i.globals = at)
if (vt.length > 0)
throw new Error('Location tracking failed. This is most likely a bug in luaparse')
return i
}
e.version = '0.1.4'
var t,
n,
r,
i = (e.defaultOptions = { wait: !1, comments: !0, scope: !1, locations: !1, ranges: !1 }),
s = 1,
o = 2,
u = 4,
a = 8,
f = 16,
l = 32,
c = 64,
h = 128,
p = 256
e.tokenTypes = {
EOF: s,
StringLiteral: o,
Keyword: u,
Identifier: a,
NumericLiteral: f,
Punctuator: l,
BooleanLiteral: c,
NilLiteral: h,
VarargLiteral: p,
}
var d = (e.errors = {
unexpected: "Unexpected %1 '%2' near '%3'",
expected: "'%1' expected near '%2'",
expectedToken: "%1 expected near '%2'",
unfinishedString: "unfinished string near '%1'",
malformedNumber: "malformed number near '%1'",
}),
v = (e.ast = {
labelStatement: function (e) {
return { type: 'LabelStatement', label: e }
},
breakStatement: function () {
return { type: 'BreakStatement' }
},
gotoStatement: function (e) {
return { type: 'GotoStatement', label: e }
},
returnStatement: function (e) {
return { type: 'ReturnStatement', arguments: e }
},
ifStatement: function (e) {
return { type: 'IfStatement', clauses: e }
},
ifClause: function (e, t) {
return { type: 'IfClause', condition: e, body: t }
},
elseifClause: function (e, t) {
return { type: 'ElseifClause', condition: e, body: t }
},
elseClause: function (e) {
return { type: 'ElseClause', body: e }
},
whileStatement: function (e, t) {
return { type: 'WhileStatement', condition: e, body: t }
},
doStatement: function (e) {
return { type: 'DoStatement', body: e }
},
repeatStatement: function (e, t) {
return { type: 'RepeatStatement', condition: e, body: t }
},
localStatement: function (e, t) {
return { type: 'LocalStatement', variables: e, init: t }
},
assignmentStatement: function (e, t) {
return { type: 'AssignmentStatement', variables: e, init: t }
},
callStatement: function (e) {
return { type: 'CallStatement', expression: e }
},
functionStatement: function (e, t, n, r) {
return {
type: 'FunctionDeclaration',
identifier: e,
isLocal: n,
parameters: t,
body: r,
}
},
forNumericStatement: function (e, t, n, r, i) {
return { type: 'ForNumericStatement', variable: e, start: t, end: n, step: r, body: i }
},
forGenericStatement: function (e, t, n) {
return { type: 'ForGenericStatement', variables: e, iterators: t, body: n }
},
chunk: function (e) {
return { type: 'Chunk', body: e }
},
identifier: function (e) {
return { type: 'Identifier', name: e }
},
literal: function (e, t, n) {
return (
(e =
e === o
? 'StringLiteral'
: e === f
? 'NumericLiteral'
: e === c
? 'BooleanLiteral'
: e === h
? 'NilLiteral'
: 'VarargLiteral'),
{ type: e, value: t, raw: n }
)
},
tableKey: function (e, t) {
return { type: 'TableKey', key: e, value: t }
},
tableKeyString: function (e, t) {
return { type: 'TableKeyString', key: e, value: t }
},
tableValue: function (e) {
return { type: 'TableValue', value: e }
},
tableConstructorExpression: function (e) {
return { type: 'TableConstructorExpression', fields: e }
},
binaryExpression: function (e, t, n) {
var r = 'and' === e || 'or' === e ? 'LogicalExpression' : 'BinaryExpression'
return { type: r, operator: e, left: t, right: n }
},
unaryExpression: function (e, t) {
return { type: 'UnaryExpression', operator: e, argument: t }
},
memberExpression: function (e, t, n) {
return { type: 'MemberExpression', indexer: t, identifier: n, base: e }
},
indexExpression: function (e, t) {
return { type: 'IndexExpression', base: e, index: t }
},
callExpression: function (e, t) {
return { type: 'CallExpression', base: e, arguments: t }
},
tableCallExpression: function (e, t) {
return { type: 'TableCallExpression', base: e, arguments: t }
},
stringCallExpression: function (e, t) {
return { type: 'StringCallExpression', base: e, argument: t }
},
comment: function (e, t) {
return { type: 'Comment', value: e, raw: t }
},
}),
g = Array.prototype.slice,
y = Object.prototype.toString,
b = function (t, n) {
for (var r = 0, i = t.length; r < i; r++) if (t[r] === n) return r
return -1
},
C,
k,
L,
A,
O,
M,
_,
D
e.lex = P
var ot,
ut,
at,
vt = [],
mt
;(yt.prototype.complete = function () {
n.locations &&
((this.loc.end.line = L.line), (this.loc.end.column = L.range[1] - L.lineStart)),
n.ranges && (this.range[1] = L.range[1])
}),
(e.parse = Vt),
(e.write = $t),
(e.end = Jt)
})
}),
ace.define('ace/mode/lua_worker', [], function (e, t, n) {
'use strict'
var r = e('../lib/oop'),
i = e('../worker/mirror').Mirror,
s = e('../mode/lua/luaparse'),
o = (t.Worker = function (e) {
i.call(this, e), this.setTimeout(500)
})
r.inherits(o, i),
function () {
this.onUpdate = function () {
var e = this.doc.getValue(),
t = []
try {
s.parse(e)
} catch (n) {
n instanceof SyntaxError &&
t.push({ row: n.line - 1, column: n.column, text: n.message, type: 'error' })
}
this.sender.emit('annotate', t)
}
}.call(o.prototype)
})